Добавить в корзинуПозвонить
Найти в Дзене
Social Mebia Systems

Karpathy nanochat: «ручной» ChatGPT за $100 и 12 часов. Зачем это нужно и что внутри

Коротко Репозиторий: GitHub: karpathy/nanochat
Гайд: Discussions/1 (быстрый старт)
Анонс: X (Karpathy) Что это за проект Nanochat — это «учебно-боевой» full‑stack: Архитектурно ближе к LLaMA, местами вдохновлен modded‑nanoGPT, но радикально упрощен и «рукотворен»: Карпати подчеркивает, что почти все написано вручную — попытки позвать код-агентов (Claude/Codex) не помогли из‑за нетипичной структуры репозитория. Результаты и метрики Важно: это «сильная базовая линия», а не предел. Карпати прямо пишет, что оптимизация далека от исчерпывающей: есть запас в данных, архитектуре, оптимизаторах, пайплайне, инженерии памяти и т. д. Как это работает шаг за шагом Зачем это сообществу Практические советы, если хотите «пробежать спидран» Контекст: почему это важно сейчас На фоне гонки за 10+ ГВт и кастомными чипами у гиперскейлеров, nanochat напоминает о другой стороне прогресса — инженерной ясности и доступности. Как когда‑то nanoGPT стал «карманным учебником» для autoregressive‑моделей, nanochat

Коротко

  • Андрей Карпати (экс-Tesla AI, сооснователь OpenAI, ныне — основатель школы Eureka Labs) выпустил nanochat — минималистичный, «с нуля» собранный стек для обучения и инференса небольшого диалогового LLM.
  • ~8000 строк кода, один репозиторий, минимум зависимостей. От запуска скрипта до веб‑интерфейса в стиле ChatGPT — за 4–12 часов на облачной машине с 8×H100.
  • Себестоимость «спидрана» — порядка $100 (около 4 часов), расширенный прогон ~ $1000 (≈42 часа) дает заметный прирост качества.
  • После ~12 часов предобучения модель по интегральной метрике CORE обходит GPT‑2; при 24–42 часах появляются зачатки математики/кода и приличные результаты на выборочных тестах.

Репозиторий: GitHub: karpathy/nanochat
Гайд:
Discussions/1 (быстрый старт)
Анонс:
X (Karpathy)

Что это за проект

Nanochat — это «учебно-боевой» full‑stack:

  • собственный токенайзер на Rust (скорость, прозрачность), совместимый по качеству с классическими BPE; при инференсе можно использовать tiktoken;
  • предобучение Transformer на FineWeb‑EDU (перепакован в «плоские» случайные партиции для простоты I/O);
  • «midtrain» на диалогах (SmolTalk) + адаптация к многошаговым разговорам и форматам спец‑токенов, обучение решать multiple‑choice;
  • SFT (supervised fine‑tuning) для подтяжки качества ответа и соответствия чат‑формату;
  • опциональный RL на GSM8K через упрощенный GRPO‑контур (по сути REINFORCE‑стиль с «group-relative» нормировкой), чтобы подтянуть элементарную математику;
  • inference‑движок с KV‑кэшем, предзаполнением/декодированием, встроенным мини‑инструментарием (Python‑интерпретатор в «песочнице»), CLI и веб‑UI (FastAPI);
  • единый отчет report.md с метриками, «геймификацией» прогресса и конфигурацией прогона.

Архитектурно ближе к LLaMA, местами вдохновлен modded‑nanoGPT, но радикально упрощен и «рукотворен»: Карпати подчеркивает, что почти все написано вручную — попытки позвать код-агентов (Claude/Codex) не помогли из‑за нетипичной структуры репозитория.

Результаты и метрики

  • CORE (интегральная метрика автодополнения на 20+ датасетах типа HellaSwag, ARC, LAMBADA, BoolQ и т. п.) растет по мере FLOPs; около 12 часов тренировки — уже выше GPT‑2 (large).
  • При бюджете ~$1000 (≈41.6 часа) появляются существенные улучшения: простая математика/код, уверенные multiple‑choice.
  • Пример при depth=30 (порядка 560M параметров при рассматриваемой конфигурации, сравнимо с GPT‑3 Small 125M по вычислительным затратам, но с другой архитектурой/контекстом):
  • MMLU: 40+ баллов (выше рандома 25%)
  • ARC‑Easy: 70+%
  • GSM8K: 20+%
  • После midtrain+SFT модель уверенно держит базовые факты, диалоговые форматы, начинает решать MCQ; RL на GSM8K добавляет еще немного в арифметике.

Важно: это «сильная базовая линия», а не предел. Карпати прямо пишет, что оптимизация далека от исчерпывающей: есть запас в данных, архитектуре, оптимизаторах, пайплайне, инженерии памяти и т. д.

Как это работает шаг за шагом

  1. Окружение и данные
  • Быстрый старт через скрипт speedrun.sh на чистой машине.
  • Токенайзер: Rust/Cargo билд; цель — скорость и контроль. В словаре по умолчанию 65 536 токенов (часть — спец‑токены для чата).
  • Данные: FineWeb‑EDU (перешинкован в parquet‑шарды ~0.25M символов, gzip ~100MB, всего 1822, из них для depth≈20 достаточно ~240). Скачивание в ~/.cache/nanochat.
  • Eval bundle (CORE) — отдельный архив 22 датасетов, кладется в ~/.cache/nanochat/eval_bundle.
  • Мониторинг: wandb по желанию.
  1. Предобучение (base_train.py)
  • Типичная конфигурация: 20–30 слоев, d_model ~1280, ~10 голов, контекст 2048, общий размер ~0.5–0.6B параметров.
  • На 8×H100 шаг ≈0.5 c, пакет на шаг ~0.5M токенов (через батч и градиентное накопление).
  • Целевой объём токенов следует эвристикам Chinchilla (параметры×20).
  • Оптимизация: Muon для матриц, AdamW для эмбеддингов/деэмбеддингов, bfloat16, MFU близко к 50% — неплохо для «учебного» стека.
  • Лосс в bits-per-byte (bpb) — сравнимый поперёк разных токенизаторов.
  1. Midtrain (диалоги, MCQ, инструменты)
  • Обучение формату чата и спец‑токенам (<|bos|>, <|assistant|>, <|user|>, <|python_start|>…).
  • Впрыск MCQ‑задач (MMLU aux) — критично для маленьких моделей, чтобы «понять», как работать с множественным выбором.
  • Обучение вызывать инструменты (простые вызовы Python в песочнице) — помогает на GSM8K.
  1. SFT
  • Короткая стадия донастройки на диалогах с имитацией «тестового» формата (без склейки примеров в длинные строки) — уменьшает разрыв дистрибуций между train и inference.
  1. RL (опционально)
  • Упрощенный GRPO/REINFORCE для GSM8K: сэмплинг решений, оценка вознаграждения по правильности ответа, обновление по токен‑уровневым преимуществам.
  • Без тяжелых трюков PPO (без trust region/KL), зато достаточно для небольшого прироста на четко формализуемой задаче.
  1. Инференс и UI
  • Движок с KV‑кэшем и легковесным «орудием труда» (Python).
  • Доступ через CLI или FastAPI веб‑UI (адрес узла + порт).

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

  • Учебный стек, который действительно можно «прочитать за выходные» и модифицировать: отличный вход для ML‑инженеров, курсов и лабораторных.
  • Базис для исследований: сравнение токенизаторов, стратегий оптимизации, данных, расписаний LR, sparsity/quant, длинного контекста — без «черных ящиков».
  • Демократизация экспериментов: показать, что «маленький ChatGPT» достижим за сотни долларов, а не за миллионы. Это снижает барьеры для стартапов и академии.
  • Репликация и бенчмаркинг: единые скрипты, единая отчетность (report.md) — проще воспроизводить и сравнивать.

Практические советы, если хотите «пробежать спидран»

  • Железо: 8×H100 в облаке (например, Lambda) ~ $24/час — ваш «метроном». Следите за шагом/временем/метриками.
  • Данные: берите «shuffle»-версии FineWeb‑EDU от автора — проще I/O и случайность.
  • Токенайзер: по умолчанию ок; для многоязычия/кода можно экспериментировать с размером словаря и правилами regex‑разбиений.
  • Гиперпараметры: depth — главный «мастер-слайдер». Увеличили глубину — уменьшайте per‑device batch, включайте градиентное накопление.
  • Мониторинг: настраивайте wandb сразу — экономит время и деньги, помогает вовремя остановиться.
  • RL: имеет смысл только под четкий reward (как GSM8K). Для «общей осмысленности» и безопасности это не замена RLHF с человеческими предпочтениями.

Контекст: почему это важно сейчас

На фоне гонки за 10+ ГВт и кастомными чипами у гиперскейлеров, nanochat напоминает о другой стороне прогресса — инженерной ясности и доступности. Как когда‑то nanoGPT стал «карманным учебником» для autoregressive‑моделей, nanochat может стать практическим «LLM 101n»: от токенайзера до веб‑чата — без магии и «вендор-специфик».

Для индустрии это полезный эталон «разумной достаточности»: где минимальные средства дают максимальную обучающую ценность. Для сообщества — способ быстро прокачать навыки и продемонстрировать компетенцию: «пробежал спидран, понял узкие места, улучшил X и Y» — уже строчка в резюме ML Engineer.

Впереди — оптимизация и рост: длинные контексты, качественный RLHF, мультимодальность, более агрессивные режимы обучения и эффективные архитектурные трюки. Но старт дан: минималистичный, прозрачный и вдохновляющий.

Хотите создать уникальный и успешный продукт? СМС – ваш надежный партнер в мире инноваций! Закажи разработки ИИ-решений, LLM-чат-ботов, моделей генерации изображений и автоматизации бизнес-процессов у профессионалов.

ИИ сегодня — ваше конкурентное преимущество завтра!

Тел. +7 (985) 982-70-55

E-mail sms_systems@inbox.ru

Сайт https://www.smssystems.ru/razrabotka-ai/