[Перевод] Как работает модель DeepSeek-R1. С иллюстрациями и схемами
DeepSeek-R1 — это самый громкий релиз последних дней в области искусственного интеллекта. Для сообщества исследователей и разработчиков машинного обучения (ML R&D) эта модель имеет особое значение по ряду причин:
Модель обладает открытыми весами и включает уменьшенные, дистиллированные варианты.
Она делится и размышляет над методом обучения, позволяющим воспроизвести модель рассуждений, подобную OpenAI O1.
В этой публикации мы рассмотрим, как была создана DeepSeek-R1.
Дисклеймер: это вольный перевод статьи, которую написал Джэй Аламмар. Перевод подготовила редакция «Технократии». Чтобы не пропустить анонс новых материалов подпишитесь на «Голос Технократии» — мы регулярно рассказываем о новостях про AI, LLM и RAG, а также делимся полезными мастридами и актуальными событиями.
Обсудить пилот или задать вопрос об LLM можно здесь.
Краткий обзор: как обучаются LLM
Так же, как большинство современных LLM, DeepSeek-R1 генерирует по одному токену за раз, но особенно успешно решает математические и логические задачи, поскольку затрачивает больше времени на осмысление вопроса за счёт генерации «мысленных» токенов, раскрывающих ход рассуждений.
Ниже представлена иллюстрация (из 12-й главы нашей книги), показывающая общий рецепт создания высококачественной LLM в три шага:
Этап языкового моделирования, когда модель обучается предсказывать следующее слово на основе огромного набора данных из интернета. Результат — базовая модель.
Этап супервизорного дообучения (supervised fine-tuning, SFT), повышающий полезность модели в понимании инструкций и ответах на вопросы. Результат — модель, настроенная под инструкции (instruction-tuned) или модель SFT.
И, наконец, этап настройки под пользовательские предпочтения (preference tuning), который шлифует поведение модели с учётом человеческих предпочтений, формируя итоговую модель, доступную в различных приложениях и интерфейсах.
Рецепт обучения DeepSeek-R1
DeepSeek-R1 следует общей схеме. Детали первого шага описаны в предыдущей работе о модели DeepSeek-V3. R1 использует базовую модель (а не финальную DeepSeek-V3) из той работы, а затем проходит стадии SFT и настройки под предпочтения, однако способы реализации этих стадий отличаются от предыдущих.
В процессе создания R1 можно выделить три особенных момента.
1.Длинные цепочки рассуждений в данных SFT
Это обширный набор примеров с развернутыми ходами мыслей (около 600 000), достать которые в таком количестве крайне сложно и дорого для ручной разметки. Поэтому процесс их получения — вторая важная особенность, заслуживающая внимания.
2. Промежуточная высококачественная модель рассуждений (но хуже в нерассуждающих задачах)
Для создания этих данных используется модель-предшественник R1, не имеющая названия, но специализирующаяся на рассуждении. Она вдохновлена третьей моделью, называемой R1-Zero (рассмотрим её чуть позже). Примечательность этой промежуточной модели в том, что для её разработки требовалось очень мало размеченных данных, но масштабное обучение с подкреплением, дающее высокие результаты в решении логических задач.
Результаты этой специализированной модели затем могут послужить основой для обучения более универсальной версии, которая к тому же преуспевает и в прочих задачах, ожидаемых от LLM.
3. Создание моделей рассуждений с помощью масштабного обучения с подкреплением (reinforcement learning, RL)
Этот процесс реализован в два шага:
3.1 Масштабное обучение с подкреплением, ориентированное на рассуждения (R1-Zero)
На этом этапе применяется RL для создания промежуточной модели рассуждений. Модель затем генерирует примеры для SFT. Однако ключ к появлению такой модели заложен в более раннем эксперименте — создании DeepSeek-R1-Zero.
R1-Zero особа тем, что превосходит в решении задач рассуждения без размеченного набора SFT. Её обучение переходит напрямую от базовой модели к процессу RL, минуя SFT, и при этом показывает сопоставимые результаты с o1.
Почему это важно? Потому что данные всегда были основным топливом для повышения возможностей ML-моделей. Как же модель смогла пойти другим путём? На то есть две причины:
Современные базовые модели уже достигли определённого уровня качества и возможностей (здесь использовалась модель, обученная на 14,8 триллиона высококачественных токенов).
Задачи, связанные с рассуждением, в отличие от общих запросов на чат или письменный ответ, можно автоматически проверять и оценивать.
Примером служит инструкция вида:
«Напишите код на Python, который принимает список чисел, возвращает их в отсортированном виде, но также добавляет 42 в начало».
Такие задания легко поддаются автоматической валидации:
Линтер проверяет, действительно ли результат — корректный код на Python.
Код можно запустить, чтобы убедиться, что он работает.
Другие современные модели для написания кода могут автоматически создавать тесты, чтобы проверить желаемое поведение.
Можно замерить время выполнения и предпочесть более производительный вариант при равной корректности.
На этапе обучения мы можем задать модели подобный вопрос и получить несколько возможных решений.
Мы можем автоматически проверить (без участия человека) и убедиться, что первый ответ вовсе не является кодом. Второй действительно написан на Python, но не решает задачу. Третий вариант выглядит подходящим решением, но не проходит модульные тесты, а четвёртый оказывается корректным.
Все эти сигналы можно напрямую использовать для совершенствования модели. Разумеется, это происходит на множестве примеров (в мини-батчах) и в ходе нескольких последовательных шагов обучения.
Эти сигналы вознаграждения и обновления параметров помогают модели непрерывно совершенствовать результаты в ходе процесса обучения с подкреплением, как показано на Рисунке 2 в статье.
Параллельно с развитием этой способности растёт длина формируемого ответа: модель использует больше токенов-рассуждений для анализа задачи.
Этот процесс полезен, однако модель R1-Zero, несмотря на высокие результаты в решении логических задач, сталкивается с недостатками, снижающими её практическую применимость.
Хотя DeepSeek-R1-Zero демонстрирует впечатляющие способности к рассуждению и самостоятельно развивает неожиданные и мощные логические приёмы, она всё же имеет ряд проблем. К примеру, DeepSeek-R1-Zero уступает в удобочитаемости и нередко смешивает языки.
R1 призвана стать более удобной моделью. Поэтому, вместо полной зависимости от RL, она использует его в двух местах, о чём упоминалось ранее:
1. создание промежуточной модели рассуждений для генерации SFT-данных
2. обучение модели R1 на задачах рассуждения и других типах заданий (с применением различных методов валидации)
3.2 Создание данных рассуждений SFT с помощью промежуточной модели рассуждений
Чтобы сделать промежуточную модель рассуждений более полезной, её дообучают по методу SFT на нескольких тысячах примеров задач, требующих логических рассуждений (часть которых сгенерирована и отфильтрована при помощи R1-Zero). В работе эти данные называются «cold start data».
2.3.1. Cold Start
В отличие от DeepSeek-R1-Zero, чтобы избежать нестабильного начального этапа RL-обучения базовой модели, для DeepSeek-R1 мы формируем и собираем небольшой набор длинных цепочек рассуждений (CoT), чтобы дообучить модель в качестве начального актёра в RL. Для сбора такого набора мы опробовали несколько способов: от few-shot-промптинга с длинной цепочкой рассуждений в качестве примера и прямого запроса к моделям на развёрнутые ответы с рефлексией и проверкой, до использования выводов DeepSeek-R1-Zero в удобочитаемом формате и последующей доработки результатов вручную.
Но возникает вопрос: если у нас уже есть эти данные, зачем нам полагаться на процесс RL? Всё дело в масштабах. В наборе может быть около 5 000 примеров (это реально собрать), но для обучения R1 нужно 600 000. Промежуточная модель как раз заполняет этот разрыв и позволяет синтетически сгенерировать крайне ценные данные.
Если вы ещё не знакомы с понятием Supervised Fine-Tuning (SFT), этот метод подразумевает предоставление модели обучающих примеров в виде запроса и корректного ответа. На иллюстрации из двенадцатой главы приведены несколько примеров обучения с помощью SFT.
3.3 Общий этап обучения с подкреплением
Это даёт R1 возможность превосходить не только в рассуждениях, но и в других типах задач. Процесс во многом похож на уже описанный RL, однако, поскольку он охватывает и неречевые приложения, для соответствующих запросов используется модель вознаграждения за полезность и безопасность (по аналогии с Llama).
Архитектура
Подобно ранним моделям (с эпохи GPT-2 и GPT-3), DeepSeek-R1 представляет собой стек декодирующих блоков трансформера — всего 61 блок. Первые три являются плотными слоями, а остальные реализуют схему Mixture-of-Experts (см. замечательное вводное руководство моего соавтора Маартена: «A Visual Guide to Mixture of Experts (MoE)»).
С точки зрения размерности модели и других гиперпараметров они выглядят следующим образом:
Более подробная информация об архитектуре модели представлена в двух предыдущих работах:
Заключение
Теперь у вас должны быть основные интуитивные представления о модели DeepSeek-R1.
Если вам показалось, что для понимания этого поста вам нужна более фундаментальная информация, я бы посоветовал вам взять в руки книгу Hands-On Large Language Models.