PyImageSearch опубликовал заключительную часть серии, посвященной созданию DeepSeek-V3 « с нуля ». На этот раз фокус сместился на обучение модели и генерацию текста. Автор туториала, Puneet Mangla, подробно описывает цикл обучения, гиперпараметры и данные, использованные для модели небольшого размера.
Эта шестая часть завершает серию, в которой шаг за шагом рассматривались настройка и Rotary Position Embeddings (RoPE), Multi-head Latent Attention (MLA), Mixture of Experts (MoE), Multi-Token Prediction (MTP), а затем сборка архитектуры в PyTorch. Туториал представляет « trainer » — компонент, который заставляет архитектуру работать, подвергая ее обработке данных.
Обучение на основе Hugging Face
Обучение модели типа трансформера требует координации загрузки данных, оптимизации, управления контрольными точками и оценки. Для этого автор использует API Trainer от Hugging Face с версиями transformers==4.57.3, datasets==4.8.5 и accelerate==1.15.0. Поскольку модель возвращает пару (logits, loss), пользовательский метод compute_loss адаптирует ее вывод к формату, ожидаемому Trainer.
Были применены несколько техник. Накопление градиентов имитирует большие батчи при ограниченной памяти GPU: с батчем из 4 примеров и 4 шагами накопления эффективный размер достигает 16 на одном устройстве. Скорость обучения следует фазе постепенного разогрева (warmup), за которой следует линейное затухание. Наконец, обучение со смешанной точностью (FP16) может ускорить вычисления, хотя выигрыш зависит от оборудования и рабочей нагрузки.
Данные и конфигурация
Модель обучается на TinyStories — наборе данных с простыми детскими историями, созданном для словарного запаса и грамматики, подходящих для небольших языковых моделей. Автор использует только первые 10 000 примеров, разделенных без перемешивания на 9 000 для обучения и 1 000 для оценки. Таким образом, этот второй набор взят из выбранного подмножества, а не из официальной валидационной части набора данных.
Текст токенизируется с помощью токенизатора GPT-2, который использует кодирование байтными парами (BPE). Позиции заполнения исключаются из расчета потерь благодаря значению -100. Конфигурация устанавливает скорость обучения 5e-4, 10 шагов разогрева, регуляризацию 0,01 и 2 эпохи обучения. Контрольные точки создаются каждые 50 шагов, сохраняются три последние, и окончательная модель выбирается по наименьшей валидационной потере.
Для тестирования генерации автор использует температуру 0,8 и топ-k сэмплирование с k=50, генерируя 150 новых токенов. История, представленная в качестве примера, явно иллюстративна и не является результатом зафиксированного запуска. В туториале отмечается, что эта небольшая модель не сможет конкурировать с большими предобученными моделями, и ее результаты могут повторяться, отклоняться или терять связность. Полный туториал и его исходный код доступны на сайте PyImageSearch.
