Добавить в корзинуПозвонить
Найти в Дзене
Цифровая Переплавка

Open-R1: открытый «клон» DeepSeek-R1 — что готово на самом деле (и почему «полностью» пока авансом)

Когда DeepSeek в январе 2025-го выкатила R1 — первую открытую reasoning-модель уровня OpenAI o1, — выяснилась неприятная деталь. «Открытая» она была только наполовину: веса лежали под свободной лицензией, а вот данные и обучающий код — нет. То есть скачать и запустить модель можно, а понять и повторить, как именно её сделали, — нельзя. Hugging Face решили закрыть эту дыру проектом Open-R1: разобрать R1 на части и собрать заново, полностью в открытую, шаг за шагом по их же tech report. Идея отличная, и сделано немало. Но прежде чем петь дифирамбы, сразу расставлю акценты, потому что вокруг Open-R1 много восторженного шума: на сегодня реально завершён только первый из трёх этапов — дистилляция. А он, при всём уважении, самый простой. Настоящая магия R1 — обучение через чистый RL — всё ещё не воспроизведена. Давайте разберём, что под капотом, на честных числах. DeepSeek-R1 — это MoE-монстр на 671 млрд параметров, из которых на каждом токене активны ~37 млрд. Но интереснее не размер, а то,
Оглавление

Когда DeepSeek в январе 2025-го выкатила R1 — первую открытую reasoning-модель уровня OpenAI o1, — выяснилась неприятная деталь. «Открытая» она была только наполовину: веса лежали под свободной лицензией, а вот данные и обучающий код — нет. То есть скачать и запустить модель можно, а понять и повторить, как именно её сделали, — нельзя. Hugging Face решили закрыть эту дыру проектом Open-R1: разобрать R1 на части и собрать заново, полностью в открытую, шаг за шагом по их же tech report.

Идея отличная, и сделано немало. Но прежде чем петь дифирамбы, сразу расставлю акценты, потому что вокруг Open-R1 много восторженного шума: на сегодня реально завершён только первый из трёх этапов — дистилляция. А он, при всём уважении, самый простой. Настоящая магия R1 — обучение через чистый RL — всё ещё не воспроизведена. Давайте разберём, что под капотом, на честных числах.

Что вообще было «закрыто» в R1

DeepSeek-R1 — это MoE-монстр на 671 млрд параметров, из которых на каждом токене активны ~37 млрд. Но интереснее не размер, а то, как её обучали. В tech report было два ключевых открытия:

🧪 R1-Zero доказала контринтуитивную вещь: мощные reasoning-способности можно вырастить чистым reinforcement learning, вообще без supervised fine-tuning. Берёшь базовую модель, даёшь ей задачи с проверяемым ответом (математика, код), награждаешь за правильность — и модель сама, без размеченных примеров рассуждений, начинает писать всё более длинные цепочки мыслей и приходить к ответу. (Уточню: именно R1-Zero, а не R1 — финальный R1 уже добавил «холодный старт» с небольшим SFT, чтобы вывод был читаемее.)

🧬 R1-Distill — побочный, но практичный результат: рассуждения R1 можно «перелить» в маленькие модели обычным SFT на её ответах. Не нужен дорогой RL — достаточно сгенерировать корпус трасс большой моделью и дообучить на нём 7B/14B/32B.

И вот что осталось за кадром у DeepSeek: какие именно датасеты, какой пайплайн генерации, какие гиперпараметры и reward-функции. Open-R1 разбили задачу на три шага ровно по этой логике:

⚙️ Step 1 — воспроизвести R1-Distill: надистиллировать качественный корпус рассуждений из R1 и обучить на нём distill-модели.

⚙️ Step 2 — воспроизвести чистый RL-пайплайн, которым сделали R1-Zero. Это потребует собрать большие датасеты для математики, кода и рассуждений с нуля.

⚙️ Step 3 — показать полный путь: от базовой модели через многостадийное обучение к RL-tuned-версии.

Step 1: что реально выпущено

Этот этап закрыт в мае 2025-го, и закрыт хорошо. На руках у сообщества два главных артефакта:

📦 Mixture-of-Thoughts — датасет на 350 тысяч верифицированных трасс рассуждений, надистиллированных из R1, с покрытием математики, кода и науки. Не просто свалка генераций, а отфильтрованный корпус, заточенный под то, чтобы учить модель думать пошагово.

📦 OpenR1-Distill-7B — модель, обученная на этом датасете и воспроизводящая способности оригинальной DeepSeek-R1-Distill-Qwen-7B. Это и есть «доказательство», что рецепт рабочий.

Отдельно кайфую от выбора базовой модели — тут спрятана инженерная тонкость. Берётся не ванильный Qwen, а Qwen2.5-Math-7B-RoPE-300k. Проблема: математический Qwen2.5 нативно держит короткий контекст, а трассы рассуждений R1 — это простыни на десятки тысяч токенов. Решение — растянуть базу RoPE (Rotary Position Embedding): увеличиваешь базовую частоту так, чтобы позиционное кодирование переваривало контекст вплоть до ~300k токенов. По сути, NTK-style расширение контекста, без которого 4k-модель просто не вместила бы 32k-цепочку. Дёшево, сердито, работает.

Сам рецепт SFT, кстати, выложен дословно — вот его параметры (можно повторить хоть сегодня на ноде 8×H100):

⚙️ learning rate 4e-5, 5 эпох, max_seq_length 32768 — чтобы влезали длинные трассы целиком.

⚙️ обучение в bf16 с gradient checkpointing и Liger-ядрами (фьюзинг операций ради экономии памяти).

⚙️ шардинг через DeepSpeed ZeRO-3 — иначе 7B с 32k-контекстом и оптимизатором в память одной карты не упакуешь.

Бенчмарки: честная картина (а не та, что в пресс-релизах)

Тут начинается самое интересное, потому что вокруг чисел Open-R1 много путаницы. Вот прямое сравнение OpenR1-Distill-7B против оригинальной distill-модели DeepSeek (числа из официальной таблицы репозитория, харнесс LightEval):

📊 AIME 2024: 52.7 против 51.3 — открытая модель впереди.

📊 GPQA Diamond: 52.8 против 52.4 — снова чуть впереди.

📊 LiveCodeBench v5: 39.4 против 37.4 — впереди и на коде.

📊 MATH-500: 89.0 против 93.5 — а вот тут отстаёт, и заметно, на 4.5 пункта.

Картину важно читать целиком. Open-R1 не «немного не дотянул, зато обошёл на одном бенчмарке» (как иногда подают) — он реально сравнялся или обошёл оригинал на трёх задачах из четырёх, и единственная зона провала — MATH-500. Что само по себе любопытно: на «олимпиадной» AIME модель сильнее, а на более «школьном» MATH-500 — слабее. Скорее всего, дело в составе и фильтрации Mixture-of-Thoughts: разный микс данных по-разному ложится на разные распределения задач. Это не «хуже оригинала», это «другой профиль сильных сторон» — и для open-source воспроизведения, собранного с нуля по чужому отчёту, результат отличный.

Маленькая, но важная ремарка для тех, кто будет читать репозиторий сам: знаменитая формулировка «в пределах 1–3 стандартных отклонений» относится не к этому сравнению, а к другому — к тому, как команда Open-R1 воспроизводит собственные опубликованные числа DeepSeek на оригинальных distill-моделях своим харнессом. Две разные таблицы, которые легко перепутать.

Как это устроено: GRPO и инженерия наград

Сердце R1-подхода — алгоритм GRPO (Group Relative Policy Optimization), и Open-R1 реализует его в открытую (через TRL с бэкендом vLLM для быстрой генерации роллаутов). Объясню, почему он элегантен.

В классическом PPO, чтобы посчитать «насколько это действие лучше среднего» (advantage), нужна отдельная value-сеть (критик) — обычно размером с саму модель. Это удваивает потребление памяти. GRPO эту сеть выбрасывает. Вместо неё на каждый промпт он сэмплит группу из G ответов, считает награду для каждого, а в качестве базовой линии берёт среднее по самой группе: advantage = (награда ответа − среднее по группе) / стандартное отклонение по группе. Никакого обученного критика — baseline берётся из разброса внутри группы. Память пополам, а для задач с проверяемой наградой (математика, код) это заходит идеально.

И вот тут вторая половина дела — инженерия reward-функций, потому что наивная награда «правильно/неправильно» ломается. Open-R1 в апдейтах разбирали целый зоопарк:

🎯 Accuracy / verifiable reward — для математики проверяется boxed-ответ, для кода решение реально гоняется в песочнице против тест-кейсов (поддержаны E2B, Morph, Piston) и наградой служит доля пройденных тестов.

🎯 Format reward — награда за то, что модель оформляет рассуждение в теги <think>…</think>. Без этого формат расползается.

🎯 Cosine reward — хитрая штука: поощряет короткие цепочки для правильных ответов и длинные для неправильных. Это стабилизирует RL и не даёт длине ответов взрывообразно расти.

🎯 Repetition penalty — против reward hacking: когда модель на сложной задаче начинает тупо раздувать цепочку повторами вместо того, чтобы решать, её за это штрафуют.

Ещё один недооценённый кусок — деконтаминация данных. Чтобы оценка была честной, корпус прогоняется скриптом, который выкидывает примеры, пересекающиеся с бенчмарками по 8-граммам (метод из работы s1). Без этого легко получить модель, которая «решает» тесты, потому что видела их на обучении, — классический способ нарисовать красивые, но фейковые цифры.

CodeForces-CoTs: где открытая 7B бьёт Claude

Отдельного упоминания заслуживает ветка про конкурентное программирование. В марте 2025-го выпустили CodeForces-CoTs: 10k задач с соревнований и 100k решений, надистиллированных из R1, плюс новый бенчмарк IOI24 из очень сложных задач международных олимпиад.

И вот тут — точная формулировка, без преувеличений: 7B-модель, обученная на CodeForces-CoTs, обходит Claude 3.7 Sonnet именно на IOI24, а 32B-версия на том же бенчмарке обходит сам DeepSeek-R1. Не «вообще в кодинге», а на конкретном срезе сверхсложных олимпиадных задач — но и это очень показательно: правильно собранный датасет рассуждений позволяет компактной открытой модели на узкой задаче переиграть и топового проприетарного ассистента, и учителя, из которого она дистиллировалась.

Мой критический разбор: дистилляция — это не воспроизведение

А теперь то, ради чего стоит читать дальше заголовка. Заявленная цель Open-R1 — «полностью воспроизвести R1». И вот мой главный тезис: по состоянию на лето 2026-го, спустя больше года после старта, последним завершённым этапом в новостной ленте репозитория так и остаётся Step 1 (май 2025). Step 2 (чистый RL) и Step 3 (многостадийное обучение) — всё ещё в планах.

Почему это важно, а не придирка к датам? Потому что три шага — это не равные по сложности куски:

🟢 Step 1 (дистилляция) — наиболее понятная и дешёвая часть. Сгенерировал трассы большой моделью, отфильтровал, прогнал SFT. Это инженерия, а не открытие. И именно её закрыли.

🔴 Step 2–3 (чистый RL и многостадийка) — то самое, что в R1 было научной новизной: вырастить рассуждение из базовой модели через RL, а не скопировать его готовым. Это дорого (тысячи GPU-часов), нестабильно (reward hacking, коллапс длины, дрейф) и требует огромных верифицируемых датасетов, которых ещё нет.

Иными словами, дистилляция переливает уже добытое знание, а RL его добывает. Open-R1 блестяще решил задачу переливания и застрял на задаче добычи — ровно там, где и проходит граница между «повторить за DeepSeek» и «уметь делать reasoning-модели с нуля». Это не вина команды: тот же барьер (компьют + стабильность RL) останавливает почти всех. Но честное чтение статуса — «открыли отличный SFT-пайплайн и датасеты», а не «полностью воспроизвели R1». Сама Hugging Face, к слову, с самого начала честно писала в анонсе: «это введение в проект, а не заявление, что мы уже воспроизвели R1».

И всё же ценность проекта огромна — просто она в другом месте, чем в заголовке. Open-R1 дал сообществу готовую, проверяемую инфраструктуру: рабочие реализации SFT и GRPO, датасеты на сотни тысяч трасс, харнесс для честной оценки, песочницы для code-reward, скрипты деконтаминации. Это фундамент, на котором десятки лабораторий строят своё, — и репозиторий уже стал каноничной ссылкой в академических работах по RL для рассуждений.

Выводы и прогноз

Если выпарить всё до сути:

🔑 Open-R1 — это победа открытой инфраструктуры, а не полного клонирования. Дистилляция (Step 1) закрыта и работает: OpenR1-Distill-7B обходит оригинал на AIME, GPQA и LiveCodeBench, уступая лишь на MATH-500. Это сильный результат для воспроизведения с нуля по чужому отчёту.

🔑 Главная ценность — рецепты и данные, а не одна модель. Открытые GRPO-пайплайн, Mixture-of-Thoughts, CodeForces-CoTs, деконтаминация и reward-функции — вот что реально двигает область, позволяя адаптировать подход под свои домены (медицина, физика, ваш внутренний код).

🔑 «Полностью открытое воспроизведение» — пока аванс. Самая интересная, RL-часть (Step 2–3) не сделана больше года, и это честно отражает, насколько чистый RL дороже и капризнее дистилляции.

Мой прогноз простой. «Узкое горлышко» открытого reasoning сместилось с данных и кода (их Open-R1 во многом закрыл) на компьют и стабильность RL. Выиграет не тот, кто соберёт ещё один датасет трасс, а тот, кто сделает RL-обучение рассуждений дешёвым и воспроизводимым на разумном железе. И если/когда Open-R1 (или кто-то из его экосистемы) дотащит Step 2 до рабочего состояния — вот это уже будет та новость, под которую не жалко заголовка «полностью открыли R1». Пока же честнее говорить так: сообщество открыло не саму R1, а мастерскую, в которой такие модели можно собирать. И это, если подумать, ценнее одной модели.

Источники

🔗 Open-R1, основной репозиторий (Hugging Face, оригинал новости): https://github.com/huggingface/open-r1

🔗 Датасет Mixture-of-Thoughts (350k трасс): https://huggingface.co/datasets/open-r1/Mixture-of-Thoughts

🔗 Модель OpenR1-Distill-7B: https://huggingface.co/open-r1/OpenR1-Distill-7B

🔗 Датасет CodeForces-CoTs: https://huggingface.co/datasets/open-r1/codeforces-cots

🔗 Open-R1: Update #2 (GRPO, Cosine reward, repetition penalty): https://huggingface.co/blog/open-r1/update-2

🔗 Open-R1: Update #3 (CodeForces-CoTs, IOI24): https://huggingface.co/blog/open-r1/update-3