Об этом проекте

nanochat — минималистичный и удобный для модификаций экспериментальный инструментарий для обучения больших языковых моделей на одном GPU-узле. Он охватывает полный конвейер LLM: токенизацию, прептроетку, дообучение (SFT и RL), оценку и инференс. Ключевая философия проекта — простота. Вместо десятков настроек конфигурации nanochat использует единственный параметр сложности (`--depth`, количество слоёв трансформера), автоматически выводящий все остальные гиперпараметры (ширину модели, число head'ов, learning rate, training horizon, weight decay) оптимальным для вычислений образом. Меняя этот параметр, можно получить серию моделей разных размеров. Обучение модели класса GPT-2 (примерно depth 24–26) на ноде 8×H100 занимает около 1,5 часов и обходится примерно в $48 (~$3 за GPU/час). При использовании spot-инстансов стоимость снижается до ~$15. Оригинальное обучение GPT-2 в 2019 году стоило ~$43 000. Ключевые особенности: - BPE-токенизатор с рендерингом чата в стиле GPT-4 - Реализация GPT-трансформера на чистом PyTorch - Распределённое обучение через `torchrun` с автоматическим откатом на один GPU и gradient accumulation - Явное управление mixed precision (bfloat16, float16, float32) без использования `autocast` - Оценка через DCLM CORE score, bits-per-byte loss и бенчмарки (ARC, GSM8K, MMLU, HumanEval) - Скрипты обучения RL и SFT для чат-моделей - Движок инференса с поддержкой KV cache - Действующий speedrun-лидерборд, отслеживающий wall-clock time до достижения уровня GPT-2 Кодовая база спроектирована для быстрой исследовательской итерации: короткий эксперимент на 12 слоях (~5 мин) позволяет разработчикам тестировать изменения перед запуском полного обучения. Проект написан и поддерживается Andrej Karpathy.