Ну и всё, теперь дело за малым: берём дообученные модели и запускаем RL-цикл. Вместо GRPO авторы используют свежую модификацию от ByteDance Seed, Decoupled Clip and Dynamic Sampling Policy Optimization (DAPO). Разбор я не писал, да и детали наверняка не так интересны, но если что, разбор можно глянуть вот тут. Очень важная деталь: на этом этапе возвращают пары вопрос-ответ, которые выкинули из-за фильтров, описанных выше. Почему? Потому что в DAPO используется динамическое семплирование, при котором обучение не происходит на тех объектах, для которых все результаты — нули или единицы. Другими словами если вопрос плохо сформулирован / ответ неправильный / что-то ещё, то и обучаемая модель не сможет на него ответить — поэтому все траектории (роллауты) будут оценены нулём, а значит выкинуты. Да, мы потратим мощности на обработку, чтобы понять это, ну и что — AliBaba может себе позволить 👶 Функция награды для RL здесь состоит из двух компонент: — с весом 0.1 дают бинарную награду за правильное форматирование рассуждений и вызова инструментов (поиск/переходы по ссылкам) — с весом 0.9 дают бинарную награду за правильный ответ; правильность определяется отдельно запромпченной Qwen‑72B‑Instruct (промпт есть в статье), которой на вход передают вопрос, правильный ответ из датасета и ответ обучаемой модели. В статье даже не пишут, сколько RL-шагов они делают, ну и ладно. На картинке ниже отображён двухстадийный процесс обучения в деталях: