В восторге от выпуска нового репозитория: nanochat! (это один из самых безумных, что я когда-либо писал). В отличие от моего предыдущего аналогичного репозитория nanoGPT, который охватывал только предварительное обучение, nanochat — это минимальная, с нуля, полностековая обучающая/инференсная система простого клона ChatGPT в одном коде с минимальными зависимостями. Вы запускаете облачный GPU, запускаете один скрипт, и всего через 4 часа вы можете общаться со своим собственным LLM в веб-интерфейсе, похожем на ChatGPT. Он весит ~8,000 строк довольно чистого кода для: - Обучения токенизатора с использованием новой реализации на Rust - Предварительного обучения трансформера LLM на FineWeb, оценки CORE-метрики по ряду показателей - Обучения на разговорах пользователь-помощник из SmolTalk, вопросах с множественным выбором, использовании инструментов. - SFT, оценка модели чата по мировым знаниям с множественным выбором (ARC-E/C, MMLU), математике (GSM8K), коду (HumanEval) - RL модели по желанию на GSM8K с "GRPO" - Эффективного инференса модели в движке с KV-кэшем, простым предзаполнением/декодированием, использованием инструментов (интерпретатор Python в легковесном песочнице), общение с ней через CLI или веб-интерфейс, похожий на ChatGPT. - Написания одного отчета в формате markdown, подводящего итоги и геймифицирующего весь процесс. Даже при стоимости всего ~$100 (~4 часа на узле 8XH100) вы можете обучить маленький клон ChatGPT, с которым можно немного пообщаться, и который может писать истории/стихи, отвечать на простые вопросы. Примерно через ~12 часов он превосходит метрику CORE GPT-2. При дальнейшем увеличении до ~$1000 (~41.6 часов обучения) он быстро становится гораздо более связным и может решать простые математические/кодовые задачи и проходить тесты с множественным выбором. Например, модель глубиной 30, обученная в течение 24 часов (это примерно равно FLOPs GPT-3 Small 125M и 1/1000 от GPT-3), достигает 40 баллов на MMLU и 70 на ARC-Easy, 20 на GSM8K и т.д. Моя цель — собрать весь "сильный базовый" стек в один целостный, минимальный, читаемый, хакерский, максимально форкабельный репозиторий. nanochat станет завершающим проектом LLM101n (который все еще разрабатывается). Я думаю, что он также имеет потенциал вырасти в исследовательский инструмент или бенчмарк, подобный nanoGPT до него. Это ни в коем случае не законченный, настроенный или оптимизированный проект (на самом деле, я думаю, что там, вероятно, есть много легкодоступных улучшений), но я думаю, что он находится на таком уровне, что общий скелет достаточно хорош, чтобы его можно было выложить на GitHub, где все его части могут быть улучшены. Ссылка на репозиторий и подробный обзор быстрого запуска nanochat находятся в ответе.
Репозиторий GitHub: Гораздо более подробное и техническое руководство: Пример разговора с $100, 4-часовым nanochat в WebUI. Это... развлекательно :) Более крупные модели (например, 12-часовая глубина 26 или 24-часовая глубина 30) быстро становятся более связными.
И пример некоторых сводных метрик, полученных от $100 спидрана в отчетной карточке для начала. Текущая кодовая база немного превышает 8000 строк, но я старался держать их чистыми и хорошо прокомментированными. Теперь наступает веселая часть - настройка и подъем в гору.
1,9M