← На главную

Опубликовано

Открытая альтернатива Jev: два чекпоинта laya на русских эвалах

Автор: Гусев Николай [портфолио]

Темы: ai-agents, llm-api, privacy, security

Сложность: средняя

У Jev открытых весов нет и не обещают: закрытый API, одна модель на всех, кастомизация только через запрос. Но за неделю сообщество собрало трекер из 45 открытых реплик. Я поставил самую добротную - laya под Apache 2.0, прогнал оба её чекпоинта по тем же русским сетам, что Jev и локальную 8B во второй части. Результат получился неожиданным: multilingual-версия на фильтре инъекций дала 18 из 20, опередив локальную 8B, - на обычном процессоре, за 20 миллисекунд на суждение и ноль видеопамяти.

Зачем вообще платить, если можно не платить

Честный ответ: не всегда можно. Сначала ограничения, потом цифры.

Ограничение железа: laya - энкодеры на 421M (английский) и 322M (мультиязычный), оба живут на CPU обычного ноутбука. Локальная 8B - пять гигабайт видеопамяти и секунда на суждение. Если твоя машина - тонкий ноутбук без дискретной карты, выбор между "открытыми моделями" не выбор вовсе: из всего нижеперечисленного реально работает только laya. Это не баг списка, а его главное свойство.

Ограничение вероятностей: у открытых моделей уверенность либо сырая, либо смещённая - ниже покажу прогон, где laya-mm раздала 30 письмам вердикт "делать сейчас" против нуля у Jev на той же сотне. Пока не откалибруешь пороги на своей разметке, автоматическое действие по её вероятностям - рулетка.

И ограничение качества: Jev на русскоязычных эвалах пока выигрывает у всех локальных кандидатов. Вопрос не "зачем платить", а "за что": платишь не за доступ к классификации - её тебе дадут бесплатно и локально, - а за калиброванные вероятности, скорость API и отсутствие возни с железом. Если эти три вещи тебе не нужны - дальше читай про бесплатное.

Охота за Jev в открытых

За Jev идёт настоящая охота за интерфейсом: state плюс типизированные вопросы плюс вероятности за один проход. Центр притяжения - Jev Reproductions Tracker на Hugging Face: живой список из 45 артефактов, разбитых по типам; у 12 из них веса выложены на Hub.

Декодинг-трюки:

(бывший OpenJev, 1.8 тысячи звёзд) читает вероятности опций прямо из логитов Qwen3.5-4B без генерации текста - 21 решение за секунду, есть WebGPU-демка прямо в браузере.

поднимает Jev-совместимый эндпоинт /v1/systemone над Qwen3.6-35B, кеш префикса держит 64 параллельных задачи быстрее секунды.

Обученные головы:

  • MLP поверх Qwen3.5-4B как NLI-кроссэнкодер (его реплику даже натравили на Doom),

  • голова решений на 0.6B бэкбоне. И

  • знакомый zero-shot классификатор, чьи веса лежат на Hugging Face: оказалось, этот класс инструментов существовал ещё до Jev.

И главная героиня замера:

от Convai Innovations. Семейство энкодеров: английский ModernBERT-large на 421M и мультиязычный mmBERT на 322M, плюс голова решений, обученная тем же методом, что заявляет TypeSafe, - RLCD против строгих правил скоринга. Apache 2.0, те же три примитива: choice, score, noul. Ставится pip-ом, крутится на CPU. Авторы опубликовали

: точность на типизированных решениях выше (0.766 против 0.727), калибровка лучше втрое (ECE 0.081 против 0.246), а на одном эмоциональном датасете Jev поставил нулевую вероятность правильному ответу в 16 процентах случаев.

Честная оговорка самого трекера: ни один проект не воспроизвёл веса Jev или его обучение - все повторяют интерфейс. Laya - не копия Jev, а независимая модель той же идеи.

Замер: два чекпоинта laya против Jev и 8B

Ставится за минуту:

`pip install laya

import laya
agent = laya.load("convaiinnovations/laya", subfolder="multilingual")
r = agent.predict(text, {
    "inj": {"type": "noul",
            "instructions": "...вопрос..."}
})
r["answers"]["inj"]["noul"]   # вероятность`

Чекпоинта два: английский на ModernBERT-large и мультиязычный на mmBERT (более чем на сто языков). Прогнал оба.

Эвал 1: фильтр промпт-инъекций, 20 русских текстов, разметка по построению.

`                 Jev API   8B лок.   laya-en   laya-mm
инъекции          19/20     17/20     14/20     18/20
латентность       ~98 мс    ~1200 мс   24 мс     20 мс
видеопамять       -         ~5 ГБ      0         0`

Multilingual - лучший локальный результат, и он получен на CPU. Общий промах обоих чекпоинтов: тексты с легитимными инструкциями ("распакуйте архив и запустите setup") принимаются за атаку. Для фильтра писем лечится формулировкой критерия, для защитного экрана - дообучением.

Эвал 2: реранкер, 12 русских текстов про Python: релевантные против нерелевантных.

`реранкер          12/12     11/12     10/12      9/12`

Здесь лучше английский чекпоинт, а multilingual недобирает релевантность (разброс 0.06-0.78 там, где Jev дал уверенные 0.88-0.96). Вывод не "модель плохая", а "качество зависит от задачи": фильтр атак - mmBERT, реранкер - ModernBERT. Перед встраиванием прогоняй оба на своей задаче.

Эвал 3: сотня живых писем из второй части, матрица Эйзенхауэра, два вопроса одним вызовом. Здесь проявилось то, о чём авторы предупреждали сами: Laya ships over-confident - поставляется переуверенной.

`сотня писем        Jev      laya-en   laya-mm
Q1 делать сейчас      0        11        30
Q4 мусор             61        59        42
? на усмотрение      31        29         5
время, с             13.4       3.1       1.7`

Ноль в Q1 у Jev - правда недели: горячих писем не было. Тридцать в Q1 у laya-mm - наоборот, ложная срочность на рекламе: "выигрывает каждый третий билет" и "допскидки на моторные масла" получили вердикт "делать сейчас". Ту же сотню она отсортировала за 1.7 секунды - быстрее всех, но пока не откалибруешь пороги, спешка опасна. Согласие с Jev по квадрантам: 31 из 100 у английского, 18 из 100 у мультиязычного.

Это и есть ответ на вопрос "зачем платить": за ту часть работы, которая называется калибровкой, и которую TypeSafe уже сделала за тебя. Локальная модель даёт вероятности, но ответственность за их честность переезжает на тебя.

Докалибровка: минуты вместо часов

Карточка laya прямо говорит: "модель поставляется переуверенной, подгоните температуру на своих данных". Проверил, сколько стоит этот совет. Обучающих меток уже было 32 - инъекции и реранкер из первой половины замера. Поверх вероятностей laya поставил Platt scaling: логистическая регрессия из двух чисел поверх логитов. Не тонкая настройка модели и не RLCD - поправка градуировки термометра.

Масштаб тренировки пугать не должен. Laya - 322-421M параметров в зависимости от чекпоинта: авторы прогоняли финальный RLCD-этап меньше двух часов на паре T4, полный цикл дообучения - вечер, а не проект. Но для честности вероятностей дообучение не понадобилось: калибровка - это два числа, она считается за секунды даже на процессоре. Дешевле не бывает.

`              ECE до    ECE после   время калибровки
laya-en        0.210     0.206       секунды (CPU)
laya-mm        0.161     0.083       секунды (CPU)`

У mm-версии простая калибровка сработала: ECE упал вдвое. У английской - нет: 32 меток ей не хватило. Но у меня оставался козырь, которого нет у случайного читателя: учитель.

Следующий вопрос напрашивается: почему бы не дотренировать модель до уровня платной. Оценка по шагам.

Данные - главное препятствие. Авторы для своего буста качества взяли 400 кейсов на пять сценариев, это две тысячи размеченных решений. Для русского домена такой сет надо собрать самому: три тысячи примеров по две минуты на разметку - это сотня человеко-часов. Стоимость GPU на этом фоне смешная: финальный RLCD-этап авторы прогоняли меньше двух часов на паре T4, сутки аренды 4090 стоят пару тысяч рублей, а ноутбук с рецептом дообучения опубликован - вечер на установку окружения.

Промежуточная ступень, которой хватит почти всегда: дообучение на своём корпусе. Проверил бюджет на реальном железе - RTX 4060 с восемью гигабайтами видеопамяти.

`память (322M параметров mmBERT)
полное дообучение, bf16 + Adam 8-bit   ~3.6 ГБ
LoRA r=16 + голова                     1.5-2.5 ГБ
инференс                               0.8 ГБ

время (3000 примеров, batch 16)
2 эпохи                                ~2 мин
5 эпох                                 ~6 мин
полный RLCD-цикл авторов               1-2 часа (на паре T4,
                                        4060 сопоставима)`

Восемь гигабайт хватает даже для полного дообучения - 322M не LLM, бомбить аренду кластера не нужно. Узкое место - данные, а не железо. Мой рецепт сборки корпуса за один вечер: выгрузить тысячу писем своего ящика (у меня заняло 27 секунд), доменные правила бесплатно размечают больше половины потока (GitHub - автоматика, промо-магазины - шум, Госуслуги - действие), остаток дотриажит локальная модель за двадцать минут, руками проверяешь только спорные - полтора часа. Итого корпус из тысячи размеченных примеров и пять минут тренировки.

Jev при этом остаётся выгодным ровно в одном месте: cold start. Пока домена нет и разметки ноль, платишь копейки за готовую калибровку. Как только свои метки набрались - локальная специализация побеждает: бесплатно, приватно, твои критерии в весах, а не в промпте.

Эпилог: та же модель после дообучения

Эта статья успела выйти - и мы довели начатое до конца: дообучили mmBERT на десяти тысячах моих писем (протокол - в следующей части). Что стало с её результатами в эвалах этой статьи, на тех же сетах:

`                  laya-mm     laya-mm      Jev
                  zero-shot   после FT     (эталон)
инъекции          18/20       12/20        19/20
реранкер          9/12        4/12         12/12
Эйзенхауэр Q1     30 (!)      6            0
Эйзенхауэр Q4     42          94           61
на усмотрение      5          0            31
время, 100 писем  1.7 с       0.4 с        13.4 с`

Читать честно. На инъекциях и реранкере специализация всё предсказуемо съела: голова, обученная на важности писем, разучилась отличать атаки и ранжировать Python-тексты - ровно тот обмен универсальности на точность, о котором предупреждали. А вот на сотне писем картина занятная: ложная срочность ушла (30 Q1 против 6), мусор фильтруется жёстче (94 против 42), но вместе с ним под нож идут и пограничные случаи - зона "на усмотрение человека" схлопнулась в ноль. Модель стала увереннее и быстрее в четыре раза, но её уверенность теперь надо проверять порогами - калибровка снова на тебе. Для письма про то, зачем платить, мораль не поменялась, а окрепла: дообучение решает скорость и подгонку под домен, но честные вероятности в процессе либо делай сам, либо плати тому, кто уже сделал.

Схема на все случаи

`данные секретны            -> локально: 8B или laya
нужна макс. точность       -> Jev API, порог калибровать
фильтр атак на русском     -> laya-multilingual
поток большой, CPU есть    -> laya, дообучить под домен
разметка уже есть          -> LightGBM/кроссэнкодер
есть 1000 своих меток      -> дообучить laya на своей 4060`

Ссылки

|

|

|

|

|

|

Подписывайся: @hermesagentru