dormouse

Байтовая Mixture-of-Experts языковая модель, обученная от начала до конца на одной потребительской видеокарте.

dormouse(1)rtx 5060 ti · 16 gb
$ dormouse train medium --set seq_len=1024 --set moe_capacity=0
step=60000  loss=1.2130  bpb=1.936  40.9k tok/s
$ dormouse serve --ckpt-name sft11 --port 3783
ready — одна RTX 5060 Ti 16GB, $429
[+] 968 теста[+] ruff чистый[-] cuda-гейты скипаются
1.07Bпараметров · 57M активных
40.9kток/с, medium b24 × s1024
1.936BPB на held-out, окно 196 608 Б
968теста, ruff чистый
$429одна RTX 5060 Ti 16 ГБ

Зачем это существует

Фронтир публикует рецепты, но не вычисления. Этот проект задаёт более узкий вопрос: взять те же идеи — линейное внимание, разреженные эксперты, память вне весов, низкоранговые факторы, байты вместо токенов — и направить их на одну видеокарту за $429. Как далеко они реально зайдут?

Фреймворк здесь — инструмент, модель — показание прибора. Каждое число на этой странице снято на этой машине, с названным конфигом и коммитом, а механизм, проваливший свой A/B, записывается как провал, а не тихо удаляется.

Допущено и отклонено измерением

Статус: измеренные числа, включая отозванные

Пять осей

байтовый уровень

Словарь из 256 байтов. Ни BPE, ни токенизаторного налога на русский, код или что угодно, чего токенизатор не видел на обучении.

KDA линейное внимание

Chunked gated delta rule в стиле Kimi. Контекст O(n) и фиксированное рекуррентное состояние 256 КБ на любой длине — KV-кэшу расти некуда.

dropless MoE

1024 эксперта, top-k 2, без capacity-дропов: каждый токен сохраняет всех экспертов, к которым его направил роутер.

TSCT low-rank эксперты

Каждый эксперт — это U·diag(s)·Vᵀ ранга 64. Именно эта факторизация позволяет модели на 1.07B параметров помещаться, учиться и выпускаться на 16 ГБ.

Engram-память

402M «параметров» хэш-таблиц, которые живут в оперативной памяти, вне вычислительного графа.

Стек: что и зачем

байтовый вход
один словарь для любого языка, кода и бинарников; нечего обучать токенизатору, а спекулятивный декод принимает в 3.4 раза больше токенов, чем subword (2610.05978).
KDA-внимание
линейно по длине при фиксированном рекуррентном состоянии: длинный контекст стоит памяти, которая не растёт — поэтому 1M контекста это конфиг, а не переделка.
dropless MoE + LFB
ёмкость, которая не теряет токены: балансировка смещением на роутере, а не вспомогательным лоссом, который воюет с языковой целью (2408.15664).
TSCT low-rank эксперты
модель на 1.07B параметров в 16 ГБ: каждый эксперт — U·diag(s)·Vᵀ ранга 64, и та же факторизация несёт storage-лестницу fp8→NVFP4→тернарный.
Engram-память
знание, которое не стоит FLOPs: 402M хэш-строк в оперативной памяти, из которых один токен трогает ~0.02%.
weight-shared loop
глубина без параметров — три прохода через один блок, замеренный оптимум из 2/3/4 на нашем протоколе.
Muon + ColRow, WSD
лучший из пяти оптимизаторов, проверенных A/B здесь; NorMuon, schedule-free Muon и SIGReg проиграли ему и записаны как проигравшие.
verifier-first пост-трейн
верификаторы кода и математики плюс fork-replay преимущества — пост-трейн без обученной reward-модели, и штраф за длину, награждающий решение меньшим числом байтов.
QAT-лестница
обучение идёт в bf16, а выпуск — ступень той же модели: 0.3 ГБ тернарной против 2.1 ГБ bf16, измерено тем же eval.

База знаний с политикой отзыва

Каждая страница доков генерируется на этапе сборки из файла, который уже лежит в репозитории — никакой второй копии фактов. Число публикуется вместе с конфигом, датой и коммитом, на котором оно снято, а отозванное утверждение остаётся опубликованным рядом с тем, что его заменило.

Что это ·Отозвано, не цитировать ·Глоссарий

Заглянуть в доки, не уходя

Три страницы базы знаний, подгружаемые на месте через htmx из той же статической сборки — без второй копии фактов и без перезагрузки. Без JavaScript те же ссылки работают как обычные.

Выбери страницу — она загрузится здесь из той же сборки. Обычная навигация тоже работает: каждая — настоящая ссылка.

Быстрый старт

uv sync                      # CPU environment; the tests run here
uv run pytest                # 968 tests, ruff clean
uv run dormouse train medium --data corpus.bin --eval held.bin --device cuda \
  --steps 60000 --batch 24 --set seq_len=1024 --set moe_capacity=0
uv run dormouse serve --out-dir checkpoints/sft --ckpt-name sft11 --port 3783

Нужен uv и Python 3.12 — полный список команд.

вопросы, которые действительно задают

Это правда обучается на одной потребительской видеокарте?
Да — прогоны в таблице выше сделаны на одной RTX 5060 Ti (16 ГБ). Влезает байтовая Mixture-of-Experts модель: 1.07 млрд параметров хранимых, ~57 млн активных на байт, при этом n-граммная таблица на 402 млн строк живёт в оперативной памяти, а банк экспертов факторизован до ранга 64.
Что такое байтовая модель и почему без токенизатора?
Словарь — это 256 значений байта, поэтому любой язык, код и бинарь уже в алфавите, и токенизатор не нужно ни обучать, ни согласовывать. Цена — за шаг читается меньше символов, чем у подсловной модели; проект эту цену измеряет и публикует, а не прячет.
Чем это отличается от маленькой Llama или Qwen?
Отличается рецепт, а не класс размера: блок с общими весами вместо глубины, dropless top-k MoE вместо плотного FFN, линейное внимание KDA с фиксированным состоянием 256 КБ вместо KV-кэша и хэш-память вне графа вычислений. Опубликованное сравнение — в документации, с честно названной разницей протоколов.
Это чат-бот?
Пока нет. В пайплайне есть SFT и verifier-first RL-степпер, а демо показывает архитектуру прямо в браузере; обученные модели — исследовательские чекпоинты, и сайт пишет, какие числа были отозваны и почему.
Сайт меня отслеживает?
Нет. Ни аналитики, ни cookie, ни сторонних запросов: единственный скрипт (htmx) лежит в этом же репозитории, шрифты системные, модель демо — файл с этого же сайта.