GRPO
На этих выходных захотел верхнеуровнево разобраться в GRPO (Group Relative Policy Optimization) 🏥. Это полезно и по работе, и понимать, что вообще люди в комьюнити обсуждают так бурно. Если где-то ошибся или что-то можно объяснить точнее — поправляйте, буду рад обсудить 😍.
Вообще метод появился-то еще год назад, в работе DeepSeek — DeepSeekMath. Тогда еще @lovedeathtransformers назвал его странный рро. Ну и забили (вроде как). Переодически появлялся в статьях, а потом... Ну вы сами знаете, обвал рынков, шутки про дипсик и т.д. После этого все начали суетиться и заводить GRPO у себя в проектах. Вот, например, в
TRL реализовали.
Метод и правда прост 🤓:
1. Генерируем N ответов на один промпт;
2. Оцениваем каждый из них — получаем награду;
3. Cчитаем среднее и стандартное отклонение по наградам из п.2;
4. Применяем операцию стандартизации (из каждой оценки вычитаем среднее и стандартное отклонение из п.3) — получаем относительные награды;
5. Обновляем модель, увеличивая вероятность хороших ответов и контролируя отклонение через KL-штраф (между исходной моделью и обучаемой).
Что здесь отличного от PPO (Proximal Policy Optimization):
— Это пункт 1, в котором мы оцениваем не одну цепочку генерации, а сразу N — и это самое главное, как мне кажется, новелти этого подхода. Одновременная оценка нескольких гипотез делает процесс обучения стабильнее, так как модель получает больше информации за одну итерацию и лучше учитывает вариативность ответов;
— Мы избавляемся от дополнительной модели-скорера: GRPO нормализует награды относительно других ответов, а не через отдельную value-модель, как в PPO, что делает процесс обучения более прозрачным и менее шумным, а также возможным для gpu-poor сетапов;
Исходя из того, что я почитал у разных коллег из индустрии, GRPO заведётся у вас точно, если:
1. Модель в каком-то приближении умеет решать задачу (например,
здесь ребята пытаются сделать лучше grounding у qwen2.5-vl, а модель изначально неплохо в него умела; в R1 модельке кормили и код, и математику и чего только не кормили до GRPO);
2. Сама задача относительно простая и решается недолгими рассуждениями: для длинных рассуждений нужно считать оценку для промежуточных стадий.
Но при этом гипотезы, почему GRPO работает лучше PPO примерно следующие:
1. Нормировка ревордов достаточно простая и прозрачная; в PPO же что только не делали уже с нормировкой (особенно в мультихост обучении);
2. Да хрен его знает 👨🦳.
Еще говорят, что если у вас достаточно много источников ревордов, то GRPO может быть менее информативным.
Вот тут буквально пару абзацев текста.
А если хотите погрузиться чуточку поглубже, можно почитать
неплохой гайд здесь. Мне помог погрузиться!