Перейти к содержимому
ПереводыDeepSeek

Техотчёт 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): базовую линию считают как среднее по группе из GG ответов на один и тот же вопрос. Память уменьшается почти вдвое, а качество растёт.
  • Честный раздел «почему RL работает»: RL улучшает Maj@K (голосование по KK выборкам), но не улучшает Pass@K. То есть он не добавляет новых умений, а делает распределение ответов надёжнее.
Раздел отчётаО чёмКуда в курсе
§2.1–2.2конвейер сбора корпуса из Common Crawl, деконтаминация5.1.2 «Данные для претрейна»
§2.3DeepSeekMath-Base 7B: состав данных и результаты7.3.1 «Бенчмарки»
§3SFT на 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@K6.4.3 «Варианты GRPO»

Если времени мало — читайте §4.1 и §5.2: это ядро, на которое ссылаются все последующие работы по RL для рассуждений.

Задача: в 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
Итеративный сбор математического корпуса (схема по §2.1 отчёта)

Детали, которые делают это воспроизводимым:

  • Классификатор. 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. 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-данных не было.

В PPO оптимизируют суррогатную цель с отсечением (клиппингом):

JPPO(θ)=E[1∣o∣∑t=1∣o∣min⁡(ρtAt, clip(ρt,1−ε,1+ε)At)],ρt=πθ(ot∣q,o<t)πθold(ot∣q,o<t).\mathcal{J}_\text{PPO}(\theta) = \mathbb{E}\Big[\frac{1}{|o|}\sum_{t=1}^{|o|} \min\big(\rho_t A_t,\ \mathrm{clip}(\rho_t, 1-\varepsilon, 1+\varepsilon) A_t\big)\Big], \qquad \rho_t = \frac{\pi_\theta(o_t \mid q, o_{<t})}{\pi_{\theta_\text{old}}(o_t \mid q, o_{<t})}.

Здесь ρt\rho_t — отношение вероятностей нового и старого поведения на токене, а AtA_t — преимущество (преимуществопреимущество (advantage)EN advantageA = r − b или A(s, a) = Q(s, a) − V(s): насколько действие лучше среднего в этой ситуации.), которое считают через обобщённая оценка преимуществаобобщённая оценка преимущества (GAE)EN generalized advantage estimation (GAE)Schulman и др., 2015. Смешивает оценки преимущества разной длины с коэффициентом λ. по наградам и обученной функции ценности VψV_\psi. Штраф за отход от исходной модели добавляют прямо в награду каждого токена: rt=rφ(q,o≤t)−βlog⁡πθ(ot∣q,o<t)πref(ot∣q,o<t)r_t = r_\varphi(q, o_{\le t}) - \beta \log \frac{\pi_\theta(o_t \mid q, o_{<t})}{\pi_\text{ref}(o_t \mid q, o_{<t})}.

Две проблемы:

  1. Функция ценности — обычно ещё одна модель размером с политику. Это память и вычисления.
  2. В задачах с LLM награду обычно даёт модель наград только за весь ответ целиком. Учить по такому сигналу точную потокенную оценку ценности трудно.

На один вопрос qq сэмплируем группу ответов o1,…,oGo_1, \dots, o_G старой политикой. Базовая линия — среднее по группе, а не предсказание критика:

A^i,t=r~i=ri−mean(r)std(r),\hat{A}_{i,t} = \tilde{r}_i = \frac{r_i - \mathrm{mean}(\mathbf{r})}{\mathrm{std}(\mathbf{r})},

то есть награда ответа, нормированная внутри группы, присваивается всем токенам этого ответа. Цель:

JGRPO(θ)=E[1G∑i=1G1∣oi∣∑t=1∣oi∣(min⁡(ρi,tA^i,t, clip(ρi,t,1−ε,1+ε)A^i,t)−β DKL ⁣[πθ∥πref])].\mathcal{J}_\text{GRPO}(\theta) = \mathbb{E}\Big[\frac{1}{G}\sum_{i=1}^{G}\frac{1}{|o_i|}\sum_{t=1}^{|o_i|} \Big(\min\big(\rho_{i,t}\hat{A}_{i,t},\ \mathrm{clip}(\rho_{i,t}, 1-\varepsilon, 1+\varepsilon)\hat{A}_{i,t}\big) - \beta\, \mathbb{D}_\text{KL}\!\left[\pi_\theta \Vert \pi_\text{ref}\right]\Big)\Big].

Два отличия от PPO, кроме отсутствия критика:

  • KL вынесен из награды прямо в функцию потерь. Так расчёт преимущества не смешивается с регуляризацией.
  • KL оценивается иначе — несмещённой оценкой, которая всегда неотрицательна (её называют оценкой k3): DKL ⁣[πθ∥πref]=πref(oi,t∣q,oi,<t)πθ(oi,t∣q,oi,<t)−log⁡πref(oi,t∣q,oi,<t)πθ(oi,t∣q,oi,<t)−1.\mathbb{D}_\text{KL}\!\left[\pi_\theta \Vert \pi_\text{ref}\right] = \frac{\pi_\text{ref}(o_{i,t} \mid q, o_{i,<t})}{\pi_\theta(o_{i,t} \mid q, o_{i,<t})} - \log \frac{\pi_\text{ref}(o_{i,t} \mid q, o_{i,<t})}{\pi_\theta(o_{i,t} \mid q, o_{i,<t})} - 1. Проверьте словами: если обозначить отношение uu, выражение равно u−log⁡u−1u - \log u - 1; при u=1u = 1 (модели совпадают) это ноль, а при любом другом u>0u > 0 — положительное число.
  • Награда по результату (outcome supervision): одна награда за весь ответ, нормируется по группе, присваивается всем токенам. Это основной режим и именно он потом будет использован в R1.
  • Награда по шагам (process supervision): модель наград оценивает конец каждого шага рассуждения. Все награды нормируются по всем шагам всех ответов группы, а преимущество токена — сумма нормированных наград всех последующих шагов. Полезно, когда одна итоговая оценка слишком груба.
  • Итеративный GRPO. По мере обучения старая модель наград перестаёт поспевать за политикой. Тогда: собираем новые данные для модели наград из выборок политики, дообучаем её с повторным проигрыванием 10% старых данных, переназначаем опорную модель равной текущей политике и продолжаем. Авторы отмечают, что больше всего даёт первая итерация.

Авторы записывают градиент любого из этих методов в одном виде:

∇θJA(θ)=E(q,o)∼D[1∣o∣∑t=1∣o∣GCA(q,o,t,πrf) ∇θlog⁡πθ(ot∣q,o<t)].\nabla_\theta \mathcal{J}_\mathcal{A}(\theta) = \mathbb{E}_{(q,o)\sim \mathcal{D}} \Big[\frac{1}{|o|}\sum_{t=1}^{|o|} GC_\mathcal{A}(q, o, t, \pi_{rf})\, \nabla_\theta \log \pi_\theta(o_t \mid q, o_{<t})\Big].

Отличаются методы тремя вещами:

МетодИсточник данныхСигнал наградыКоэффициент градиента
SFTотобранные человеком ответы—1
RFTответы SFT-модели (офлайн)правилозависит от правильности
DPOпары ответов SFT-моделиправилоиз формулы DPO
Online RFTответы текущей политикиправилозависит от правильности
PPOответы текущей политикимодель наградчерез критика и GAE
GRPOгруппа ответов текущей политикимодель награднормировка внутри группы

Что из этого следует практически: онлайновость важнее алгоритма. Методы, которые учатся на свежих выборках текущей политики (Online RFT, PPO, GRPO), заметно лучше офлайновых (RFT, DPO) — модель исправляет именно свои сегодняшние ошибки, а не вчерашние.

Авторы сравнивают две метрики на 64 выборках при температуре 0,7:

  • Pass@K — доля задач, где хотя бы одна из KK выборок верна. Это грубая мера «потенциала» модели.
  • Maj@K — доля задач, где верен самый частый ответ среди KK выборок (самосогласованность).

Результат: RL поднимает Maj@K и не поднимает Pass@K. Вывод авторов: RL не прибавляет фундаментальных способностей, он делает распределение ответов надёжнее — вытаскивает правильный ответ наверх из тех, что модель и так умела генерировать.

Авторы сами называют вероятную причину: в RL брали только вопросы из этапа SFT и обычное nucleus-сэмплирование. В планах у них — вопросы вне распределения и продвинутые стратегии декодирования (поиск по дереву), а также эффективный инференс, от которого зависит, как много модель успевает исследовать.

  1. Соберите мини-конвейер данных. Возьмите 2–3 тысячи страниц из любого открытого дампа, обучите fastText на затравке из нескольких сотен математических текстов и посмотрите, что он вытащит. Это прямое продолжение практики урока 5.1.2.
  2. Проверьте оценку KL. Постройте график u−log⁡u−1u - \log u - 1 для uu от 0,2 до 3 и сравните с log⁡u\log u (смещённая оценка) и с 12(log⁡u)2\frac{1}{2}(\log u)^2. Убедитесь, что k3 всегда неотрицательна.
  3. Посчитайте преимущества группы руками. Возьмите группу из 8 наград {1,1,0,0,0,1,0,0}\{1,1,0,0,0,1,0,0\}, посчитайте среднее, стандартное отклонение и нормированные преимущества. Проверьте: что будет, если все награды одинаковы (вырожденная группа)? Это тот самый случай, который чинят DAPO и другие варианты (урок 6.4.3).
  4. Запустите GRPO. Практика курса — урок 6.4.5: маленькая модель, проверяемая награда, 4× RTX 4080.
ENRU
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деконтаминация (чистка от тестовых данных)