Сегодня обсудим процедуру обучения 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 оригинальной модели.
На всякий случай ещё раз явно проговорю, это не 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.
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.
Telegram
gonzo-обзоры ML статей
DeepSeek-V3 Technical Report
Статья: https://arxiv.org/abs/2412.19437
Репа: https://github.com/deepseek-ai/DeepSeek-V3
Предыдущий пост про DeepSeek был попсовый (https://www.group-telegram.com/gonzo_ML.com/3239), сегодня хочется пройтись по некоторым техническим решениям в…
Статья: https://arxiv.org/abs/2412.19437
Репа: https://github.com/deepseek-ai/DeepSeek-V3
Предыдущий пост про DeepSeek был попсовый (https://www.group-telegram.com/gonzo_ML.com/3239), сегодня хочется пройтись по некоторым техническим решениям в…
DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning
Статья: https://arxiv.org/abs/2501.12948
Репа: https://github.com/deepseek-ai/DeepSeek-R1
Аламмар Аламмаром (https://newsletter.languagemodels.co/p/the-illustrated-deepseek-r1), но всё-таки пару слов про DeepSeek-R1. Базовую DeepSeek-V3 разобрали здесь (https://www.group-telegram.com/gonzo_ML.com/3292) и здесь (https://www.group-telegram.com/gonzo_ML.com/3312).
R1 — это reasoning модель, аналогичная OpenAI o1/o3, Google Gemini 2.0 Flash Thinking или Alibaba Cloud Qwen QwQ. Идея reasoning моделей в том, что вместо того чтобы сразу выдать ответ, модель сначала проводит некоторые рассуждения в духе Chain-of-Thought (CoT, https://www.group-telegram.com/gonzo_ML.com/1885), генеря кучу токенов с цепочками рассуждений, и лишь затем выдаёт финальный ответ. Таким образом, если раньше весь скейлинг моделей происходил на уровне компьюта во время обучения (берём больше, кидаем дальше — модель побольше и обучение подольше), то теперь модели можно дать “поразмышлять” подольше уже в inference time. Открылось новое измерения для масштабирования моделей — эра Test-time compute (https://www.group-telegram.com/gonzo_ML.com/3175).
DeepSeek-R1 — это, кажется, лучшая из открытых моделей с reasoning на сегодня, вполне конкурирующая с лучшими коммерческими. Гонка запущена, в ближайшие месяцы появятся кучи новых моделей, в том числе более скромного размера с ризонингом. Собственно уже началось, например, s1 (https://arxiv.org/abs/2501.19393).
Также можно сказать, что в NLP снова начинает работать RL.
Что именно сделано в работе про R1?
Главное достижение, мне кажется, примерно аналогично AlphaZero (и называется соответственно DeepSeek-R1-Zero): авторы показали, что для обучения ризонингу не обязательно иметь 100500 примеров для SFT, эти способности неплохо выучиваются с помощью large-scale RL, и можно вообще обойтись без “человеческих демонстраций” в виде SFT. Но если помочь cold start’у небольшим количеством SFT с хорошими примерами, то всё ещё лучше.
В качестве базовой модели взята DeepSeek-V3-Base, модель после Pre-training, но до Post-training, то есть без SFT и RL.
=== Начнём с DeepSeek-R1-Zero.
В качестве RL алгоритма взяли Group Relative Policy Optimization (GRPO), использовавшийся в DeepSeek-V3 (https://www.group-telegram.com/gonzo_ML.com/3313) и DeepSeekMath (https://arxiv.org/abs/2402.03300). Помните, что этот подход позволяет сэкономить на модели критика, которая обычно такого же размера, что и полиси модель.
Reward моделируется через систему на правилах, то есть вроде как ещё минус одна тяжёлая модель. Это выглядит аналогично Rule-based RM из пост-обучения DeepSeek-V3.
Используется два типа наград:
1) Accuracy rewards: определяют, корректен ответ или нет. В случае математических задач или кодирования это несложно.
2) Format rewards: следит за соответствием формата “мыслительного процесса”, он должен быть внутри тегов ‘<think>’ и ‘</think>’.
Neural-based RM не использовалась, потому что подвержена reward hacking, требует больших дополнительных ресурсов и вообще усложняет процесс обучения.
Используют довольно прямолинейный промпт с CoT, который требует от модели сначала подумать, а потом выдать ответ.
R1-Zero довольно неплохо прогрессирует в процессе обучения, на примере AIME 2024 за 8000 шагов добирается до качества не сильно позади OpenAI o1-0912 и выше o1-mini. Добавление мажоритарного голосования сильно повышает качество (в статье репортят результат с 64 ответами).
Подход Zero с чистым RL без SFT позволяет пронаблюдать, как модель эволюционирует по ходу обучения, и отдельный график показывает стабильный рост длины ответа. То есть модель сама выучивает, что думать дольше полезно. Так, спонтанно возникают способности к рефлексии (когда модель переоценивает предыдущие шаги) и исследование альтернативных подходов. Ничего этого заранее заложено не было.
Очень популярным стал пресловутый Aha Moment, когда модель научилась переобдумывать ответ, да ещё и сделала это очень антропоморфно.
Статья: https://arxiv.org/abs/2501.12948
Репа: https://github.com/deepseek-ai/DeepSeek-R1
Аламмар Аламмаром (https://newsletter.languagemodels.co/p/the-illustrated-deepseek-r1), но всё-таки пару слов про DeepSeek-R1. Базовую DeepSeek-V3 разобрали здесь (https://www.group-telegram.com/gonzo_ML.com/3292) и здесь (https://www.group-telegram.com/gonzo_ML.com/3312).
R1 — это reasoning модель, аналогичная OpenAI o1/o3, Google Gemini 2.0 Flash Thinking или Alibaba Cloud Qwen QwQ. Идея reasoning моделей в том, что вместо того чтобы сразу выдать ответ, модель сначала проводит некоторые рассуждения в духе Chain-of-Thought (CoT, https://www.group-telegram.com/gonzo_ML.com/1885), генеря кучу токенов с цепочками рассуждений, и лишь затем выдаёт финальный ответ. Таким образом, если раньше весь скейлинг моделей происходил на уровне компьюта во время обучения (берём больше, кидаем дальше — модель побольше и обучение подольше), то теперь модели можно дать “поразмышлять” подольше уже в inference time. Открылось новое измерения для масштабирования моделей — эра Test-time compute (https://www.group-telegram.com/gonzo_ML.com/3175).
DeepSeek-R1 — это, кажется, лучшая из открытых моделей с reasoning на сегодня, вполне конкурирующая с лучшими коммерческими. Гонка запущена, в ближайшие месяцы появятся кучи новых моделей, в том числе более скромного размера с ризонингом. Собственно уже началось, например, s1 (https://arxiv.org/abs/2501.19393).
Также можно сказать, что в NLP снова начинает работать RL.
Что именно сделано в работе про R1?
Главное достижение, мне кажется, примерно аналогично AlphaZero (и называется соответственно DeepSeek-R1-Zero): авторы показали, что для обучения ризонингу не обязательно иметь 100500 примеров для SFT, эти способности неплохо выучиваются с помощью large-scale RL, и можно вообще обойтись без “человеческих демонстраций” в виде SFT. Но если помочь cold start’у небольшим количеством SFT с хорошими примерами, то всё ещё лучше.
В качестве базовой модели взята DeepSeek-V3-Base, модель после Pre-training, но до Post-training, то есть без SFT и RL.
=== Начнём с DeepSeek-R1-Zero.
В качестве RL алгоритма взяли Group Relative Policy Optimization (GRPO), использовавшийся в DeepSeek-V3 (https://www.group-telegram.com/gonzo_ML.com/3313) и DeepSeekMath (https://arxiv.org/abs/2402.03300). Помните, что этот подход позволяет сэкономить на модели критика, которая обычно такого же размера, что и полиси модель.
Reward моделируется через систему на правилах, то есть вроде как ещё минус одна тяжёлая модель. Это выглядит аналогично Rule-based RM из пост-обучения DeepSeek-V3.
Используется два типа наград:
1) Accuracy rewards: определяют, корректен ответ или нет. В случае математических задач или кодирования это несложно.
2) Format rewards: следит за соответствием формата “мыслительного процесса”, он должен быть внутри тегов ‘<think>’ и ‘</think>’.
Neural-based RM не использовалась, потому что подвержена reward hacking, требует больших дополнительных ресурсов и вообще усложняет процесс обучения.
Используют довольно прямолинейный промпт с CoT, который требует от модели сначала подумать, а потом выдать ответ.
R1-Zero довольно неплохо прогрессирует в процессе обучения, на примере AIME 2024 за 8000 шагов добирается до качества не сильно позади OpenAI o1-0912 и выше o1-mini. Добавление мажоритарного голосования сильно повышает качество (в статье репортят результат с 64 ответами).
Подход Zero с чистым RL без SFT позволяет пронаблюдать, как модель эволюционирует по ходу обучения, и отдельный график показывает стабильный рост длины ответа. То есть модель сама выучивает, что думать дольше полезно. Так, спонтанно возникают способности к рефлексии (когда модель переоценивает предыдущие шаги) и исследование альтернативных подходов. Ничего этого заранее заложено не было.
Очень популярным стал пресловутый Aha Moment, когда модель научилась переобдумывать ответ, да ещё и сделала это очень антропоморфно.
DeepSeek-R1-Zero всё же не без недостатков: результаты модели плохо читаемы, и в них обнаруживается смесь языков, поэтому решили улучшить холодный старт модели и перед RL слегка дообучить её на хороших данных.
=== Поэтому следующий ход, DeepSeek-R1.
Для этого обучения собрали пайплайн из четырёх этапов:
1) Cold Start.
Собрали небольшое количество примеров (тысячи) с длинными цепочками CoT, чтобы зафайнтюнить модель перед обучением RL. Для этого использовали few-shot промптинг с длинными CoT в качестве примеров, явно промптили с запросом генерировать детальные ответы и использовать рефлексию с верификацией, брали результаты DeepSeek-R1-Zero и постпроцессили людьми.
Примеры содержали саммари в конце цепочки размышлений.
2) Reasoning-oriented Reinforcement Learning.
DeepSeek-V3-Base зафайнтюнили на данных предыдущего этапа и запустили тот же самый RL процесс, что и у -Zero. Модель любила мешать разные языки, особенно если они были в запросе, так что пришлось добавить отдельный language consistency reward, который был равен доле целевого языка внутри CoT. От этого есть небольшая деградация по перформансу, но лучше метрика по человеческим предпочтениям. Финальный reward был суммой accuracy на задачах и language consistency. Обучали до сходимости.
3) Rejection Sampling and Supervised Fine-Tuning.
Чекпойнт предыдущего этапа использован для сбора данных для последующего SFT. Начальные cold-start данные целились в основном в ризонинг, а данные этого этапа включают примеры из различных доменов для улучшения способностей модели в writing, role-playing и other general-purpose tasks. Среди этого микса были Reasoning и Non-Reasoning данные.
В Reasoning (600k примеров) из предыдущего чекпойнта нагенерировали новых цепочек и пофильтровали их, в том числе используя DeepSeek-V3 как судью. Из каждого промпта генерили множество сэмплов и отфильтровывали проблемные (смесь языков, длинные параграфы, блоки кода).
В Non-Reasoning (200k примеров) включены примеры для writing, factual QA, self-cognition, translation. Взяли пайплайн от DeepSeek-V3 и переиспользовали части SFT датасета от него же. Также использовали DeepSeek-V3 и для генерации.
Далее файнтюнили DeepSeek-V3-Base (не предыдущий чекпойнт?) две эпохи на итоговом датасете с 800k примеров.
4) Reinforcement Learning for all Scenarios.
Второй этап RL для улучшения helpfulness и harmlessness модели (узнаёте подход Constitutional AI?) с одновременным улучшением способностей ризонинга. Для reasoning данных использовались rule-based rewards, для общих данных использовались reward models из пайплайна DeepSeek-V3. Для helpfulness фокусировались только на финальном саммари, для harmlessness оценивали весь вывод модели. Деталей в этом месте недостаточно, но выглядит так, что запустили Constitutional AI (или RLAIF) на оба этих сигнала, а не только на harmlessness, как в оригинальной работе по CAI (https://www.group-telegram.com/gonzo_ML.com/1285).
=== Last but not least, дистилляция.
Большая тяжёлая MoE модель это хорошо, но маленькие dense модели тоже нужны. Так что задистиллировали (https://www.group-telegram.com/gonzo_ML.com/117) DeepSeek-R1 в опенсорсные Qwen и Llama. Это значит, что эти модели зафайнтюнили на выдаче DeepSeek. Использовали те самые вышеупомянутые 800k сэмплов.
Итого, надистиллировали:
* Qwen2.5-Math-1.5B
* Qwen2.5-Math-7B
* Qwen2.5-14B
* Qwen2.5-32B
* Llama-3.1-8B
* Llama-3.3-70B-Instruct
Для дистиллятов был только SFT, без RL. Наверное, если провести ещё отдельную фазу RL, то ещё лучше будет? Это отдали на откуп коммьюнити, здесь фокусировались только на полезности дистилляции.
=== Evaluations
Провели много разных evaluations, с бейзлайнами в виде DeepSeek-V3, Claude-Sonnet-3.5-1022, GPT-4o-0513, OpenAI-o1-mini, OpenAI-o1-1217. Последняя в Китае не очень доступна, её цифры взяли из официальных репортов. Не понял только, а o1-mini доступна чтоли?
По ризонингу перформанс очень достойный, R1 делит топ с OpenAI-o1-1217. Sonnet, 4o и mini явно хуже.
=== Поэтому следующий ход, DeepSeek-R1.
Для этого обучения собрали пайплайн из четырёх этапов:
1) Cold Start.
Собрали небольшое количество примеров (тысячи) с длинными цепочками CoT, чтобы зафайнтюнить модель перед обучением RL. Для этого использовали few-shot промптинг с длинными CoT в качестве примеров, явно промптили с запросом генерировать детальные ответы и использовать рефлексию с верификацией, брали результаты DeepSeek-R1-Zero и постпроцессили людьми.
Примеры содержали саммари в конце цепочки размышлений.
2) Reasoning-oriented Reinforcement Learning.
DeepSeek-V3-Base зафайнтюнили на данных предыдущего этапа и запустили тот же самый RL процесс, что и у -Zero. Модель любила мешать разные языки, особенно если они были в запросе, так что пришлось добавить отдельный language consistency reward, который был равен доле целевого языка внутри CoT. От этого есть небольшая деградация по перформансу, но лучше метрика по человеческим предпочтениям. Финальный reward был суммой accuracy на задачах и language consistency. Обучали до сходимости.
3) Rejection Sampling and Supervised Fine-Tuning.
Чекпойнт предыдущего этапа использован для сбора данных для последующего SFT. Начальные cold-start данные целились в основном в ризонинг, а данные этого этапа включают примеры из различных доменов для улучшения способностей модели в writing, role-playing и other general-purpose tasks. Среди этого микса были Reasoning и Non-Reasoning данные.
В Reasoning (600k примеров) из предыдущего чекпойнта нагенерировали новых цепочек и пофильтровали их, в том числе используя DeepSeek-V3 как судью. Из каждого промпта генерили множество сэмплов и отфильтровывали проблемные (смесь языков, длинные параграфы, блоки кода).
В Non-Reasoning (200k примеров) включены примеры для writing, factual QA, self-cognition, translation. Взяли пайплайн от DeepSeek-V3 и переиспользовали части SFT датасета от него же. Также использовали DeepSeek-V3 и для генерации.
Далее файнтюнили DeepSeek-V3-Base (не предыдущий чекпойнт?) две эпохи на итоговом датасете с 800k примеров.
4) Reinforcement Learning for all Scenarios.
Второй этап RL для улучшения helpfulness и harmlessness модели (узнаёте подход Constitutional AI?) с одновременным улучшением способностей ризонинга. Для reasoning данных использовались rule-based rewards, для общих данных использовались reward models из пайплайна DeepSeek-V3. Для helpfulness фокусировались только на финальном саммари, для harmlessness оценивали весь вывод модели. Деталей в этом месте недостаточно, но выглядит так, что запустили Constitutional AI (или RLAIF) на оба этих сигнала, а не только на harmlessness, как в оригинальной работе по CAI (https://www.group-telegram.com/gonzo_ML.com/1285).
=== Last but not least, дистилляция.
Большая тяжёлая MoE модель это хорошо, но маленькие dense модели тоже нужны. Так что задистиллировали (https://www.group-telegram.com/gonzo_ML.com/117) DeepSeek-R1 в опенсорсные Qwen и Llama. Это значит, что эти модели зафайнтюнили на выдаче DeepSeek. Использовали те самые вышеупомянутые 800k сэмплов.
Итого, надистиллировали:
* Qwen2.5-Math-1.5B
* Qwen2.5-Math-7B
* Qwen2.5-14B
* Qwen2.5-32B
* Llama-3.1-8B
* Llama-3.3-70B-Instruct
Для дистиллятов был только SFT, без RL. Наверное, если провести ещё отдельную фазу RL, то ещё лучше будет? Это отдали на откуп коммьюнити, здесь фокусировались только на полезности дистилляции.
=== Evaluations
Провели много разных evaluations, с бейзлайнами в виде DeepSeek-V3, Claude-Sonnet-3.5-1022, GPT-4o-0513, OpenAI-o1-mini, OpenAI-o1-1217. Последняя в Китае не очень доступна, её цифры взяли из официальных репортов. Не понял только, а o1-mini доступна чтоли?
По ризонингу перформанс очень достойный, R1 делит топ с OpenAI-o1-1217. Sonnet, 4o и mini явно хуже.
Для дистиллятов бейзлайном была QwQ-32B-Preview. Они тоже выглядят хорошо, например, DeepSeek-R1-Distill-Qwen-7B бьёт не-ризонинг модель GPT-4o-0513. Оно, конечно, логично, что ризонинг модель бьёт не-ризонинг, но важно, что теперь это доступная опенсорс модель, которую можно запустить у себя дома. DeepSeek-R1-14B бьём QwQ-32B-Preview, что тоже круто. А DeepSeek-R1-32B и DeepSeek-R1-70B бьют o1-mini. И это ещё коммьюнити не сделало доп.шаг RL. В общем, можно ожидать крутого развития.
Провели отдельный интересный эксперимент с Qwen-32B-Base, чтобы посмотреть куда можно дойти на чистом RL и как это соотносится с дистилляцией. Получили модель DeepSeek-R1-Zero-Qwen-32B, которая примерно соответствует QwQ-32B-Preview, но значительно слабее дистиллята DeepSeek-R1-Distill-Qwen-32B.
То есть, если хочется обучить хорошую маленькую модель, то лучше это делать через дистилляцию хорошей большой, чем убиваться, обучая её через RL. И то не факт, что получится. Это интересно, что находить хорошие маленькие модели мы пока так себе можем, через большие лучше работает.
И другой вывод -- скейлить дальше всё так же нужно, и большие модели будут лучше, и тот же R1 мог бы быть ещё лучше, если бы сам был дистиллятом из ещё более большой.
=== Что не удалось?
Process Reward Model (PRM, https://arxiv.org/abs/2211.14275), когда reward прилетает не только за финальный результат, но и за отдельные шаги CoT. На практике иногда сложно получить хорошо выделенный шаг в общем размышлении. Даже если удалось, то очень сложно оценивать его точность. Ну и оно также ведёт к reward hacking. Всё это усложняет процесс, и требует большого оверхеда. Полученные преимущества оказались ограниченными
Monte Carlo Tree Search (MCTS), как из AlphaGo 🙂 требует разделения ответа на более мелкие шаги, чтобы их пространство можно было исследовать. Модель попросили использовать отдельные теги для разных этапов размышлений. Здесь сначала использовали промптинг для нахождения ответов через MCTS с предобученной value model, а потом на найденных парах <вопрос, ответ> обучали actor и value модели, таким образом итеративно улучшая процесс.
Но это было сложно отскейлить. Пространство вариантов не так хорошо определено, как в играх. Генерация токенов экспоненциально более страшная, приходилось ограничивать максимальную глубину, а это вело к локальным оптимумам. К тому же обучить хорошую value модель не так просто, а её качество напрямую влияет на генерацию. В общем, не получилось итеративно её улучшать, это остаётся челленджем.
=== Будущее
Авторы планируют много улучшений, очень жду их R2 🙂
* Хотят улучшить function calling, multi-turn, complex role-playing, и JSON output.
* Хотят победить смешивание языков — модель оптимизирована на английский и китайский, поэтому при запросах на других языках может уходить думать на этих. Может это и не так плохо на самом деле, но пользователям непонятно.
* Модель чувствительна к промпту, few-shot стабильно ухудшает её перформанс, поэтому советуют использовать zero-shot. В принципе, это похоже на рекомендации и для o1 (https://www.deeplearning.ai/short-courses/reasoning-with-o1/).
* Хотят больше заточить модель на Software Engineering. Это вааще круто, скоро будет локальный опенсорсный copilot такими темпами.
Короче, спасибо DeepSeek, так сильно как они, мало кто продвигал всю область.
Провели отдельный интересный эксперимент с Qwen-32B-Base, чтобы посмотреть куда можно дойти на чистом RL и как это соотносится с дистилляцией. Получили модель DeepSeek-R1-Zero-Qwen-32B, которая примерно соответствует QwQ-32B-Preview, но значительно слабее дистиллята DeepSeek-R1-Distill-Qwen-32B.
То есть, если хочется обучить хорошую маленькую модель, то лучше это делать через дистилляцию хорошей большой, чем убиваться, обучая её через RL. И то не факт, что получится. Это интересно, что находить хорошие маленькие модели мы пока так себе можем, через большие лучше работает.
И другой вывод -- скейлить дальше всё так же нужно, и большие модели будут лучше, и тот же R1 мог бы быть ещё лучше, если бы сам был дистиллятом из ещё более большой.
=== Что не удалось?
Process Reward Model (PRM, https://arxiv.org/abs/2211.14275), когда reward прилетает не только за финальный результат, но и за отдельные шаги CoT. На практике иногда сложно получить хорошо выделенный шаг в общем размышлении. Даже если удалось, то очень сложно оценивать его точность. Ну и оно также ведёт к reward hacking. Всё это усложняет процесс, и требует большого оверхеда. Полученные преимущества оказались ограниченными
Monte Carlo Tree Search (MCTS), как из AlphaGo 🙂 требует разделения ответа на более мелкие шаги, чтобы их пространство можно было исследовать. Модель попросили использовать отдельные теги для разных этапов размышлений. Здесь сначала использовали промптинг для нахождения ответов через MCTS с предобученной value model, а потом на найденных парах <вопрос, ответ> обучали actor и value модели, таким образом итеративно улучшая процесс.
Но это было сложно отскейлить. Пространство вариантов не так хорошо определено, как в играх. Генерация токенов экспоненциально более страшная, приходилось ограничивать максимальную глубину, а это вело к локальным оптимумам. К тому же обучить хорошую value модель не так просто, а её качество напрямую влияет на генерацию. В общем, не получилось итеративно её улучшать, это остаётся челленджем.
=== Будущее
Авторы планируют много улучшений, очень жду их R2 🙂
* Хотят улучшить function calling, multi-turn, complex role-playing, и JSON output.
* Хотят победить смешивание языков — модель оптимизирована на английский и китайский, поэтому при запросах на других языках может уходить думать на этих. Может это и не так плохо на самом деле, но пользователям непонятно.
* Модель чувствительна к промпту, few-shot стабильно ухудшает её перформанс, поэтому советуют использовать zero-shot. В принципе, это похоже на рекомендации и для o1 (https://www.deeplearning.ai/short-courses/reasoning-with-o1/).
* Хотят больше заточить модель на Software Engineering. Это вааще круто, скоро будет локальный опенсорсный copilot такими темпами.
Короче, спасибо DeepSeek, так сильно как они, мало кто продвигал всю область.
arXiv.org
DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via...
We introduce our first-generation reasoning models, DeepSeek-R1-Zero and DeepSeek-R1. DeepSeek-R1-Zero, a model trained via large-scale reinforcement learning (RL) without supervised fine-tuning...
Собрал свои посты про DeepSeek воедино в англоязычном блоге. Когда картинки внутри текста, оно, конечно, удобнее.
1️⃣ "DeepSeek moment" (https://gonzoml.substack.com/p/deepseek-moment).
The high-level overview of what was special with DeepSeek and what models are there.
2️⃣ "DeepSeek-V3: Technical Details" (https://gonzoml.substack.com/p/deepseek-v3-technical-details)
Technical details about DeepSeek-V3 architecture: Multi-head Latent Attention (MLA), DeepSeekMoE, Multi-Token Prediction (MTP), FP8 Training, Suggestions on Hardware Design, etc
3️⃣ "DeepSeek-V3: Training" (https://gonzoml.substack.com/p/deepseek-v3-training)
The training procedure of DeepSeek-V3-Base and DeepSeek-V3. Pre-training, Post-training, Group Relative Policy Optimization (GRPO), etc.
4️⃣ "DeepSeek-R1: Open model with Reasoning" (https://gonzoml.substack.com/.../deepseek-r1-open-model...)
The DeepSeek-R1 reasoning model, similar to OpenAI o1/o3, Google Gemini 2.0 Flash Thinking, or Alibaba Cloud Qwen QwQ. DeepSeek-R1-Zero, DeepSeek-R1, and DeepSeek-R1-Distill models are covered here.
1️⃣ "DeepSeek moment" (https://gonzoml.substack.com/p/deepseek-moment).
The high-level overview of what was special with DeepSeek and what models are there.
2️⃣ "DeepSeek-V3: Technical Details" (https://gonzoml.substack.com/p/deepseek-v3-technical-details)
Technical details about DeepSeek-V3 architecture: Multi-head Latent Attention (MLA), DeepSeekMoE, Multi-Token Prediction (MTP), FP8 Training, Suggestions on Hardware Design, etc
3️⃣ "DeepSeek-V3: Training" (https://gonzoml.substack.com/p/deepseek-v3-training)
The training procedure of DeepSeek-V3-Base and DeepSeek-V3. Pre-training, Post-training, Group Relative Policy Optimization (GRPO), etc.
4️⃣ "DeepSeek-R1: Open model with Reasoning" (https://gonzoml.substack.com/.../deepseek-r1-open-model...)
The DeepSeek-R1 reasoning model, similar to OpenAI o1/o3, Google Gemini 2.0 Flash Thinking, or Alibaba Cloud Qwen QwQ. DeepSeek-R1-Zero, DeepSeek-R1, and DeepSeek-R1-Distill models are covered here.
Gonzo ML
DeepSeek moment
I have to talk about DeepSeek. These folks have absolutely crushed it — few have managed to disrupt the entire field like this. Well, there was OpenAI with ChatGPT, then Meta with open-source Llama, and now DeepSeek.