Автор статьи обучил LLM размером 0,5B параметров с нуля на русскоязычных статьях Хабра, используя фреймворк nanochat от Андрея Карпатого. Эксперимент показал, что даже на домашнем GPU можно запустить обучение, а формат fp8 позволяет вдвое сократить потребление памяти по сравнению с bf16. Однако качество полученной модели осталось низким из-за ограниченного объёма и разнообразия данных.
Обучение LLM с нуля включает три этапа: pretrain, SFT и DPO. На этапе pretrain модель учится предсказывать следующий токен на основе неразмеченного текста. Это позволяет ей освоить грамматику, пунктуацию и более сложные связи между частями документов. Затем с помощью SFT модель адаптируется к формату инструкций, а DPO «выравнивает» ответы, усиливая хорошие и ослабляя плохие.
Ядро работы нейросети — эмбеддинги, которые несут суть слова в многомерном пространстве, а не само слово. Операции над этими векторами (сложение, вычитание) позволяют переносить значения: например, «король» минус «мужчина» плюс «женщина» даёт «королева». Семплинг добавляет случайность в генерацию, параметры Top-K, Top-P и temperature контролируют разнообразие.
Использованы форматы fp8 и bf16 для сравнения эффективности обучения на домашнем GPU.
Фреймворк nanochat, созданный Карпатым, упрощает запуск обучения: достаточно указать датасет и архитектуру. В эксперименте использовалась модель на 0,5B параметров, датасет собран из статей Хабра (около 10 млн знаков). Обучение в формате fp8 заняло меньше видеопамяти, но привело к потере точности. На практике модель смогла связывать лишь несколько слов, что ожидаемо для такого размера и объёма данных.
Интересно, что автор отмечает важность закона Шиншиллы — соотношения между размером модели и объёмом данных. Для 0,5B параметров требуется порядка 1 млрд токенов, а в датасете их было значительно меньше. Это объясняет скромные результаты.

