Telegram Group Search
This media is not supported in your browser
VIEW IN TELEGRAM
Сегодня обсудим процедуру обучения DeepSeek-V3. Архитектура и технические решения были разобраны в предыдущем посте (https://www.group-telegram.com/gonzo_ML.com/3292).

На всякий случай ещё раз явно проговорю, это не DeepSeek-R1, которая reasoning по типу o1/o3, это базовая чат-модель, на которой R1 была обучена. Не уверен, что буду делать разбор R1, первого поста про DeepSeek (https://www.group-telegram.com/gonzo_ML.com/3239), имеющегося разбора V3 и поста от Аламмара (https://newsletter.languagemodels.co/p/the-illustrated-deepseek-r1), кажется, достаточно. Но посмотрим.

Из технически важных моментов хочется ещё раз обратить внимание на важность обучения в FP8 из предыдущего поста (https://www.group-telegram.com/gonzo_ML.com/3294). Это биг дил, что наконец оно завелось в промышленном режиме для большой модели хорошего качества. Эффективно оно удваивает доступные вычислительные мощности или даёт возможность обучать модели в два раза большего размера.

Обучение разделено на pre-training и post-training.

Pre-training.


Относительно предыдущего DeepSeek-V2 (https://arxiv.org/abs/2405.04434) увеличена доля примеров про математику и программирование, а также расширен набор языков за пределы английского и китайского. При этом всё равно, английский + китайский составляют большую часть датасета, а описания композиции и распределения других языков я не нашёл.

Всего итоговый датасет содержит 14.8T токенов (у предыдущей версии было 8.1T токенов). Токенизатор BPE со словарём в 128k. Относительно предыдущей версии токенизатор изменён и обучен на более мультиязычном корпусе, а также добавлены токены, комбинирующие пунктуацию с переносами строк.

В предобучении в дополнение к стандартному Next-Token-Prediction используется Fill-in-Middle (FIM) стратегия с частотой 0.1, применённая в DeepSeekCoder-V2 (https://arxiv.org/abs/2406.11931), но изобретённая ранее в OpenAI (https://arxiv.org/abs/2207.14255), где модель должна восстановить середину текста. Если точнее, то используется подход Prefix-Suffix-Middle (PSM) для структурирования данных (на уровне документов) следующим образом:

<|fim_begin|>𝑓_pre<|fim_hole|>𝑓_suf<|fim_end|>𝑓_middle<|eos_token|>.

Во время предобучения максимальная длина последовательности 4k токенов.

После предобучения применяют YaRN (https://arxiv.org/abs/2309.00071) для расширения контекста и делают две дополнительные фазы обучения по 1000 шагов, где расширяют контекст с 4k до 32k, а затем до 128k.

В итоге на множестве бенчмарков, включая английский, китайский, код, математику и один мультиязычный, в целом бьют предыдущую версию DeepSeek-V2, а также две dense модели, Qwen2.5 72B Base и LLaMA-3.1 405B Base, получая сильнейшую из открытых моделей. Сравнение с Qwen2.5 72B Base интересно, это была одна из сильных моделей, активных параметров у неё получается практически в два раза больше, чем у DeepSeek. У LLaMA-3.1 405B Base их вообще в 11 раз больше, но она на этих бенчмарках хуже.

Авторы заявляют, что для DeepSeek-V3 на каждый триллион токенов обучения требуется 180K H800 GPU-часов.

Post-training.

Состоит из двух частей, Supervised Fine-Tuning (SFT) и RL.

SFT делался на дополнительных Reasoning и Non-Reasoning данных. Это всё было сделано для разных областей (упоминания конкретных доменов далее) и итоговый датасет для instruction-tuning составляет 1.5M примеров.

Reasoning данные фокусировались на математике, программировании, логических задачах. Данные генерировались внутренней DeepSeek-R1 моделью (которая в свою очередь была обучена на DeepSeek-V3 в качестве базы — см.рекурсия). Но проблема с данными от R1 была в её многословности, overthinking и плохом форматировании.

Для генерации данных из конкретного домена создавалась экспертная модель, также обученная через SFT + RL. Генерировались два типа SFT сэмплов: <problem, original response> и <system prompt, problem, R1 response>. В промпте были инструкции для рефлексии и верификации. В RL фазе с высокой температурой генерились ответы модели, и постепенно модель выучивала паттерны R1. После обучения с помощью rejection sampling генерировались примеры для SFT оригинальной модели.
Non-Reasoning данные включали creative writing, role-play, и simple question answering, и были сгенерены DeepSeek-V2.5 с последующей верификацией человеком.

Reinforcement Learning (RLHF по сути) включал два подвида: rule-based Reward Model (RM) и model-based RM.

Там, где можно было валидировать правилами, использовали rule-based RM. Например, так можно проверять некоторые математические задачи с детерминистическим результатом и заданным форматом ответа, а на задачах LeetCode можно получать фидбек от компилятора. Где можно использовать такой подход, старались использовать его, он защищён от манипуляции.

В вопросах с ground truth ответом в свободной форме использовали модель, которая оценивала насколько ответ матчится с этим ground truth. В более открытых постановках, когда и явного ground truth нет (например, в creative writing), reward model предоставляла фидбек по исходному запросу и ответу. RM были обучены на SFT чекпойнтах DeepSeek-V3. Для большей надёжности preference data не только давали финальный reward, но и содержали chain-of-thought цепочку рассуждений, ведущих к этому reward. Вроде как помогает от reward hacking.

Как и в DeepSeek-V2, авторы использовали Group Relative Policy Optimization (GRPO), вариант Proximal Policy Optimization (PPO), разработанный также в DeepSeek в рамках работы DeepSeekMath (https://arxiv.org/abs/2402.03300). GRPO позволяет избавиться от отдельной value model, которая обычно такого же размера, что и policy model — вот ещё одно место, где они сэкономили на вычислениях и памяти. Вместо value function используется средний reward на множестве сэмплов, сгенерённых по одному и тому же входному запросу. KL лосс (который нужен, чтобы модель не уходила в сильно другой и нечитаемый текст) в такой схеме тоже упрощается, но делается не между reward и полиси, а напрямую между референс моделью и полиси. Advantage в GRPO по сути вычисляется как z-score.

В этих методах я не специалист, интересно, можно было бы заменить на DPO или нет?

Для разных доменов использовались разные промпты.

Полученная чат модель по бенчмаркам выглядит весьма достойна, сравнима с Claude-Sonnet-3.5-1022 и GPT-4o-05. При этом мы помним, что обучение Sonnet стоило в разы больше, десятки миллионов долларов (https://www.group-telegram.com/gonzo_ML.com/3275), хотя конечно тут мутно, что именно там Дарио репортит, но вряд ли это полная стоимость включая эксперименты и т.п.

В работе есть любопытный анализ дистилляции из reasoning модели (R1). Это улучшает качество, но также и увеличивает среднюю длину ответа, здесь тщательно нужно искать баланс с настройками. В работе это проверили на математике и программировании, но планируют дальше брать шире.

Также упоминается, что для задач, где сложно сделать валидацию и алгоритмический фидбек, в работе использовали подход constitutional AI (https://www.group-telegram.com/gonzo_ML.com/1285), который мне очень нравится (в первую очередь тем, что он скейлится). По сути модель сама оценивала себя, они это назвали Self-Rewarding. Подход тоже улучшил качество, особенно в субъективных оценках. Так понимаю, в планах добавить больше конституционных инпутов.

В глубины бенчмарков уже не полезу, но в статье есть более детальные разборы. В любом случае, модель достойная.


Что особенно хочется отметить по результатам разбора DeepSeek? DeepSeek — это не просто топовая модель, конкурент западных. Это полноценная экосистема научных работ, тут под десяток разных наработок из их предыдущих статей. Интересно, опубликуют ли свой фреймворк для обучения? Это пока, кажется, один из основных missing parts.
This media is not supported in your browser
VIEW IN TELEGRAM
2025/06/15 00:49:54
Back to Top
HTML Embed Code: