Техотчёт DeepSeekMath (2024): корпус математики и алгоритм GRPO
Конспект статьи DeepSeekMath: как из Common Crawl добыли 120 млрд математических токенов, почему arXiv не помог, и как устроен GRPO — RL без модели ценности, который через год стал стандартом обучения рассуждающих моделей.
Коротко
Заголовок раздела «Коротко»- DeepSeekMath 7B — модель для математики, которую дообучили из DeepSeek-Coder-Base-v1.5 7B на 500 млрд токенов, больше половины из них — собственный корпус математики из веба.
- Корпус DeepSeekMath — 120 млрд математических токенов из Common Crawl, собранных итеративно: классификатор fastText ищет страницы, похожие на затравку, потом по найденным страницам находят новые математические домены, размечают их вручную и переобучают классификатор. Четыре итерации — 35,5 млн страниц.
- Контрольные результаты: 51,7% на MATH без калькулятора и без голосования, 60,9% при самосогласованности по 64 выборкам. Для 2024 года это уровень закрытых моделей-гигантов.
- Код помогает математике. Обучение на коде перед математикой улучшает и решение задач кодом, и обычные рассуждения. А вот arXiv не помогает: обучение только на статьях arXiv не улучшает ничего, а иногда и портит.
- GRPO — главный вклад. Из PPO убирают модель ценности (critic): базовую линию считают как среднее по группе из ответов на один и тот же вопрос. Память уменьшается почти вдвое, а качество растёт.
- Честный раздел «почему RL работает»: RL улучшает Maj@K (голосование по выборкам), но не улучшает Pass@K. То есть он не добавляет новых умений, а делает распределение ответов надёжнее.
Как читать вместе с курсом
Заголовок раздела «Как читать вместе с курсом»| Раздел отчёта | О чём | Куда в курсе |
|---|---|---|
| §2.1–2.2 | конвейер сбора корпуса из Common Crawl, деконтаминация | 5.1.2 «Данные для претрейна» |
| §2.3 | DeepSeekMath-Base 7B: состав данных и результаты | 7.3.1 «Бенчмарки» |
| §3 | SFT на 776 тыс. примеров: CoT, PoT, решение с инструментами | 6.1.2 «SFT» |
| §4.1 GRPO | формулы, оценка KL, награды по результату и по шагам | 6.4.1 «GRPO» |
| §5.1 | уроки претрейна: код помогает, arXiv — нет | 5.1.2 |
| §5.2 | единая рамка для SFT / RFT / DPO / PPO / GRPO; Maj@K против Pass@K | 6.4.3 «Варианты GRPO» |
Если времени мало — читайте §4.1 и §5.2: это ядро, на которое ссылаются все последующие работы по RL для рассуждений.
Как собрали 120 млрд токенов математики
Заголовок раздела «Как собрали 120 млрд токенов математики»Задача: в Common Crawl есть математика, но её мало и она перемешана со всем остальным. Конвейер — цикл из четырёх шагов, повторённый четыре раза.
flowchart LR S["Затравка: OpenWebMath"] --> F["1. Обучаем fastText (500K + / 500K −)"] F --> R["2. Ищем похожие страницы в Common Crawl (40 млрд страниц после дедупликации)"] R --> D["3. Находим математические домены: собрано более 10% страниц домена"] D --> A["4. Размечаем вручную пути URL внутри домена"] A --> S2["Пополняем затравку"] S2 --> F
Детали, которые делают это воспроизводимым:
- Классификатор. fastText: 500 тыс. положительных примеров из OpenWebMath и 500 тыс. отрицательных — случайных страниц Common Crawl. Размерность векторов 256, learning rate 0,1, n-граммы до 3 слов, минимум 3 вхождения слова, 3 эпохи.
- Сколько оставлять. Страницы ранжируют по оценке классификатора и берут верхушку. Сколько именно — проверяли претрейном на верхних 40, 80, 120 и 160 млрд токенов. В первой итерации взяли 40 млрд.
- Поиск доменов. Домен — это все страницы с одним базовым URL. Если в первую итерацию попало больше 10%
страниц домена, домен считается математическим (пример из статьи —
mathoverflow.net). Внутри таких доменов руками размечают разделы с математикой (mathoverflow.net/questions), и все их страницы добавляют в затравку. - Остановка. На четвёртой итерации 98% найденного уже было собрано на третьей — сбор прекратили. Итог: 35,5 млн страниц, 120 млрд токенов.
- Деконтаминация. Из корпуса удаляют страницы, пересекающиеся с тестами: если в тексте есть 10-грамма, точно совпадающая с подстрокой из GSM8K, MATH, CMATH или AGIEval, страница выбрасывается. Для коротких фрагментов (от 3 грамм) — точное совпадение.
Состав данных для обучения DeepSeekMath-Base 7B (500 млрд токенов поверх DeepSeek-Coder-Base-v1.5 7B): 56% корпус DeepSeekMath, 4% AlgebraicStack, 10% arXiv, 20% код с GitHub, 10% обычный текст из Common Crawl на английском и китайском. Максимальный learning rate 4,2e-4, батч 10 млн токенов.
Два урока про данные
Заголовок раздела «Два урока про данные»Код помогает математике. Это популярная гипотеза, которую обычно не проверяют. Здесь проверили на модели 1,3B двумя способами:
- Две стадии. 400 млрд токенов кода → 150 млрд токенов математики. Против контроля: 400 млрд обычных токенов → те же 150 млрд математики. Код выигрывает и в решении задач программой, и без инструментов: например, на GSM8K без инструментов 21,9% против 19,1% у контроля (а без обучения математике вовсе — 2,9%).
- Одна стадия. Смесь 400 млрд кода и 150 млрд математики: смесь лечит катастрофическое забывание кода, которое возникает при двухстадийном обучении, но решение задач без инструментов при этом страдает.
arXiv не помогает. Контринтуитивный результат. Обучали 1,3B на 150 млрд токенов и 7B на 40 млрд токенов на двух корпусах статей (MathPile, 8,9 млрд токенов; ArXiv-RedPajama, 28 млрд токенов) — ни заметных улучшений, ни пользы для формальных доказательств в Isabelle; местами результаты даже падали. Авторы честно перечисляют, чего они не проверили: сочетание arXiv с другими данными, другие задачи и больший масштаб модели.
Как учили: SFT, потом RL
Заголовок раздела «Как учили: SFT, потом RL»SFT. 776 тыс. примеров на английском и китайском в трёх форматах: цепочка рассуждений (цепочка рассужденийцепочка рассужденийEN chain of thought (CoT)), «программа рассуждений» (решение кодом) и смешанный формат с вызовом инструментов. Английская часть — размеченные GSM8K и MATH плюс подмножество MathInstruct и Lila-OOD; китайская — задачи школьной программы K-12 по 76 подтемам. Обучение: 500 шагов, батч 256, постоянный learning rate 5e-5, длина контекста 4096.
RL. 144 тыс. вопросов из GSM8K и MATH в формате цепочки рассуждений (остальные задачи SFT намеренно убрали, чтобы отдельно посмотреть на перенос). Модель наград обучена от DeepSeekMath-Base 7B с learning rate 2e-5. GRPO: learning rate политики 1e-6, коэффициент KL 0,04, 64 выборки на вопрос, максимальная длина 1024, батч 1024, по одному обновлению политики после каждого этапа сбора данных.
Итог: DeepSeekMath-RL 7B — 88,2% на GSM8K и 51,7% на MATH с цепочкой рассуждений. Важно, что модель улучшилась на всех бенчмарках, включая те, которых в RL-данных не было.
GRPO: RL без модели ценности
Заголовок раздела «GRPO: RL без модели ценности»Что не так с PPO
Заголовок раздела «Что не так с PPO»В PPO оптимизируют суррогатную цель с отсечением (клиппингом):
Здесь — отношение вероятностей нового и старого поведения на токене, а — преимущество (преимуществопреимущество (advantage)EN advantageA = r − b или A(s, a) = Q(s, a) − V(s): насколько действие лучше среднего в этой ситуации.), которое считают через обобщённая оценка преимуществаобобщённая оценка преимущества (GAE)EN generalized advantage estimation (GAE)Schulman и др., 2015. Смешивает оценки преимущества разной длины с коэффициентом λ. по наградам и обученной функции ценности . Штраф за отход от исходной модели добавляют прямо в награду каждого токена: .
Две проблемы:
- Функция ценности — обычно ещё одна модель размером с политику. Это память и вычисления.
- В задачах с LLM награду обычно даёт модель наград только за весь ответ целиком. Учить по такому сигналу точную потокенную оценку ценности трудно.
Идея GRPO
Заголовок раздела «Идея GRPO»На один вопрос сэмплируем группу ответов старой политикой. Базовая линия — среднее по группе, а не предсказание критика:
то есть награда ответа, нормированная внутри группы, присваивается всем токенам этого ответа. Цель:
Два отличия от PPO, кроме отсутствия критика:
- KL вынесен из награды прямо в функцию потерь. Так расчёт преимущества не смешивается с регуляризацией.
- KL оценивается иначе — несмещённой оценкой, которая всегда неотрицательна (её называют оценкой k3): Проверьте словами: если обозначить отношение , выражение равно ; при (модели совпадают) это ноль, а при любом другом — положительное число.
Три режима
Заголовок раздела «Три режима»- Награда по результату (outcome supervision): одна награда за весь ответ, нормируется по группе, присваивается всем токенам. Это основной режим и именно он потом будет использован в R1.
- Награда по шагам (process supervision): модель наград оценивает конец каждого шага рассуждения. Все награды нормируются по всем шагам всех ответов группы, а преимущество токена — сумма нормированных наград всех последующих шагов. Полезно, когда одна итоговая оценка слишком груба.
- Итеративный GRPO. По мере обучения старая модель наград перестаёт поспевать за политикой. Тогда: собираем новые данные для модели наград из выборок политики, дообучаем её с повторным проигрыванием 10% старых данных, переназначаем опорную модель равной текущей политике и продолжаем. Авторы отмечают, что больше всего даёт первая итерация.
Единая рамка: чем похожи SFT, RFT, DPO, PPO и GRPO
Заголовок раздела «Единая рамка: чем похожи SFT, RFT, DPO, PPO и GRPO»Авторы записывают градиент любого из этих методов в одном виде:
Отличаются методы тремя вещами:
| Метод | Источник данных | Сигнал награды | Коэффициент градиента |
|---|---|---|---|
| SFT | отобранные человеком ответы | — | 1 |
| RFT | ответы SFT-модели (офлайн) | правило | зависит от правильности |
| DPO | пары ответов SFT-модели | правило | из формулы DPO |
| Online RFT | ответы текущей политики | правило | зависит от правильности |
| PPO | ответы текущей политики | модель наград | через критика и GAE |
| GRPO | группа ответов текущей политики | модель наград | нормировка внутри группы |
Что из этого следует практически: онлайновость важнее алгоритма. Методы, которые учатся на свежих выборках текущей политики (Online RFT, PPO, GRPO), заметно лучше офлайновых (RFT, DPO) — модель исправляет именно свои сегодняшние ошибки, а не вчерашние.
Честный раздел: почему RL вообще работает
Заголовок раздела «Честный раздел: почему RL вообще работает»Авторы сравнивают две метрики на 64 выборках при температуре 0,7:
- Pass@K — доля задач, где хотя бы одна из выборок верна. Это грубая мера «потенциала» модели.
- Maj@K — доля задач, где верен самый частый ответ среди выборок (самосогласованность).
Результат: RL поднимает Maj@K и не поднимает Pass@K. Вывод авторов: RL не прибавляет фундаментальных способностей, он делает распределение ответов надёжнее — вытаскивает правильный ответ наверх из тех, что модель и так умела генерировать.
Авторы сами называют вероятную причину: в RL брали только вопросы из этапа SFT и обычное nucleus-сэмплирование. В планах у них — вопросы вне распределения и продвинутые стратегии декодирования (поиск по дереву), а также эффективный инференс, от которого зависит, как много модель успевает исследовать.
Что сделать руками
Заголовок раздела «Что сделать руками»- Соберите мини-конвейер данных. Возьмите 2–3 тысячи страниц из любого открытого дампа, обучите fastText на затравке из нескольких сотен математических текстов и посмотрите, что он вытащит. Это прямое продолжение практики урока 5.1.2.
- Проверьте оценку KL. Постройте график для от 0,2 до 3 и сравните с (смещённая оценка) и с . Убедитесь, что k3 всегда неотрицательна.
- Посчитайте преимущества группы руками. Возьмите группу из 8 наград , посчитайте среднее, стандартное отклонение и нормированные преимущества. Проверьте: что будет, если все награды одинаковы (вырожденная группа)? Это тот самый случай, который чинят DAPO и другие варианты (урок 6.4.3).
- Запустите GRPO. Практика курса — урок 6.4.5: маленькая модель, проверяемая награда, 4× RTX 4080.
Словарик
Заголовок раздела «Словарик»| EN | RU |
|---|---|
| Group Relative Policy Optimization (GRPO) | групповая относительная оптимизация политики |
| value model / critic | модель ценности, критик |
| advantage | преимущество |
| Generalized Advantage Estimation (GAE) | обобщённая оценка преимущества |
| clipping | отсечение (клиппинг) |
| KL penalty / unbiased KL estimator | штраф KL / несмещённая оценка KL |
| outcome / process supervision | награда по результату / по шагам |
| iterative RL | итеративный RL (с обновлением модели наград) |
| rejection sampling fine-tuning (RFT) | дообучение на отобранных выборках |
| chain-of-thought (CoT) / program-of-thought (PoT) | цепочка рассуждений / решение программой |
| tool-integrated reasoning | рассуждение с вызовом инструментов |
| Pass@K / Maj@K | хотя бы одна верная из K / верен самый частый из K |
| decontamination | деконтаминация (чистка от тестовых данных) |