Aivaro
  • Contents
  • Questions
  • Practice
  • Wiki
  • Community materials
  • Tests
  • Search
✈Telegram @ai_varo
RUEN中文
…
Contents/Questions/#989

English translation is not available yet. Showing Russian content.

Что такое GRPO (Group Relative Policy Optimization)? Как он отличается от PPO (нет Value model, усреднение по группе ответов)?

Краткий тезис

Group Relative Policy Optimization (GRPO) — это метод оптимизации политики без использования отдельной Value model («критика»), предложенный компанией DeepSeek в контексте обучения с подкреплением для языковых моделей, особенно задач рассуждения (reasoning). Вместо того чтобы предсказывать ценность состояния (advantage) с помощью нейросети-критика, GRPO генерирует несколько ответов на один промпт, усредняет их вознаграждения (reward) и использует среднее как групповой baseline. Это снижает потребление памяти и упрощает пайплайн, сохраняя эффективное обучение.

--------|-----|------| | Оценка advantage | Value model (нейросеть) | Среднее по группе ответов | | Потребление памяти | 2× (policy + value) | 1× (только policy) | | Гибкость | Требует согласованности critic | Проще, но зависит от размера группы | | Типичное применение | Любые задачи RLHF | Reasoning, кодирование, математика |


2. Нет Value model (экономия памяти)

В классическом RLHF с PPO хранятся две нейросети: policy (актор) и value (критик). Value model — это обычно та же архитектура, что и политика, но с выходом одного скаляра (ценность состояния). Во время обучения PPO выполняет два прямых прохода и два обратных, что удваивает требования к GPU-памяти. GRPO полностью избавляется от Value model — никаких дополнительных параметров. Вместо этого advantage вычисляется как смещение вознаграждения данного ответа относительно среднего по группе. Это особенно выгодно при обучении больших языковых моделей (LLM) с сотнями миллиардов параметров, где каждый лишний гигабайт памяти на критичен.

Где берётся экономия:

  1. Нет второго форварда — не нужно пропускать все токены через Value model.
  2. Меньше параметров — не надо обновлять веса критика.
  3. Нет буфера для advantage — значения $\hat{A}_i$ вычисляются на лету из $G$ ответов.

Единственная накладная стоимость — генерация $G$ ответов на один промпт, но это легко распараллелить на GPU (batch generation). На практике $G$ обычно выбирается в диапазоне 8–64; это меньше, чем объём данных, который потребовался бы для стабильного обучения Value model.


3. Baseline — средний reward по группе

В policy gradient advantage $A = R - b$, где $b$ — baseline. Хороший baseline уменьшает дисперсию градиентов, не смещая оценку. GRPO использует в качестве baseline среднее вознаграждение по группе ответов на тот же промпт. Это естественная оценка "как хорошо в среднем отвечает модель на данный запрос". Ответы с вознаграждением выше среднего получают положительный advantage (подталкиваются к повышению вероятности), ниже среднего — отрицательный (подавляются).

Преимущества:

  • Простота — не нужно учить Value model.
  • Conditonal baseline — среднее по той же выборке ответов автоматически учитывает разброс вознаграждений в конкретной ситуации. В PPO Value model часто несовершенна и даёт сглаженные оценки, а групповой baseline адаптивен.
  • Снижение bias — среднее по группе несмещённо, если группа репрезентативна для политики. Но малый размер группы $G$ может увеличивать дисперсию (trade-off).

Математическая формулировка

Пусть $\pi_\theta$ — политика, $q$ — промпт, $o_i$ — $i$-й сгенерированный ответ. Вознаграждение $r_i = R(o_i, q)$. Считаем среднее $\mu = \frac{1}{G}\sum_{j=1}^{G} r_j$ и стандартное отклонение $\sigma$ (иногда без деления на $\sigma$, только вычитание среднего). Тогда loss:

$$ \mathcal{L}{GRPO}(\theta) = -\frac{1}{G} \sum{i=1}^{G} \left[ \frac{r_i - \mu}{\sigma} \cdot \frac{\pi_\theta(o_i|q)}{\pi_{\theta_{old}}(o_i|q)} \right] + [beta](/wiki/beta), [text](/wiki/text){KL}(\pi_\theta || \pi_{ref}) $$

Здесь $\pi_{ref}$ — модель до обновления (для KL-регуляризации). Коэффициент $[beta](/wiki/beta)$ контролирует дивергенцию.

Важно: В оригинальной реализации DeepSeek-R1 используется не деление на $\sigma$, а просто $r_i - \mu$ — это называется reward normalization within group в простейшей форме.


4. Упрощает PPO, особенно для reasoning

Задачи reasoning (Chain-of-Thought, математические доказательства, генерация кода) требуют генерации длинных последовательностей, и каждое действие (токен) может иметь отсроченное вознаграждение (вердикт правильности известен только после завершения всего ответа). В классическом PPO нужно для каждого токена получать оценку Value model, что:

  • Утяжеляет обучение (требует большого батча для стабильности Value model).
  • Value model часто сходится медленно и может давать неточные оценки для редких состояний (длинные цепочки рассуждений).
  • Приходится использовать Generalized Advantage Estimation (GAE) и хранить значения для каждого временного шага.

GRPO обходит эти проблемы: advantage одинаков для всех токенов одного ответа (так как baseline — одно среднее по группе). Это допустимо, потому что в конечном итоге мы хотим увеличить вероятность всего ответа (траектории) целиком, а не отдельных токенов. Такой подход называется bandit formulation (каждый ответ — одно действие). Потери в способности учиться на промежуточных шагах компенсируются простотой, меньшим шумом и эффективностью.

Преимущества для reasoning:

  • Меньше хайперпараметров — не нужно настраивать $\lambda$ для GAE, дисконтный фактор $\gamma$.
  • Быстрее сходится на задачах с отсроченным вознаграждением — модель учится выбирать весь рассуждение, которое в итоге привело к правильному ответу.
  • Стабильнее — отсутствие Value model исключает её рассинхрон с политикой.

Недостаток: при большом числе действий внутри ответа (сотни токенов) метод может быть менее эффективен, чем полный PPO с пошаговыми оценками. Но для LLM, где каждый ответ — это короткая-средняя последовательность (до нескольких тысяч токенов), GRPO показал себя как один из самых эффективных алгоритмов alignment.


Пет-проект для закрепления

Задача: Реализовать GRPO для обучения небольшой языковой модели (например, GPT-2 small) на задаче ответов на вопросы из датасета GSM8K (математические задачи). Использовать бинарное вознаграждение (1 — правильный ответ, 0 — неправильный). Сравнить с обучением через REINFORCE без baseline.

Инструменты:

  • Python 3.10+, PyTorch, Hugging Face Transformers (GPT2LMHeadModel), Datasets
  • Собственная функция reward (проверка ответа по эталону из датасета)
  • Базовый PPO/GRPO (можно модифицировать пример из TRL)

Шаги:

  1. Загрузить датасет GSM8K (или SQuAD). Выбрать подмножество ~1000 примеров.
  2. Инициализировать GPT-2 small (124M).
  3. Для каждого батча промптов (размер $B=4$) сгенерировать $G=8$ ответов с помощью model.generate().
  4. Вычислить reward для каждого ответа (например, извлечь число из ответа и сравнить с правильным).
  5. Вычислить $\mu$ и $\sigma$ по группе из $G$ ответов.
  6. Рассчитать loss:
    • Лог-вероятности выбранных токенов под текущей политикой и старой (для importance sampling).
    • Преимущество $\hat{A}_i = (r_i - \mu) / \max(\sigma, [epsilon](/wiki/Epsilon))$.
    • PPO clip (опционально): advantage * torch.clamp(ratio, 1-clip, 1+clip).
    • KL penalty относительно reference model (копия до апдейта).
  7. Обновить веса с помощью оптимизатора (AdamW, lr=1e-5).
  8. Через каждые 10 шагов оценить точность на валидационной выборке (greedy decoding).

Ожидаемый результат:

  • Модель научится генерировать правильные цепочки рассуждений, постепенно повышая долю правильных ответов (baseline PPO без Value model).
  • По сравнению с REINFORCE (advantage = reward без baseline) GRPO должен демонстрировать меньшую дисперсию и более быструю сходимость.
  • После обучения можно увидеть, что средний reward по группе растёт, разброс между ответами уменьшается.

Связь с другими вопросами

ВопросТема
328PPO — алгоритм, от которого отталкивается GRPO

Навигация

  • Предыдущий: 988
  • Следующий: 990
  • Индекс: 00. Индекс разборов