gonzo-обзоры ML статей (@gonzo_ml)の最新投稿

gonzo-обзоры ML статей のテレグラム投稿

gonzo-обзоры ML статей
Авторы:
Гриша Сапунов, ранее руководитель разработки Яндекс-Новостей, ныне CTO Intento. Области интересов: AI/ML/DL, биоинформатика.
Лёша Тихонов, ранее аналитик в Яндексе, автор Автопоэта, Нейронной Обороны... Области интересов: discrete domain, NLP, RL.
21,332 人の購読者
2,229 枚の写真
1 本の動画
最終更新日 11.03.2025 07:43

類似チャンネル

LLM под капотом
12,485 人の購読者
epsilon correct
7,195 人の購読者

gonzo-обзоры ML статей によってTelegramで共有された最新のコンテンツ

gonzo-обзоры ML статей

12 Feb, 11:42

2,260

s1: Simple test-time scaling
Niklas Muennighoff, Zitong Yang, Weijia Shi, Xiang Lisa Li, Li Fei-Fei, Hannaneh Hajishirzi, Luke Zettlemoyer, Percy Liang, Emmanuel Candès, Tatsunori Hashimoto
Статья: https://arxiv.org/abs/2501.19393
Репа: https://github.com/simplescaling/s1

Продолжая тему про Test-time compute (https://t.me/gonzo_ML/3175). SFT на маленьком датасете в 1k примеров + простые стратегии чтобы заставить модель подумать подольше — и вуаля, бьём o1-preview на MATH and AIME24!

DeepSeek-R1 (https://t.me/gonzo_ML/3319) безусловно был достижением в обучении модели с ризонингом через RL, и в этом смысле открытый мир приблизился или даже догнал достижения OpenAI в лице o1, но эта работа не целилась в демонстрацию test-time scaling behaviour. В текущей работе совмещают и сильный ризонинг (но без RL), и скейлинг.

Рецепт простой и дешёвый.

1) Собираем датасет s1K из 1000 тщательно отобранных пар вопросов и ответов с reasoning traces, дистиллированных из Gemini Thinking Experimental.

2) Делаем на этом датасете SFT (PyTorch FSDP, 5 эпох, BF16) открытой модели (Qwen2.5- 32B-Instruct), в течение 26 минут на 16 H100 GPUs (это может стоить примерно от $25). Получаем модель s1-32B.

3) После обучения контролируем количество test-time compute через прямолинейную стратегию budget forcing, которая заключается в том, что 1) если модель нагенерировала уже слишком много токенов, то принудительно заканчиваем процесс добавлением end-of-thinking токена, а 2) если модель нагенерировала мало, то наоборот не даём её добавить этот токен окончания размышлений, а добавляем “Wait” и стимулируем модель подумать ещё.

4) Профит! График демонстрирует test-time scaling. Да ещё и получаем модель на Парето-фронте по sample efficiency, лучше o1-preview.

Модель полностью открыта: веса, данные и код.

Теперь чуть подробнее про отдельные шаги.


📔Датасет

Датасет собирался в два этапа. Сначала собрали 59K (59,029) вопросов из 16 источников.

Взяли задачи из имеющихся датасетов (NuminaMATH, AIME, OlympicArena, OmniMath, AGIEval) и создали пару своих, s1-prob с вопросами по теории вероятности (182 штуки), и s1-teasers с головоломками (23 штуки). Вообще не очень привычно слышать про датасеты из 23 примеров…

Для каждого вопроса сгенерировали reasoning trace и решение через Google Gemini Flash Thinking API, получили 59K триплетов <вопрос, размышление, решение>. Почистили этот набор против имеющихся вопросов для evaluation через 8-граммы и дедупликацию.

Можно было сразу на этих 59k и обучать, но хотели найти минимальную конфигурацию, поэтому устроили три стадии фильтрации.

1) Качество (Quality) должно быть высоким. Смотрим на сэмплы и убираем проблемные примеры, например, с плохим форматированием. Уменьшили датасет до 51,581 примеров и из них отобрали 384 в финальный 1k датасет.

2) Сложность (Difficulty) должна быть на уровне и требовать ризонинга. Выкинули слишком лёгкие примеры, которые решил Qwen2.5-7B-Instruct или Qwen2.5-32B-Instruct. Корректность оценивал Claude 3.5 Sonnet относительно референса. Сложность оценивали по длине цепочки рассуждений, подразумевая, что более сложный вопрос требует более длинной цепочки. Сократили датасет до 24,496 примеров.

3) Разнообразие (Diversity): датасеты должны быть из разных областей и с разными задачами. Sonnet классифицировал задачи по Mathematics Subject Classification (MSC), далее выбирали случайно один из доменов, из него сэмплили задачу так, чтобы предпочитались более длинные рассуждения, и повторяли пока не наберётся 1000 примеров. Итого набрали 50 разных доменов.


⚒️Test-time scaling

Авторы разделяют методы скейлинга на последовательные (результат зависит от предыдущих размышлений) и параллельные (типа голосования большинства). Сфокусировались на последовательных, потому что по мнению авторов они должны скейлиться лучше.
gonzo-обзоры ML статей

12 Feb, 11:42

1,960

Предложили вышеупомянутый метод Budget forcing, где можно задать минимальное и максимальное количество токенов в test time. Для форсирования ответа используется end-of-thinking token delimiter и строка “Final Answer:”, для форсирования размышлений — подавление генерации end-of-thinking token delimiter и строка “Wait”.

В качестве бейзлайна сравнивали с (I) Conditional length-control methods, когда в промпте говорят, какой длины ответ нужен (там внутри несколько разных методов про длину в токенах, в шагах и общая рекомендация генерить подлиннее или покороче), и (II) Rejection sampling, когда генерим, пока не попадём в заданный бюджет.


🏁Evaluation

При оценке смотрим не только на точность, но и на контролируемость. На фиксированном бенчмарке варьируем test-time compute и получаем кусочно-линейную функцию с зависимостью точности от длины размышлений.

Измеряем несколько метрик:
* Control — доля ответов вписавшихся в бюджет (мин/макс количество токенов).
* Scaling — наклон кусочно-линейной функции, положительный наклон хорошо и чем больше, тем лучше.
* Performance — максимальное качество на бенчмарке.

Проверяли на AIME24, MATH500 и GPQA Diamond.

Сравнивались с серией o1 от OpenAI, DeepSeek R1 (оригинал и 32B дистиллят), Qwen QwQ-32B-preview, Sky-T1-32B-Preview, Bespoke32B, Google Gemini 2.0 Flash Thinking Experimental.

В целом у модели достойный результат, качество приближается к Gemini. Перформанс растёт с увеличением количества размышлений. На AIME24 после шести Wait происходит насыщение. Majority voting не скейлится так хорошо, как форсирование более длинной цепочки размышлений.

Абляции показали, что от датасета много зависит. Если пожертвовать одним из трёх принципов, качество выходит хуже. Обучение на полном 59K датасете даёт более высокое качество (но не то чтобы прям сильно), ценой сильно больших ресурсов, 394 H100 GPU часов против 7.

Среди разных методов контроля длины budget forcing даёт максимальное качество на AIME24, отличную (100%) контролируемость и хороший скейлинг (у class-conditional control он повыше).

Если попробовать просто сэмплить ответы нужной длины и отбрасывать что не вписывается (Rejection sampling), то так не работает, тренд скейлинга негативный — модель выдаёт более хороший результат при более коротком ответе (но для этого надо сэмплить сильно больше раз).


Это всё очень прикольный результат, чисто SFT очень малого размера. Интересно, что будет, если таки совместить это с последующим RL.
gonzo-обзоры ML статей

11 Feb, 22:38

2,810

Метод

Основным затруднением при оптимизации весов и активаций в низкой точности является высокая степень шума. Напомню, что операция квантизации недифференцируема, и дабы все можно было оптимизировать градиентными методами применяют трюк имени Бенджио под названием STE (небось, тоже спиздил у Шмидхубера) , где градиент просто пробрасывается через недифференцируемую операцию (как будто вместо нее стоит функция y=x). Но при низких битностнях, такая оценка сильно расходится от истинного градиента и не сходится нормально.

Авторы формулируют задачу оптимизации STE, как минимизацию между оцененным псевдоградиентом и истинным. Предполагая гладкость функции потерь по весам, можно оценить ошибку градиента, как константа на ошибку квантизации весов.
Веса модели разделяют на 2️⃣ группы - с ошибкой квантизации ниже и выше некоторого порога. На шаге оптимизации учитывают только градиенты от весов с ошибкой ниже заданного порога, ибо вторые как раз и вносят шум и нестабильность в обучение.

Далее, дабы работать с более регулярным распределением весов/активаций, которое проще квантизовать, применяют пару трюков:

1️⃣ Чтобы привести распределение в более удобо квантизуемый вид применяют известный старым читателям канала трюк - вращения Адамаровыми матрицами как весов и активаций. В результате получают что-то близкое к гауссиане.
2️⃣ Дабы привести все приблизительно к N(0, 1) применяют RMS нормализацию к результату шага 1. А для N(0, 1) можно уже численно найти оптимальный скейлинг фактор для решетки квантизации и пользоваться им.

То есть в итоге алгоритм выглядит следующим образом:

🎯 На прямом проходе вращаем и нормализуем веса, сохраняя Адамаровы матрицы
🎯 На обратном проходе применяем обратное Адамарово преобразование и маскируем градиент

В Ablation показывают, что trust estimator (отбрасывание градиентов по шумным весам) в связке с Адамаровыми вращениями дает хорошую близость с истинным градиентом, в то время как vanilla STE и без Адамара корреляция низкая.
gonzo-обзоры ML статей

11 Feb, 22:38

3,002

Эксперименты

Обучают семейство моделей размером от 30 до 800М параметров архитектуры 🦙-2 на C4 с более-менее стандартным рецептом обучения. По умолчанию отношение количества данных к числу параметров D/N=100.

Как меру качества берут перплексию на отложенной выборке.

QuEST работает лучше, чем PACT и LSQ бейзлайны.

Далее фитируют scaling law, который отличается от оригинального из статьи про Шиншиллу фактором eff(P) - поправкой на битность параметра (eff(P) = 1 для fp16). Исходя из эмпирических графиков лосса для моделей разного размера и битности, получают Парето-оптимальность в 4-х битах. 4 битный параметр эффективно равен 0.7 fp16, но модель-то при этом в 4 раза меньше, отсюда выигрыш в 2.7 раз по эффективности.

Метод пробуют на FP4 и 2:4 sparsity + INT4, где все тоже неплохо заводится.

В ablation показывают, что Адамаровы вращения дают некоторый прирост качества на W1A1 и W2A2, при этом лишь немного замедляя инференс.

Вывод

Как мне кажется, довольно обнадеживающий экспериментальный результат. Все больше и больше подтверждений тому, что следует с самого начала учить в низкой точности дабы нищеброды потом уже не просили униженно GGUF, GPTQ или AWQ кванты. Интересно, можно ли пробить ниже еще порог Парето-оптимальности по битностям весов/активаций или мы упираемся уже в некий потолок? Ждем экспериментов на большем масшабе. Глядишь Meta, Qwen или DeepSeek порадуют.
gonzo-обзоры ML статей

08 Feb, 21:20

2,459

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://t.me/gonzo_ML/3292) и здесь (https://t.me/gonzo_ML/3312).

R1 — это reasoning модель, аналогичная OpenAI o1/o3, Google Gemini 2.0 Flash Thinking или Alibaba Cloud Qwen QwQ. Идея reasoning моделей в том, что вместо того чтобы сразу выдать ответ, модель сначала проводит некоторые рассуждения в духе Chain-of-Thought (CoT, https://t.me/gonzo_ML/1885), генеря кучу токенов с цепочками рассуждений, и лишь затем выдаёт финальный ответ. Таким образом, если раньше весь скейлинг моделей происходил на уровне компьюта во время обучения (берём больше, кидаем дальше — модель побольше и обучение подольше), то теперь модели можно дать “поразмышлять” подольше уже в inference time. Открылось новое измерения для масштабирования моделей — эра Test-time compute (https://t.me/gonzo_ML/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://t.me/gonzo_ML/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, когда модель научилась переобдумывать ответ, да ещё и сделала это очень антропоморфно.
gonzo-обзоры ML статей

08 Feb, 21:20

1,813

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://t.me/gonzo_ML/1285).


=== Last but not least, дистилляция.

Большая тяжёлая MoE модель это хорошо, но маленькие dense модели тоже нужны. Так что задистиллировали (https://t.me/gonzo_ML/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 явно хуже.
gonzo-обзоры ML статей

08 Feb, 21:20

1,849

Для дистиллятов бейзлайном была 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, так сильно как они, мало кто продвигал всю область.
gonzo-обзоры ML статей

08 Feb, 09:09

3,434

Парето фронтир с ценами и перформансом LLM на Chatbot Arena

https://lmarena.ai/?price
gonzo-обзоры ML статей

07 Feb, 15:45

2,765

Сегодня обсудим процедуру обучения DeepSeek-V3. Архитектура и технические решения были разобраны в предыдущем посте (https://t.me/gonzo_ML/3292).

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

Из технически важных моментов хочется ещё раз обратить внимание на важность обучения в FP8 из предыдущего поста (https://t.me/gonzo_ML/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 оригинальной модели.
gonzo-обзоры ML статей

07 Feb, 15:45

2,710

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://t.me/gonzo_ML/3275), хотя конечно тут мутно, что именно там Дарио репортит, но вряд ли это полная стоимость включая эксперименты и т.п.

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

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

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


Что особенно хочется отметить по результатам разбора DeepSeek? DeepSeek — это не просто топовая модель, конкурент западных. Это полноценная экосистема научных работ, тут под десяток разных наработок из их предыдущих статей. Интересно, опубликуют ли свой фреймворк для обучения? Это пока, кажется, один из основных missing parts.