Основные характеристики nanochat
Репозиторий предоставляет односценарный «спидран», который выполняет полный цикл: токенизация, базовое предварительное обучение, промежуточное обучение на данных чата/многовариантных/инструментальных данных, контролируемая тонкая настройка (SFT), опциональное RL на GSM8K, оценка и обслуживание (CLI + веб-интерфейс, похожий на ChatGPT).
Рекомендуемая настройка — узел 8×H100; при стоимости примерно 24 доллара в час 4-часовой спидран обойдётся примерно в 100 долларов.
Токенизатор и путь данных
* Токенизатор: пользовательский Rust BPE (построенный через Maturin) с словарём из 65 536 токенов; для обучения используются сегменты FineWeb-EDU (перепакованные/перетасованные для упрощения доступа).
* Набор для оценки: тщательно подобранный набор для CORE (22 набора для автозавершения, таких как HellaSwag, ARC, BoolQ и т. д.), загруженный в ~/.cache/nanochat/eval_bundle.
Модель, масштабирование и цель «спидрана»
Конфигурация «спидрана» обучает трансформер глубиной 20 (≈560 млн параметров с 1280 скрытыми каналами, 10 голов внимания размерностью 128) примерно на 11,2 млрд токенов, что соответствует масштабированию в стиле Chinchilla (параметры × ~20 токенов). Автор оценивает эту модель как способную выполнять ~4e19 FLOPs.
Промежуточное обучение, SFT и использование инструментов
После предварительного обучения промежуточное обучение адаптирует базовую модель к разговорам (SmolTalk) и явно обучает поведению с множественным выбором (100 тыс. вспомогательных обучающих вопросов MMLU) и использованию инструментов путём вставки блоков <|pythonstart|>…<|pythonend|>; небольшой фрагмент GSM8K включён для запуска использования калькулятора.
SFT затем точно настраивает модель на более качественных разговорах, одновременно согласовывая форматирование во время тестирования (заполненные, неконкатенированные строки), чтобы уменьшить несоответствие между обучением и выводом.
Использование инструментов
Использование инструментов реализовано от начала до конца: пользовательский движок реализует кэш KV, предварительный вывод/декодирование и простую песочницу для интерпретатора Python для запуска с использованием инструментов — используется как в обучении, так и в оценке.
Опциональное RL на GSM8K через упрощённый цикл GRPO
На последнем (необязательном) этапе применяется обучение с подкреплением на GSM8K с упрощённым циклом GRPO.
Масштабирование стоимости/качества и более крупные модели
В README описаны две более крупные цели, помимо ~100 долларов за «спидран»:
* ~300 долларов: d=26 (≈12 часов), немного превосходит GPT-2 CORE; требуется больше сегментов для предварительного обучения и корректировки размера пакета.
* ~1 000 долларов: ≈41,6 часа, с существенно улучшенной связностью и базовыми способностями к рассуждениям/кодированию.
Пример отчёта (уровень «спидрана»)
Пример таблицы report.md для ~100 долларов/≈4-часового запуска показывает: CORE 0.2219 (базовый); после промежуточного обучения/SFT: ARC-E 0.3561→0.3876, ARC-C ~0.2875→0.2807, MMLU 0.3111→0.3151, GSM8K 0.0250→0.0455, HumanEval 0.0671→0.0854, ChatCORE 0.0730→0.0884; время по часам 3 ч 51 мин.
Андрей Карпати выпустил nanochat — компактный и независимый от зависимостей код, который реализует полный стек в стиле ChatGPT. Проект направлен на воспроизводимое и модифицируемое обучение больших языковых моделей на одном узле с несколькими GPU.
Андрей Карпати (@karpathy) 13 октября 2025 года в Twitter поделился новостью о выпуске nanochat. В отличие от его предыдущего аналогичного репозитория nanoGPT, который охватывал только предварительное обучение, nanochat представляет собой минимальный, с нуля, полнофункциональный обучающий/выводной конвейер простого клона ChatGPT.
1. Какие основные характеристики и возможности предоставляет проект nanochat?
Nanochat — это компактный и независимый от зависимостей код, который реализует полный стек в стиле ChatGPT. Он направлен на воспроизводимое и модифицируемое обучение больших языковых моделей на одном узле с несколькими GPU. Основные характеристики включают односценарный «спидран», который выполняет полный цикл: токенизация, базовое предварительное обучение, промежуточное обучение на данных чата/многовариантных/инструментальных данных, контролируемая тонкая настройка (SFT), опциональное RL на GSM8K, оценка и обслуживание (CLI + веб-интерфейс, похожий на ChatGPT).
2. Какие параметры и настройки используются при обучении модели в nanochat?
При обучении модели в nanochat используется пользовательский Rust BPE (построенный через Maturin) с словарём из 65 536 токенов. Для обучения используются сегменты FineWeb-EDU (перепакованные/перетасованные для упрощения доступа). Конфигурация «спидрана» обучает трансформер глубиной 20 (≈560 млн параметров с 1280 скрытыми каналами, 10 голов внимания размерностью 128) примерно на 11,2 млрд токенов.
3. Какие этапы включает в себя процесс обучения модели в nanochat и какие задачи решаются на каждом этапе?
Процесс обучения модели в nanochat включает в себя несколько этапов:
* Предварительное обучение.
* Промежуточное обучение, которое адаптирует базовую модель к разговорам (SmolTalk) и явно обучает поведению с множественным выбором (100 тыс. вспомогательных обучающих вопросов MMLU) и использованию инструментов путём вставки блоков `<|pythonstart|>…<|pythonend|>`.
* Контролируемая тонкая настройка (SFT), которая точно настраивает модель на более качественных разговорах, одновременно согласовывая форматирование во время тестирования.
* Опциональное RL на GSM8K с упрощённым циклом GRPO.
4. Какие цели и задачи стоят перед разработчиками nanochat при масштабировании стоимости и качества модели?
При масштабировании стоимости и качества модели разработчики nanochat стремятся улучшить связность и базовые способности к рассуждениям/кодированию. Они описывают две более крупные цели помимо ~100 долларов за «спидран»:
* ~300 долларов: d=26 (≈12 часов), немного превосходит GPT-2 CORE; требуется больше сегментов для предварительного обучения и корректировки размера пакета.
* ~1 000 долларов: ≈41,6 часа, с существенно улучшенной связностью и базовыми способностями к рассуждениям/кодированию.
5. Какие результаты показывает nanochat после промежуточного обучения и тонкой настройки?
После промежуточного обучения и тонкой настройки модель показывает улучшение по следующим метрикам:
* ARC-E 0.3561→0.3876,
* ARC-C ~0.2875→0.2807,
* MMLU 0.3111→0.3151,
* GSM8K 0.0250→0.0455,
* HumanEval 0.0671→0.0854,
* ChatCORE 0.0730→0.0884.