Вообще в работе про которую писал
выше опираются на (и во многом воспроизводят) другую про обучение ризонингу.
Imitate, Explore, and Self-Improve: A Reproduction Report on Slow-thinking Reasoning Systems
https://arxiv.org/abs/2412.09413
https://github.com/RUCAIBox/Slow_Thinking_with_LLMs
(эта работа и некоторые другие входят в проект STILL: Slow Thinking with LLMs, данная работа обозначена как STILL-2)
Конкретно в этой работе авторы исследовали ту же
QwQ и DeepSeek-R1-Lite-Preview (в
DeepSeek chat надо включить Deep Think), задавали им вопросы, сравнивали ответы и собирали данные, на которых затем потюнили свою
Qwen2.5-32B-Instruct.
Вообще процесс обучения состоит из трех фаз (по ним статья и называется, круто да?):
1.
Imitate (Имитация): Модель обучается генерировать цепочки размышлений и решение в одном ответе. Используются данные, полученные из существующих систем или сгенерированные вручную.
Модель обучается следовать формату:
<|begin_of_thought|>
{многошаговый процесс размышления}
<|end_of_thought|>
<|begin_of_solution|>
{финальное решение с подробным объяснением шагов}
<|end_of_solution|>
В работе описан полный промт темплейт, смотрим там если надо
2.
Explore (Исследование):
Моделька генерирует несколько траекторий решений для задач.
Ответы сравниваются с эталонными решениями, чтобы выбрать лучшие траектории. Чем сложнее задача, тем больше шагов размышлений получается (естественно).
3.
Self-Improve (Самоулучшение):
После генерации корректных траекторий они добавляются в обучающий набор (и на следующей итерации уже на них обучаемся)
Исследовали обучение с разными видами тюнинга:
* SFT (Supervised Fine-Tuning): Обучение модели на отобранных траекториях.
Мы много раз повторяем процесс
Imitate -> Explore -> Self-Improvement (в качестве исходной модельки взять Qwen2.5-32B-Instruct и в качестве изночальных данных - то что насобирали и подготовили от QwQ и от DeepSeek-r1, и итеративно улучшаем модельку и генерим новые данные в датасет и улучшаем)
* DPO (Direct Preference Optimization): тут нужны пары (положительный пример, отрицательный пример): в качестве положительного выбирали корректное решение с самым высоким perplexity, а в качестве отрицательного - некорректное решение с самым низким perplexity для какой либо задачи. (мы же для одной задачи генерируем несколько решений)
Можно обучать модель на "мыслительной" части (thought) или на всей траектории (thought + solution). В статье отмечено, что обучение только на размышлениях может быть эффективнее. (третий скрин, табличка 4 в статье)
В разных конфигурация использовали 3.9к и 1.1к предподготовленных данных из QwQ + DeepSeek-r1. ну и разное количество наэксплоренных семплов и разные конфиги SFT/SFT+DPO/DPO (смотрим на 2,3 скринах)
В статье много подробностей и дополнительных рассуждений авторов - читаем, делаем свои ризонинги и ставим ребятам звездочки на гитхабе.
Кстати, крутые статьи в том числе и эту я сначала отбираю в
https://t.center/researchim а потом тут разбираю.