Исследовательская модель · раунд 18
Модель решений, выращенная из зерна
Zerno обучается выдавать решения трёх типов — Choice, Noul и Score — и сообщает, насколько уверена в каждом. 34 млн параметров, собственный токенизатор и ни одного чужого веса — всё обучено с нуля на одной RTX 3060.
01 — Что делает
Выдаёт решения, а не сочиняет текст
Вы передаёте ситуацию в JSON и типизированные вопросы. Zerno обучается выдавать на них решения трёх типов: Choice — выбор из вариантов, Noul — да или нет по явно описанному критерию, Score — оценку по упорядоченной шкале. Каждое решение — вероятности исходов, а слишком длинный вход — типизированная ошибка, а не тихая обрезка.
-
Выборchoice
До 256 вариантов, один softmax по всем: модель выдаёт вероятность каждого, в сумме 1.
-
Да или нет по критериюnoul
Обе стороны критерия, true и false, описаны явно; модель выдаёт вероятность стороны true.
-
Оценка по шкалеscore
Упорядоченные уровни: модель выдаёт вероятность каждого уровня и ожидаемый уровень; порядок учитывается в метрике.
{
"schema_version": 1,
"state": { "сообщение": "Переведи маме 200 евро" },
"questions": [{
"id": "intent", "kind": "choice",
"prompt": "Чего хочет пользователь?",
"candidates": [
{ "id": "transfer", "text": "Перевод денег" },
{ "id": "exchange", "text": "Курс валют" },
{ "id": "balance", "text": "Узнать баланс" }
]
}]
}
Пример формата по контракту decision-request v1. Вероятности в примере условные.
{
"schema_version": 1,
"state": { "отзыв": "Доставили быстро, но коробка была помята" },
"questions": [{
"id": "complaint", "kind": "noul",
"prompt": "Есть ли в отзыве жалоба?",
"criteria": {
"true": "В отзыве есть жалоба",
"false": "Жалобы нет"
}
}]
}
Пример формата по контракту decision-request v1. Вероятности в примере условные.
{
"schema_version": 1,
"state": { "отзыв": "Хороший сервис, но ответа ждал два дня" },
"questions": [{
"id": "rating", "kind": "score",
"prompt": "Насколько клиент доволен?",
"levels": [
"очень недоволен", "недоволен", "нейтрально",
"доволен", "очень доволен"
]
}]
}
Пример формата по контракту decision-request v1. Вероятности в примере условные.
# сервер решений слушает только loopback
curl -s http://127.0.0.1:8766/v1/decisions \
-H 'Content-Type: application/json' \
-d @request.json
02 — Чем отличается
Не ещё одна языковая модель
Предобучение языковых моделей обычно строится на предсказании следующего токена, а затем их дообучают следовать инструкциям. Zerno решает другую задачу: обучается выдавать типизированные решения — Choice, Noul и Score — с вероятностью каждого исхода. Поэтому она маленькая, быстрая и проверяемая.
| Признак | Генеративная LLM | Zerno |
|---|---|---|
| Что выдаёт | Свободный текст | Типизированное решение — Choice, Noul или Score — с вероятностями исходов, Σ p = 1 |
| Ответ вне вариантов | Возможен: модель может сочинить | Исключён устройством: оцениваются только переданные варианты, стороны критерия или уровни шкалы |
| Уверенность | Обычно не выражена числом | Число у каждого варианта; температура калибруется на отдельных данных |
| Размер | Миллиарды параметров | 34 млн параметров |
| Где работает | Чаще всего облачный API или кластер GPU | Одна потребительская видеокарта; локальный запрос — 7.8–33.6 мс |
| Происхождение | Часто дообучение чужой базовой модели | Свои веса и токенизатор с нуля, версии данных закреплены |
Это сравнение по устройству, а не по качеству: сравнение качества с внешней моделью на настоящем бюджете обучения ещё впереди.
В основе
JEPA: предсказывать смысл, а не слова
Предобучение языковых моделей обычно строится на предсказании следующего токена. JEPA (Joint-Embedding Predictive Architecture) учит другому: по видимой части текста предсказать внутреннее представление скрытой части. Модели не нужно воспроизводить каждое слово — достаточно понять, о чём там речь.
Идею JEPA предложил Ян Лекун в программной работе «A Path Towards Autonomous Machine Intelligence» (2022) как основу системы с моделью мира: она предсказывает существенное, отбрасывает несущественное и на этой основе планирует. Zerno берёт из неё принцип обучения в пространстве представлений и применяет его к тексту: энкодер учится по JEPA, а голова — выдавать Choice, Noul и Score.
На одном seed предобучение уже даёт −0.020 Brier; проверка на парных seed — следующий раунд
Ян Лекун · A Path Towards Autonomous Machine Intelligence (2022), откроется в новой вкладкеОбучаемая часть
Цель
Ошибка считается между ŝ и s в пространстве представлений, без генерации слов. Градиент идёт только в обучаемую часть, а цель медленно следует за ней (τ 0.99 → 0.9995).
-
Сравнивать смыслы, а не слова
Ошибка считается между векторами представлений. Существенное для ситуации сохраняется, а точную формулировку воспроизводить не нужно.
-
Защита от схлопывания
Если энкодер выдаёт один и тот же вектор на любой текст, ошибка предсказания мала, а пользы нет. В Zerno цель — EMA-копия сети, против схлопывания работает регуляризатор, а ранг представлений с раунда 12 измеряется по полному спектру.
-
Loss — не доказательство
Эмбеддинг — не готовый список понятий. Полезен ли он, показывают только решения на отложенных данных, поэтому JEPA в Zerno оценивается по качеству решений после обучения головы, а не по падению loss.
03 — Как работает
Четыре шага от байта до решения
Энкодер учится понимать текст, предсказывая смысл скрытых фрагментов, а не сами слова. Потом небольшая голова учится выбирать.
-
01
Свой токенизатор
Byte-level BPE, обученный только на train-части данных. Никаких готовых словарей.
vocab 16 384
-
02
JEPA-предобучение
Энкодер предсказывает представления скрытых фрагментов. Цель — EMA-копия той же сети, без учителя со стороны.
маска 30 % · τ 0.99 → 0.9995
-
03
Решающая голова
Контекст и каждый вариант проходят через общий энкодер; голова сравнивает пары и выдаёт оценки.
8 блоков · 512 · 8 голов
-
04
Калибровка
Температура подбирается на отдельной части данных, чтобы 0,8 значило «верно примерно в 8 случаях из 10».
calibration split · NLL
Архитектура
dual_encoder_shared_prefix_v1[c, v, c·v, |c−v|] → 2048 → 256 → 1
04 — Результаты
Цифры, которые можно проверить
Brier score на MASSIVE: 60 намерений, русский и английский. Меньше — лучше. Каждое значение взято из опубликованного отчёта раунда.
Кандидат · нужна проверка на парных seed
JEPA начинает помогать
Задержка локального запроса
Цифры выше — для решений Choice. Noul и Score тоже входят в протокол оценки (BoolQ — Brier, SST-5 — RPS). На исходном английском протоколе, куда входит BoolQ, модель пока не обогнала константный ответ, а сильного результата для Score ещё нет.
Один seed (17), dev-сплит, на котором выбиралась модель. Независимого результата на test пока нет — он будет опубликован один раз, когда протокол позволит.
05 — Принципы
Правила, по которым растёт Zerno
-
Всё с нуля
Случайные веса в начале каждого обучения. Никаких pretrained-моделей, готовых эмбеддингов и внешнего учителя.
-
Только Rust
Данные, обучение, оценка и сервер — на Rust с Burn и CUDA. Ни Python, ни PyTorch в рантайме.
-
Честные метрики
Нет данных — значит null, а не красивое число. Найденная ошибка — публичное errata и новый протокол.
-
Локально
Сервер решений слушает только loopback. Данные не уходят наружу, модель помещается в одну видеокарту.
06 — Журнал исследования
18 раундов. У каждого — отчёт, у ошибок — errata.
-
Раунд 09
Задача обучаема
0.167 против 0.484 у константного ответа на 60 намерениях RU/EN.
-
Раунд 12
Метрика коллапса исправлена
Истинный ранг цели — 1.88, а не 44.7. Прежние выводы отозваны.
-
Раунд 14
Объём учит предиктор
Skill предиктора: −0.486 → +0.155 при росте до 8 M токенов.
-
Раунд 18 · сейчас
Голова снова учится
Найден и закрыт дефект загрузки. С ним исправленным JEPA даёт −0.020.
-
Далее
Парные seed, затем 100k
Подтверждение переноса. Ожидает одобрения.
Все раунды с 08 по 18
- 08
Аудит данных без обучения
Валидатор RUSSE отбрасывал 74 % верных фрагментов, 4 430 строк MASSIVE попали из train в dev, а три датасета раунда 07 модели ни разу не предъявлялись. Прежнее объяснение через «интерференцию» отозвано.
- 09
Задача обучаема
Нативный протокол MASSIVE RU/EN. Обучение с учителем даёт 0.167 против лексического baseline 0.186 и константного ответа 0.484.
- 10
Контролируемая проверка JEPA, 2 M токеновпересмотрено в 18
Сравнение с учителем признано недействительным: голова JEPA-запуска не обучалась.
- 11
Ошибка диагностики найдена
Вывод «JEPA сдвинул scorer» не подтвердился: все тензоры scorer побитово совпадали с инициализацией.
- 12
Настоящая метрика коллапса
Старая метрика читала диагональ ковариации. Истинный ранг цели — 1.88, а не 44.74; все прежние утверждения «коллапса нет» отозваны.
- 13
Регуляризатор на токен-остатке
Коллапс на уровне токенов предотвращён: ранг 467 против 2.51, защитное правило ни разу не сработало.
- 14
В 10 раз больше данных
Skill предиктора вырос с −0.486 до +0.155 к 8 M токенов, но заранее зафиксированное правило коллапса остановило предобучение.
- 15
Куда уходит токен-специфичная часть целипересмотрено в 18
Диагностика покрытия остаётся в силе; сравнения с учителем недействительны.
- 16
Регуляризатор на всём окне
Разрыв покрытия закрыт: 0.160 → 0.0.
- 17
Разброс по seed инициализации
0.2137 / 0.2062 / 0.2086, стандартное отклонение 0.0038. Исправлено влияние гейта на генератор случайных чисел.
- 18
Голова снова учится
С 10-го раунда голова всех JEPA-запусков была заморожена дефектом загрузки. После исправления JEPA 8 M даёт 0.1937 против 0.2137 — кандидат на положительный перенос. Добавлена проверка при старте.
07 — Инвесторам и фондам
Зерно проросло.
Ищем тех, кто поможет ему вырасти.
Zerno — исследовательский проект на ранней стадии. Мы открыты к разговору с инвесторами, фондами и индустриальными партнёрами, которым нужны компактные проверяемые модели решений.
Что уже есть
- Собственный стек на Rust: данные, токенизатор, обучение, оценка и сервер
- Модель, которая обгоняет простые ориентиры на 60 намерениях RU/EN
- 18 раундов исследований с отчётами и публичными errata
- Около 28 GPU-часов на одной RTX 3060 за весь путь
Куда направить ресурсы
- Больше данных и вычислений для JEPA: в раунде 14 качество предиктора росло с объёмом
- Независимая проверка на test и на нескольких seed
- Решения по произвольному контексту и критерию на RU/EN
- Длинный контекст: качество за пределами 512 токенов пока не измерено
Как начать разговор
Напишите в Telegram или на почту. Пришлём технический отчёт, журнал раундов и план следующих экспериментов, ответим на вопросы.
Поддержать проект
Помочь Zerno расти
Если вам близка идея компактных и проверяемых моделей, поддержите исследование пожертвованием в USDT (сеть TON) или Bitcoin. Выберите сеть, отсканируйте QR-код в кошельке или скопируйте адрес.
Пожертвование — добровольный подарок проекту, а не инвестиция: оно не даёт доли и других прав. Об участии в проекте — в блоке «Инвесторам и фондам» выше.
USDTTON
Адрес кошелька
UQB6bPPGX-1SKNzYlnYt1eif5TEZo_sM1WzBfaOh6tf8rxC_
Только USDT в сети TON, от 0,005 USDT. Монеты TON, другие токены и переводы из других сетей (TRC-20, ERC-20 и т. п.) на этот адрес не зачислятся.
BTCBitcoin
Адрес кошелька
bc1qf0ln30007v4em5dufhpjaftatskeuz33drt0nt
Только BTC в сети Bitcoin. Токены и монеты других сетей, отправленные на этот адрес, будут утеряны.