CEO ZeroAgency, руководитель разработки онлайн-платформы Школково.
Пишу про IT, AI и HighLoad разработку.
Личный блог: @daily_ak
YT: youtube.com/@segfault_11
Контакт для связи: @bethrezen
Post #367
1.38K

Обещал рассказать про обучение LLM с нуля.
Итак, что же я делаю. Обучаю с нуля свою языковую модель — d3moe-e160. Короткий отчёт о первых полутора сутках.
Архитектура — гибрид:
• 20 слоёв, ширина 1536. На каждые три слоя Gated DeltaNet (линейное внимание) приходится один слой полного внимания (MQA, FlashAttention-4).
• MoE в каждом слое: 160 экспертов, на токен работают 6 плюс один общий. Сигмоидный роутер, балансировка без aux-loss.
• n-gram-память (в духе Engram): отдельная хэш-таблица на 8.4 млн строк × 1536 для 2- и 3-грамм. На каждом токене модель достаёт строки своих n-грамм и подмешивает их в слои 2, 6, 10 и 14 через обучаемый гейт. Таблица разложена по 8 GPU и обновляется разреженно — только строки, которые встретились в батче.
• Всего 28.4B параметров: ≈15.1B в экспертах, ≈12.9B в n-gram-таблице; на токен активно ≈1.05B. Словарь — свой BPE на 131k.
Данные: ≈5.5 трлн токенов за один проход, без повторов. Русского около четверти, остальное — веб, учебные тексты, код, математика, книги, синтетика.
Как учим:
• Один узел 8×H200: expert parallel 8 + FSDP2, torch.compile, fp8 (эксперты — на DeepGEMM).
• Muon для матриц, AdamW для остального, разреженный оптимизатор для n-gram-таблицы.
• План: 0.2T токенов обычного next-token prediction, затем основной проход с Token Superposition Training (до 8 токенов на позицию, для русского — не больше 2), затем ntp recovery стадия на самых качественных и важных для моей задачи данных и растяжение контекста до 256k.
• Всё крутится внутри DiLoCo: к трейну можно подключать другие серверы. Схема, где сервер-остров шлёт градиенты прямо в оптимизатор главного узла, прошла проверку качества — подключим на финальном NTP-этапе. Пока что у нас только один дополнительный сервер с 4x RTX Pro 6000 - даст примерно +15% tok/s к трейну.
• Скорость ≈392 тыс. токенов/с, шаг ≈1 с.
Где сейчас: 32.7 млрд токенов, ~5 % пути. На чекпоинте 64k: MMLU (5-shot) 0.35, HellaSwag 0.59, GSM8K (8-shot) 0.12 — и всё растёт от чекпоинта к чекпоинту.
Как модель пишет на чекпоинте 80k (жадная генерация, чистый претрейн без чата):
→ «Задача: У Маши было 12 яблок. Она отдала 5 яблок брату, а потом купила ещё 8. Сколько яблок стало у Маши? Ответ:»
«У Маши изначально было 12 яблок. Она отдала 5 яблок брату, что привело к 12 - 5 = 7 яблокам. Затем она купила ещё 8 яблок, что привело к 7 + 8 = 15 яблокам. <…> Ответ — 15»
→ «The capital of Canada is»
«Ottawa, which is also the capital of the province of Ontario. Ottawa is the seat of the federal government of Canada…»
→ «Столица Австралии — город»
«Мельбурн, расположенный на реке Флит-стрит…» — факты о мире ещё впереди, модель видела еще очень мало данных.
Окончание претрейна — ориентировочно во второй половине ноября.
Итак, что же я делаю. Обучаю с нуля свою языковую модель — d3moe-e160. Короткий отчёт о первых полутора сутках.
Архитектура — гибрид:
• 20 слоёв, ширина 1536. На каждые три слоя Gated DeltaNet (линейное внимание) приходится один слой полного внимания (MQA, FlashAttention-4).
• MoE в каждом слое: 160 экспертов, на токен работают 6 плюс один общий. Сигмоидный роутер, балансировка без aux-loss.
• n-gram-память (в духе Engram): отдельная хэш-таблица на 8.4 млн строк × 1536 для 2- и 3-грамм. На каждом токене модель достаёт строки своих n-грамм и подмешивает их в слои 2, 6, 10 и 14 через обучаемый гейт. Таблица разложена по 8 GPU и обновляется разреженно — только строки, которые встретились в батче.
• Всего 28.4B параметров: ≈15.1B в экспертах, ≈12.9B в n-gram-таблице; на токен активно ≈1.05B. Словарь — свой BPE на 131k.
Данные: ≈5.5 трлн токенов за один проход, без повторов. Русского около четверти, остальное — веб, учебные тексты, код, математика, книги, синтетика.
Как учим:
• Один узел 8×H200: expert parallel 8 + FSDP2, torch.compile, fp8 (эксперты — на DeepGEMM).
• Muon для матриц, AdamW для остального, разреженный оптимизатор для n-gram-таблицы.
• План: 0.2T токенов обычного next-token prediction, затем основной проход с Token Superposition Training (до 8 токенов на позицию, для русского — не больше 2), затем ntp recovery стадия на самых качественных и важных для моей задачи данных и растяжение контекста до 256k.
• Всё крутится внутри DiLoCo: к трейну можно подключать другие серверы. Схема, где сервер-остров шлёт градиенты прямо в оптимизатор главного узла, прошла проверку качества — подключим на финальном NTP-этапе. Пока что у нас только один дополнительный сервер с 4x RTX Pro 6000 - даст примерно +15% tok/s к трейну.
• Скорость ≈392 тыс. токенов/с, шаг ≈1 с.
Где сейчас: 32.7 млрд токенов, ~5 % пути. На чекпоинте 64k: MMLU (5-shot) 0.35, HellaSwag 0.59, GSM8K (8-shot) 0.12 — и всё растёт от чекпоинта к чекпоинту.
Как модель пишет на чекпоинте 80k (жадная генерация, чистый претрейн без чата):
→ «Задача: У Маши было 12 яблок. Она отдала 5 яблок брату, а потом купила ещё 8. Сколько яблок стало у Маши? Ответ:»
«У Маши изначально было 12 яблок. Она отдала 5 яблок брату, что привело к 12 - 5 = 7 яблокам. Затем она купила ещё 8 яблок, что привело к 7 + 8 = 15 яблокам. <…> Ответ — 15»
→ «The capital of Canada is»
«Ottawa, which is also the capital of the province of Ontario. Ottawa is the seat of the federal government of Canada…»
→ «Столица Австралии — город»
«Мельбурн, расположенный на реке Флит-стрит…» — факты о мире ещё впереди, модель видела еще очень мало данных.
Окончание претрейна — ориентировочно во второй половине ноября.
- ❤ 15
- 👍 8
- 🔥 4













