Такая модель будет учиться в два этапа: — Rejective Fine-Tuning (RFT), чтобы «прогреть» модель, дать ей базовое понимание хорошо / плохо, понимание формата ответа (критика, оценки, вот это вот) — Online RL, тут прям в точности как DeepSeek R1, тот же GRPO, для которого награда считается по определённому правилу (об этом позже). Итак, RFT. Для начала нам нужен огромный набор промптов и ответов на них, и чтоб мы знали, какие ответы хорошие, а какие — плохие. Нужны как пары-тройки-четвёрки ответов, так и просто наборы «запрос — ответ — оценка», ведь GRM должна уметь работать даже с одним ответом. Авторы скребут по сусекам и собирают солянку из большого количества (7+) открытых датасетов, а также несколько внутренних непубличных. Далее они подают это в DeepSeek-v2.5-0906 с промптом, который примерно описывает, что хочется от модели (ищите в самом конце статьи, если интересно). Для каждого запроса и ответов генерируют 3 набора принципов, критик и оценок, и выкидывают: — неправильные, где самый лучший ответ определён неверно (если ответов несколько; если один, то просто сравнивают одно значение). То есть не важно, если из трёх ответов два отранжированы неправильно — главное, что самый лучший (самая высокая оценка) определены верно. — легкие, где все 3 генерации привели к тому, что самый лучший ответ определён верно. Для части запросов модель просто не смогла ни разу за 3 генерации сделать правильное предсказание, и чтобы не терять сложные и интересные промпты авторы пользуются хитростью: hinted sampling. Они добавляют в промпт максимальную оценку из всех ответов, в надежде на то, что модель будет строить рассуждения, которые по итогу приведут к этой оценке (ведь она написана в промпте, нужно просто скопировать, но придумать объяснение). Суммарно получилось 186 тысяч траектрий, на которых дообучают Gemma-2-27B, и до кучи закидывают ещё миллиончик данных на выполнение инструкций (чтобы модель лучше слушалась -> следовала промпту/формату). После этого начинается Online RL, где обученную RFT модель запускают играть в RLVR через GRPO (как DeepSeek R1). Вот промпт, вот ответ, генерируем пачку принципов и критик; те, которые получше, закрепляем, те, которые похуже, ослабляем, показывая модели, что так не надо делать. Но как определить «правильность» и лучше/хуже? Авторы пользуются простым правилом: — даётся награда 1, если самый лучший ответ выделен правильно — даётся награда 1, если ответ был один, и его оценка по 10-бальной шкале совпадает с авторской из датасета — даётся награда -1 в любом другом случае Таким образом, функция вознаграждения побуждает GRM выделять лучшие ответы. Также, как и в RFT, не важно, если из трёх ответов оценки двух неправильны — важно, что топовый ответ оценён выше. Для RL-цикла используется 237k промптов и ответов. Очень часто у LLM, которые занимают оценкой ответов, есть position bias — когда первый (или второй) ответ априори оценивается моделью лучше сам по себе, не потому что он лучше. Достаточно известный факт. Авторы про это не пишут явно, но мне кажется, что при обучении они перемешивают ответы в промпте, чтобы избавиться от этой проблемы. А может и нет 🤷‍♂️