ЭКСПЕРИМЕНТ · ЛИНЕЙКА N-Q

N-Q-26M-JEV: модель, которая не пишет текст, а принимает решения

Мы взяли N-Q-26M-Chat и превратили её в модель решений в духе Jev: на входе текст, вопрос и варианты ответа, на выходе — выбор с откалиброванными вероятностями за один проход. Хорошо работает на задачах, которым её учили. На новых типах вопросов — около случайного уровня.

98–99%«ответ к вопросу»
81–89%темы
0.005–0.055ошибка калибровки
3.3 чобучения на V100
Работает прямо в браузере: демо JEV. Веса — Hugging Face. Базовая модель — N-Q-26M.

Что такое Jev

Jev — «модель решений» от TypeSafe AI (сентябрь 2026). Она не генерирует текст: получает состояние (любой текст) и вопрос, а возвращает типизированный ответ с вероятностями. Три примитива: Choice — выбор из списка вариантов, Score — уровень на шкале, Noul — вероятность «да». Нужна для массовых решений в пайплайнах: классификация, маршрутизация, проверка ответа — там, где генерация текста лишняя и дорогая. Веса Jev закрыты, поэтому мы сделали свою версию с нуля.

Как устроено

Варианты ответа ставятся прямо в последовательность и разделяются маркером:

<bos><USER>текст<EOT><ASK>вопрос<OPT>вариант 1<OPT>вариант 2<OPT>…<OPT>
  • Линейная голова читает скрытое состояние на маркере, закрывающем каждый вариант, и выдаёт оценку; softmax по вариантам даёт распределение.
  • Score и Noul — частные случаи: варианты — уровни шкалы и «нет / да».
  • Модель каузальная, поэтому второй вариант «видит» первый, а не наоборот. В симметричном режиме варианты прогоняются и в обратном порядке, вероятности усредняются — перекос по позиции уходит.
  • Лосс — log-loss по вариантам. Это строгое правило оценки, оно и делает вероятности откалиброванными.
  • Голова языковой модели сохранена — чекпоинт по-прежнему умеет писать текст.

Обучение

ВерсияДанныеВремя на V100
v1161 тыс. примеров, 6 типов задач: тема запроса, качество и сложность (saiga_scored), какой ответ лучше (пары предпочтений), какой ответ относится к вопросу и «отвечает ли ответ» (диалоги SFT)1.4 ч
v2+ логический вывод (XNLI, русский и английский), тональность, токсичность, тематика новостей: 242 тыс. примеров, 10 типов задач, продолжение v11.9 ч

Вариантам каждый раз меняли порядок, а вопросы задавали несколькими формулировками на двух языках — чтобы модель читала вопрос, а не запоминала шаблон.

Результаты

Задачаv1v2Случайно
отвечает ли ответ на вопрос (да/нет)98.2%98.2%50%
какой из 4 ответов относится к вопросу98.9%99.0%25%
тематика новостей (4 темы)66.7%88.8%25%
тема запроса (из 6)79.8%81.1%17%
токсичность (русский)35.5%80.0%50%
тональность (русский + английский)44.0%78.1%~40%
сложность запроса (3 уровня)69.2%69.4%63% (всегда «средне»)
какой из двух ответов лучше66.3%68.7%50%
логический вывод (3 класса)38.0%64.5%33%
качество ответа (3 уровня)54.3%56.6%33%

Новые задачи в v2 выросли сильно, старые не просели. Ошибка калибровки на всех обученных задачах — от 0.005 до 0.055: если модель уверена на 90%, она права примерно в 90% случаев.

Задачи, которых модель не видела

Задачаv2Случайно
эмоции, 6 классов (английский)29.9%17% (частый класс — 35%)
ruOpenBookQA, 4 варианта26.3%25%
PARus, причина или следствие49.0%50%

Главный честный вывод: на 26M параметрах модель быстро учится любой задаче, которую видит, и даёт честные вероятности, но универсальным «решателем» не становится. Новые типы вопросов, особенно требующие знаний и рассуждения, она решает около случайного уровня.

Как это выглядит

  • «Как сварить борщ?» + ответ про свёклу и бульон → «ответ по делу» с вероятностью 0.99; тот же вопрос + ответ про Python → 0.01.
  • «Напиши функцию для чисел Фибоначчи» → тема coding (0.67), сложность средне. В одиночном проходе модель выбирает math — симметричный режим исправляет перекос по порядку.
  • Жалоба на разбитый экран и молчащую поддержку → токсичность нет (0.99), тема finance (0.83), тональность — «отрицательная» всего на 51%. Русская разметка тональности шумная, и модель это унаследовала.

В браузере

Демо работает на том же JavaScript-рантайме, что и чат: веса в формате QPACK2 (47 МБ, int8), вычисления в WebAssembly с SIMD внутри Web Worker. Общий префикс — текст и вопрос — считается один раз и переиспользуется для обоих порядков вариантов и для всех вопросов: у рекуррентной модели можно сохранить состояние и откатиться к нему. Вероятности в браузере совпадают с PyTorch с точностью до 5·10⁻⁵; одно решение занимает 4–8 секунд.

Что дальше

Встраиваем JEV в чат: модель решений будет проверять ответы чата и выбирать лучший из нескольких. Это делается в экспериментальном чате, где видно, когда работает JEV, и его можно отключить. А универсальную модель решений будем пробовать на N-Q-164M — на таком размере перенос на новые задачи гораздо вероятнее.

EXPERIMENT · THE N-Q LADDER

N-Q-26M-JEV: a model that makes decisions instead of writing text

We took N-Q-26M-Chat and turned it into a Jev-style decision model: text, a question and options go in; a choice with calibrated probabilities comes out, in one forward pass. It is good at the tasks it was trained on. On new kinds of questions it is near chance.

98–99%reply ↔ question
81–89%topics
0.005–0.055calibration error
3.3 hof V100 training
It runs right in the browser: JEV demo. Weights: Hugging Face. The base model is N-Q-26M.

What Jev is

Jev is a "decision model" from TypeSafe AI (September 2026). It does not generate text: it takes a state (any text) and a question and returns a typed answer with probabilities. Three primitives: Choice — a pick from a list of options, Score — a level on a scale, Noul — the probability of "yes". It is meant for high-volume decisions in pipelines — classification, routing, answer checking — where generating text is unnecessary and expensive. Jev's weights are closed, so we built our own version from scratch.

How it works

The options go straight into the sequence, separated by a marker:

<bos><USER>text<EOT><ASK>question<OPT>option 1<OPT>option 2<OPT>…<OPT>
  • A linear head reads the hidden state at the marker closing each option and outputs a score; a softmax over the options gives the distribution.
  • Score and Noul are special cases: the options are the scale levels and "no / yes".
  • The model is causal, so the second option "sees" the first but not the other way round. In symmetric mode the options also run in reverse order and the probabilities are averaged, which removes the position bias.
  • The loss is log-loss over the options — a proper scoring rule, which is what makes the probabilities calibrated.
  • The language-model head is kept, so the checkpoint can still write text.

Training

VersionDataV100 time
v1161k examples, 6 task types: request topic, quality and difficulty (saiga_scored), which answer is better (preference pairs), which reply fits the question and "does the reply answer it" (SFT dialogues)1.4 h
v2+ entailment (XNLI, Russian and English), sentiment, toxicity, news topics: 242k examples, 10 task types, continued from v11.9 h

The option order was shuffled every time, and each question came in several phrasings in two languages, so the model has to read the question rather than memorize a template.

Results

Taskv1v2Chance
does the reply answer the question (yes/no)98.2%98.2%50%
which of 4 replies fits the question98.9%99.0%25%
news topic (4 topics)66.7%88.8%25%
request topic (6 offered)79.8%81.1%17%
toxicity (Russian)35.5%80.0%50%
sentiment (Russian + English)44.0%78.1%~40%
request difficulty (3 levels)69.2%69.4%63% (always "medium")
which of two answers is better66.3%68.7%50%
entailment (3 classes)38.0%64.5%33%
answer quality (3 levels)54.3%56.6%33%

The new tasks rose sharply in v2 and the old ones held. Calibration error on every trained task is between 0.005 and 0.055: when the model is 90% sure, it is right about 90% of the time.

Tasks the model never saw

Taskv2Chance
emotion, 6 classes (English)29.9%17% (majority class 35%)
ruOpenBookQA, 4 options26.3%25%
PARus, cause or effect49.0%50%

The main honest takeaway: at 26M parameters the model quickly learns any task it sees and gives honest probabilities, but it does not become a general decision model. New kinds of questions, especially ones that need knowledge or reasoning, it answers near chance.

What it looks like

  • "How do I cook borscht?" + an answer about beetroot and broth → "the reply answers it" with probability 0.99; the same question + an answer about Python → 0.01.
  • "Write a function for Fibonacci numbers" → topic coding (0.67), difficulty medium. A single pass picks math — the symmetric mode fixes the order bias.
  • A complaint about a broken screen and silent support → toxicity no (0.99), topic finance (0.83), sentiment "negative" at only 51%. The Russian sentiment labels are noisy, and the model inherited that.

In the browser

The demo runs on the same JavaScript runtime as the chat: QPACK2 weights (47 MB, int8), computation in WebAssembly with SIMD inside a Web Worker. The shared prefix — the text and the question — is computed once and reused for both option orders and for every question: a recurrent model can save its state and roll back to it. Probabilities in the browser match PyTorch within 5·10⁻⁵; one decision takes 4–8 seconds.

What's next

We are building JEV into the chat: the decision model will check the chat's answers and pick the best of several. That happens in an experimental chat that shows when JEV is at work and lets you turn it off. A general decision model we will try on N-Q-164M — at that size transfer to new tasks is far more likely.

实验 · N-Q 系列

N-Q-26M-JEV:一个不写文本、而是做决策的模型

我们把 N-Q-26M-Chat 改造成了类似 Jev 的决策模型:输入文本、问题和选项,一次前向计算输出带校准概率的选择。它擅长训练过的任务;面对新类型的问题,表现接近随机。

98–99%问答匹配
81–89%主题
0.005–0.055校准误差
3.3 小时V100 训练
直接在浏览器中运行:JEV 演示。权重:Hugging Face。基础模型是 N-Q-26M。

Jev 是什么

Jev 是 TypeSafe AI 的"决策模型"(2026 年 9 月)。它不生成文本:输入一个状态(任意文本)和一个问题,返回带概率的类型化答案。三个原语:Choice —— 从选项列表中选择,Score —— 量表上的等级,Noul —— "是"的概率。它用于流水线中的大规模决策:分类、路由、答案检查 —— 这些场景里生成文本既多余又昂贵。Jev 的权重不公开,所以我们从零做了自己的版本。

工作原理

选项直接放进序列,用标记分隔:

<bos><USER>文本<EOT><ASK>问题<OPT>选项 1<OPT>选项 2<OPT>…<OPT>
  • 线性头读取每个选项结尾标记处的隐藏状态并输出分数;对选项做 softmax 得到分布。
  • Score 和 Noul 是特例:选项分别是量表等级和"否 / 是"。
  • 模型是因果的,所以第二个选项能"看到"第一个,反之则不行。对称模式下选项还会以相反顺序再算一遍,再对概率取平均,从而消除位置偏差。
  • 损失是选项上的 log-loss —— 一种严格评分规则,正是它让概率得到校准。
  • 语言模型头保留着,检查点仍然可以写文本。

训练

版本数据V100 用时
v116.1 万个样本,6 类任务:请求主题、质量与难度(saiga_scored)、哪个回答更好(偏好对)、哪个回答对应问题以及"回答是否切题"(SFT 对话)1.4 小时
v2+ 自然语言推理(XNLI,俄语和英语)、情感、毒性、新闻主题:24.2 万个样本,10 类任务,在 v1 基础上继续训练1.9 小时

每次都会打乱选项顺序,每个问题都有两种语言的多种表述 —— 让模型去读问题,而不是记住模板。

结果

任务v1v2随机
回答是否切题(是/否)98.2%98.2%50%
4 个回答中哪个对应问题98.9%99.0%25%
新闻主题(4 类)66.7%88.8%25%
请求主题(6 选 1)79.8%81.1%17%
毒性(俄语)35.5%80.0%50%
情感(俄语 + 英语)44.0%78.1%~40%
请求难度(3 级)69.2%69.4%63%(总选"中等")
两个回答哪个更好66.3%68.7%50%
自然语言推理(3 类)38.0%64.5%33%
回答质量(3 级)54.3%56.6%33%

v2 中新任务大幅提升,旧任务保持不变。所有训练过的任务上校准误差在 0.005 到 0.055 之间:模型有 90% 把握时,大约 90% 的情况是对的。

模型没见过的任务

任务v2随机
情绪,6 类(英语)29.9%17%(多数类 35%)
ruOpenBookQA,4 个选项26.3%25%
PARus,原因还是结果49.0%50%

最主要的如实结论:在 26M 参数下,模型能很快学会它见过的任何任务,并给出真实可信的概率,但不会变成通用的决策模型。对于新类型的问题,尤其是需要知识或推理的问题,它的表现接近随机。

实际效果

  • "怎么做罗宋汤?" + 关于甜菜和高汤的回答 → "回答切题"的概率 0.99;同一个问题 + 关于 Python 的回答 → 0.01。
  • "写一个计算斐波那契数的函数" → 主题 coding(0.67),难度 中等。单次计算会选 math —— 对称模式纠正了顺序偏差。
  • 一条关于屏幕摔碎、客服不回复的投诉 → 毒性 否(0.99),主题 finance(0.83),情感"负面"只有 51%。俄语情感标注有噪声,模型也继承了这一点。

在浏览器中

演示使用和聊天相同的 JavaScript 运行时:QPACK2 格式权重(47 MB,int8),在 Web Worker 内用带 SIMD 的 WebAssembly 计算。共享前缀 —— 文本和问题 —— 只计算一次,并在两种选项顺序和所有问题之间复用:循环模型可以保存状态并回滚。浏览器中的概率与 PyTorch 的差异在 5·10⁻⁵ 以内;一次决策需要 4–8 秒。

接下来

我们正在把 JEV 集成到聊天中:决策模型将检查聊天的回答,并从多个回答中选出最好的。这会在一个实验性聊天中进行,你能看到 JEV 何时在工作,也可以关闭它。通用决策模型我们会在 N-Q-164M 上尝试 —— 在那个规模上,迁移到新任务的可能性要大得多。