Предсказание токенов сделано последовательным. Для предсказания D дополнительных токенов используется D MTP модулей (MTP Modules), у них шареные эмбеддинги и выходная голова. На вход им прилетает выход слоя основной модели или предыдущего MTP модуля, а также эмбеддинги следующего токена, всё нормализуется RMSNorm и конкатенируется. Каждый модуль считает кроссэнтропийный лосс, по всем модулям вычисляется средний лосс и он с коэффициентом 𝜆 выступает как дополнительный лосс модели (0.3 для первых 10T токенов, 0.1 для последующих 4.8T). При инференсе MTP модули отбрасываются, но можно и использовать для speculative decoding.
MTP стабильно улучшает перформанс на большинстве бенчмарков. В экспериментах acceptance rate для следующего токена находился в диапазоне от 85% до 90%. В комбинации со speculative decoding TPS возрастает в 1.8 раза.
❇️ Другая интересная часть — инфраструктура.
DeepSeek-V3 обучался на кластере из 2048 NVIDIA H800 GPU. Напомню, что H800 — это урезанная H100 для Китайского рынка. У H800 ослаблен interconnect (bandwidth ниже более чем в два раза и количество линков NVLink тоже уменьшено), а также в десятки раз понижены флопсы для FP64 — для нейросетей неважно, а атомные бомбы считать хуже. Чтобы нумерация была “особенно логичной”, H200 — это улучшенная версия H100 с большим объёмом более быстрой памяти.
Для обучения внутри компании написали свой закрытый фреймворк HAI-LLM.
DeepSeek-V3 использует 16-way Pipeline Parallelism (PP), 64-way Expert Parallelism (EP) с 8 нодами, и ZeRO-1 Data Parallelism (DP). Для эффективного PP разработали алгоритм DualPipe, перекрывающий фазы коммуникации и вычисления в forward и backward фазах. Приводит к уменьшению pipeline bubbles. Благодаря суровым оптимизациям памяти обошлись без Tensor Parallelism (TP). Кроме этого разработали эффективные cross-node all-to-all communication kernels.
❇️ Но самая интересная для меня часть здесь — это FP8 Training.
Кто не знает, что такое FP32, FP16, BF16, вэлкам в мой старый пост: https://moocaholic.medium.com/fp64-fp32-fp16-bfloat16-tf32-and-other-members-of-the-zoo-a1ca7897d407. FP8 там нет, но по аналогии поймёте, что это такое.
Кажется, это первая открытая реально большая продакшн модель, обученная в FP8. Llama3, например, вроде как в BF16 обучалась, и я так понимаю это примерно стандарт, ну либо микс FP32/16. Да, была более ранняя работа (https://arxiv.org/abs/2409.12517) от израильтян из Habana (теперь Интел). Там в FP8 обучали 7B модель на 2T токенов на интеловско-хабановских же Gaudi2 и получали качество сравнимое с BF16 при улучшении throughput на 34%. Была и ещё более ранняя FP8-LM (https://arxiv.org/abs/2310.18313) от Microsoft, где обучали GPT-175B. Они даже библиотечку опубликовали (https://github.com/Azure/MS-AMP). В принципе не удивлюсь, если OpenAI в итоге тоже внутри на FP8 перешли, но от них молчок. Что там у Гугла тоже не поймёшь. Но ставлю на BF16 🙂
В реальности у DeepSeek, конечно, тоже mixed precision — какие-то вещи по-прежнему считаются в более полных форматах, BF16 или даже FP32. В таких форматах остались: embedding module, the output head, MoE gating modules, normalization operators, and attention operators (вот тут я не совсем понял, какие именно). Также в большей разрядности пишут master weights, weight gradients, и optimizer states. Это всё повышает стабильность обучения, кажется, основную проблему низкоразрядных форматов (ну за пределами отсутствия поддержки в кернелах и железе). Но большинство тяжёлых вычислений в FP8. Отчасти поэтому, я думаю, они сумели сильно сэкономить в деньгах на компьют. В идеальной теории это повышает доступный компьют в два раза, одновременно уменьшая во столько же требования к памяти.
Попутно реализовали сколько-то стратегий для повышения точности, например, более хитрое квантование, повышенную точность для аккумуляции, и приоритет мантиссы над экспонентой, благодаря чему для всех тензоров используется формат E4M3 (4 бита на экспоненту и 3 на мантиссу), а не смесь E4M3 и E5M2.
MTP стабильно улучшает перформанс на большинстве бенчмарков. В экспериментах acceptance rate для следующего токена находился в диапазоне от 85% до 90%. В комбинации со speculative decoding TPS возрастает в 1.8 раза.
❇️ Другая интересная часть — инфраструктура.
DeepSeek-V3 обучался на кластере из 2048 NVIDIA H800 GPU. Напомню, что H800 — это урезанная H100 для Китайского рынка. У H800 ослаблен interconnect (bandwidth ниже более чем в два раза и количество линков NVLink тоже уменьшено), а также в десятки раз понижены флопсы для FP64 — для нейросетей неважно, а атомные бомбы считать хуже. Чтобы нумерация была “особенно логичной”, H200 — это улучшенная версия H100 с большим объёмом более быстрой памяти.
Для обучения внутри компании написали свой закрытый фреймворк HAI-LLM.
DeepSeek-V3 использует 16-way Pipeline Parallelism (PP), 64-way Expert Parallelism (EP) с 8 нодами, и ZeRO-1 Data Parallelism (DP). Для эффективного PP разработали алгоритм DualPipe, перекрывающий фазы коммуникации и вычисления в forward и backward фазах. Приводит к уменьшению pipeline bubbles. Благодаря суровым оптимизациям памяти обошлись без Tensor Parallelism (TP). Кроме этого разработали эффективные cross-node all-to-all communication kernels.
❇️ Но самая интересная для меня часть здесь — это FP8 Training.
Кто не знает, что такое FP32, FP16, BF16, вэлкам в мой старый пост: https://moocaholic.medium.com/fp64-fp32-fp16-bfloat16-tf32-and-other-members-of-the-zoo-a1ca7897d407. FP8 там нет, но по аналогии поймёте, что это такое.
Кажется, это первая открытая реально большая продакшн модель, обученная в FP8. Llama3, например, вроде как в BF16 обучалась, и я так понимаю это примерно стандарт, ну либо микс FP32/16. Да, была более ранняя работа (https://arxiv.org/abs/2409.12517) от израильтян из Habana (теперь Интел). Там в FP8 обучали 7B модель на 2T токенов на интеловско-хабановских же Gaudi2 и получали качество сравнимое с BF16 при улучшении throughput на 34%. Была и ещё более ранняя FP8-LM (https://arxiv.org/abs/2310.18313) от Microsoft, где обучали GPT-175B. Они даже библиотечку опубликовали (https://github.com/Azure/MS-AMP). В принципе не удивлюсь, если OpenAI в итоге тоже внутри на FP8 перешли, но от них молчок. Что там у Гугла тоже не поймёшь. Но ставлю на BF16 🙂
В реальности у DeepSeek, конечно, тоже mixed precision — какие-то вещи по-прежнему считаются в более полных форматах, BF16 или даже FP32. В таких форматах остались: embedding module, the output head, MoE gating modules, normalization operators, and attention operators (вот тут я не совсем понял, какие именно). Также в большей разрядности пишут master weights, weight gradients, и optimizer states. Это всё повышает стабильность обучения, кажется, основную проблему низкоразрядных форматов (ну за пределами отсутствия поддержки в кернелах и железе). Но большинство тяжёлых вычислений в FP8. Отчасти поэтому, я думаю, они сумели сильно сэкономить в деньгах на компьют. В идеальной теории это повышает доступный компьют в два раза, одновременно уменьшая во столько же требования к памяти.
Попутно реализовали сколько-то стратегий для повышения точности, например, более хитрое квантование, повышенную точность для аккумуляции, и приоритет мантиссы над экспонентой, благодаря чему для всех тензоров используется формат E4M3 (4 бита на экспоненту и 3 на мантиссу), а не смесь E4M3 и E5M2.
👍22👌2❤1
Также вложились в оптимизацию хранения и коммуникации, что помогло сэкономить и в потреблении памяти, и в оверхеде на коммуникацию.
FP8 обучение провалидировали на DeepSeek-V2 с 16B и 230B параметров, там разница между FP8 и BF16 оказалась в пределах случайности.
Ждём теперь, когда Америка обяжет Нвидию ограничить FP4 и FP8 🙂
❇️ Для инференса тоже сделали оптимизации.
Деплоймент фаз prefilling и decoding разделён. Напомню, что во время prefill обрабатываются все токены промпта и вычисляются все промежуточные KV, в во время decode происходит авторегрессионная генерация токена за токеном. Подробнее тут (https://developer.nvidia.com/blog/mastering-llm-techniques-inference-optimization/).
Для prefill минимальный деплой юнит содержит 4 ноды с 32 GPU и конкретные настройки параллелизма. При декодировании, где нужно суммарно 9 экспертов, минимальный юнит содержит 40 нод с 320 GPU и имеет свои настройки.
❇️ Отдельная интересная секция — это “3.5. Suggestions on Hardware Design”.
Подобных разделов в других работах я не встречал, но может они и где-то есть. Поделитесь хорошими примерами, если знаете. Это прям прикольно, ко-эволюция софта и железа во всей красе, надо теперь, чтобы кто-нибудь реализовал. В Китае, думаю, и реализуют.
Среди рекомендаций есть группа про коммуникацию и про компьют.
На коммуникацию приходилось выделять 20 из 132 SM, которые могли бы заниматься вычислениями. Авторы хотели бы использовать GPU со-процессор или специальный сетевой со-процессор, в который можно было бы выгружать подобные задачи. Кто помнит 386/387 и далее, когда были процессоры и арифметические со-процессоры? Вот теперь зреют графические процессоры и со-процессоры! Хотя, кажется, они давно уже есть, те же DPU? С точки зрения программирования интересно было бы унифицировать сети Infiniband (scale-out) and NVLink (scale-up).
С точки зрения компьюта есть запрос на повышение точности аккумуляции внутри тензорных ядер, поддержку tile- и block-wise квантований, онлайн квантования, и поддержку транспонированных GEMM-операций.
На этом пока закончу технический разбор, может быть ещё пройдёмся по обучению и последующим моделям.
FP8 обучение провалидировали на DeepSeek-V2 с 16B и 230B параметров, там разница между FP8 и BF16 оказалась в пределах случайности.
Ждём теперь, когда Америка обяжет Нвидию ограничить FP4 и FP8 🙂
❇️ Для инференса тоже сделали оптимизации.
Деплоймент фаз prefilling и decoding разделён. Напомню, что во время prefill обрабатываются все токены промпта и вычисляются все промежуточные KV, в во время decode происходит авторегрессионная генерация токена за токеном. Подробнее тут (https://developer.nvidia.com/blog/mastering-llm-techniques-inference-optimization/).
Для prefill минимальный деплой юнит содержит 4 ноды с 32 GPU и конкретные настройки параллелизма. При декодировании, где нужно суммарно 9 экспертов, минимальный юнит содержит 40 нод с 320 GPU и имеет свои настройки.
❇️ Отдельная интересная секция — это “3.5. Suggestions on Hardware Design”.
Подобных разделов в других работах я не встречал, но может они и где-то есть. Поделитесь хорошими примерами, если знаете. Это прям прикольно, ко-эволюция софта и железа во всей красе, надо теперь, чтобы кто-нибудь реализовал. В Китае, думаю, и реализуют.
Среди рекомендаций есть группа про коммуникацию и про компьют.
На коммуникацию приходилось выделять 20 из 132 SM, которые могли бы заниматься вычислениями. Авторы хотели бы использовать GPU со-процессор или специальный сетевой со-процессор, в который можно было бы выгружать подобные задачи. Кто помнит 386/387 и далее, когда были процессоры и арифметические со-процессоры? Вот теперь зреют графические процессоры и со-процессоры! Хотя, кажется, они давно уже есть, те же DPU? С точки зрения программирования интересно было бы унифицировать сети Infiniband (scale-out) and NVLink (scale-up).
С точки зрения компьюта есть запрос на повышение точности аккумуляции внутри тензорных ядер, поддержку tile- и block-wise квантований, онлайн квантования, и поддержку транспонированных GEMM-операций.
На этом пока закончу технический разбор, может быть ещё пройдёмся по обучению и последующим моделям.
arXiv.org
DeepSeek-V3 Technical Report
We present DeepSeek-V3, a strong Mixture-of-Experts (MoE) language model with 671B total parameters with 37B activated for each token. To achieve efficient inference and cost-effective training,...
👍28🔥9❤5❤🔥2
Сегодня обсудим процедуру обучения DeepSeek-V3. Архитектура и технические решения были разобраны в предыдущем посте (https://news.1rj.ru/str/gonzo_ML/3292).
На всякий случай ещё раз явно проговорю, это не DeepSeek-R1, которая reasoning по типу o1/o3, это базовая чат-модель, на которой R1 была обучена. Не уверен, что буду делать разбор R1, первого поста про DeepSeek (https://news.1rj.ru/str/gonzo_ML/3239), имеющегося разбора V3 и поста от Аламмара (https://newsletter.languagemodels.co/p/the-illustrated-deepseek-r1), кажется, достаточно. Но посмотрим.
Из технически важных моментов хочется ещё раз обратить внимание на важность обучения в FP8 из предыдущего поста (https://news.1rj.ru/str/gonzo_ML/3294). Это биг дил, что наконец оно завелось в промышленном режиме для большой модели хорошего качества. Эффективно оно удваивает доступные вычислительные мощности или даёт возможность обучать модели в два раза большего размера.
Обучение разделено на pre-training и post-training.
Pre-training.
Относительно предыдущего DeepSeek-V2 (https://arxiv.org/abs/2405.04434) увеличена доля примеров про математику и программирование, а также расширен набор языков за пределы английского и китайского. При этом всё равно, английский + китайский составляют большую часть датасета, а описания композиции и распределения других языков я не нашёл.
Всего итоговый датасет содержит 14.8T токенов (у предыдущей версии было 8.1T токенов). Токенизатор BPE со словарём в 128k. Относительно предыдущей версии токенизатор изменён и обучен на более мультиязычном корпусе, а также добавлены токены, комбинирующие пунктуацию с переносами строк.
В предобучении в дополнение к стандартному Next-Token-Prediction используется Fill-in-Middle (FIM) стратегия с частотой 0.1, применённая в DeepSeekCoder-V2 (https://arxiv.org/abs/2406.11931), но изобретённая ранее в OpenAI (https://arxiv.org/abs/2207.14255), где модель должна восстановить середину текста. Если точнее, то используется подход Prefix-Suffix-Middle (PSM) для структурирования данных (на уровне документов) следующим образом:
<|fim_begin|>𝑓_pre<|fim_hole|>𝑓_suf<|fim_end|>𝑓_middle<|eos_token|>.
Во время предобучения максимальная длина последовательности 4k токенов.
После предобучения применяют YaRN (https://arxiv.org/abs/2309.00071) для расширения контекста и делают две дополнительные фазы обучения по 1000 шагов, где расширяют контекст с 4k до 32k, а затем до 128k.
В итоге на множестве бенчмарков, включая английский, китайский, код, математику и один мультиязычный, в целом бьют предыдущую версию DeepSeek-V2, а также две dense модели, Qwen2.5 72B Base и LLaMA-3.1 405B Base, получая сильнейшую из открытых моделей. Сравнение с Qwen2.5 72B Base интересно, это была одна из сильных моделей, активных параметров у неё получается практически в два раза больше, чем у DeepSeek. У LLaMA-3.1 405B Base их вообще в 11 раз больше, но она на этих бенчмарках хуже.
Авторы заявляют, что для DeepSeek-V3 на каждый триллион токенов обучения требуется 180K H800 GPU-часов.
Post-training.
Состоит из двух частей, Supervised Fine-Tuning (SFT) и RL.
SFT делался на дополнительных Reasoning и Non-Reasoning данных. Это всё было сделано для разных областей (упоминания конкретных доменов далее) и итоговый датасет для instruction-tuning составляет 1.5M примеров.
Reasoning данные фокусировались на математике, программировании, логических задачах. Данные генерировались внутренней DeepSeek-R1 моделью (которая в свою очередь была обучена на DeepSeek-V3 в качестве базы — см.рекурсия). Но проблема с данными от R1 была в её многословности, overthinking и плохом форматировании.
Для генерации данных из конкретного домена создавалась экспертная модель, также обученная через SFT + RL. Генерировались два типа SFT сэмплов: <problem, original response> и <system prompt, problem, R1 response>. В промпте были инструкции для рефлексии и верификации. В RL фазе с высокой температурой генерились ответы модели, и постепенно модель выучивала паттерны R1. После обучения с помощью rejection sampling генерировались примеры для SFT оригинальной модели.
На всякий случай ещё раз явно проговорю, это не DeepSeek-R1, которая reasoning по типу o1/o3, это базовая чат-модель, на которой R1 была обучена. Не уверен, что буду делать разбор R1, первого поста про DeepSeek (https://news.1rj.ru/str/gonzo_ML/3239), имеющегося разбора V3 и поста от Аламмара (https://newsletter.languagemodels.co/p/the-illustrated-deepseek-r1), кажется, достаточно. Но посмотрим.
Из технически важных моментов хочется ещё раз обратить внимание на важность обучения в FP8 из предыдущего поста (https://news.1rj.ru/str/gonzo_ML/3294). Это биг дил, что наконец оно завелось в промышленном режиме для большой модели хорошего качества. Эффективно оно удваивает доступные вычислительные мощности или даёт возможность обучать модели в два раза большего размера.
Обучение разделено на pre-training и post-training.
Pre-training.
Относительно предыдущего DeepSeek-V2 (https://arxiv.org/abs/2405.04434) увеличена доля примеров про математику и программирование, а также расширен набор языков за пределы английского и китайского. При этом всё равно, английский + китайский составляют большую часть датасета, а описания композиции и распределения других языков я не нашёл.
Всего итоговый датасет содержит 14.8T токенов (у предыдущей версии было 8.1T токенов). Токенизатор BPE со словарём в 128k. Относительно предыдущей версии токенизатор изменён и обучен на более мультиязычном корпусе, а также добавлены токены, комбинирующие пунктуацию с переносами строк.
В предобучении в дополнение к стандартному Next-Token-Prediction используется Fill-in-Middle (FIM) стратегия с частотой 0.1, применённая в DeepSeekCoder-V2 (https://arxiv.org/abs/2406.11931), но изобретённая ранее в OpenAI (https://arxiv.org/abs/2207.14255), где модель должна восстановить середину текста. Если точнее, то используется подход Prefix-Suffix-Middle (PSM) для структурирования данных (на уровне документов) следующим образом:
<|fim_begin|>𝑓_pre<|fim_hole|>𝑓_suf<|fim_end|>𝑓_middle<|eos_token|>.
Во время предобучения максимальная длина последовательности 4k токенов.
После предобучения применяют YaRN (https://arxiv.org/abs/2309.00071) для расширения контекста и делают две дополнительные фазы обучения по 1000 шагов, где расширяют контекст с 4k до 32k, а затем до 128k.
В итоге на множестве бенчмарков, включая английский, китайский, код, математику и один мультиязычный, в целом бьют предыдущую версию DeepSeek-V2, а также две dense модели, Qwen2.5 72B Base и LLaMA-3.1 405B Base, получая сильнейшую из открытых моделей. Сравнение с Qwen2.5 72B Base интересно, это была одна из сильных моделей, активных параметров у неё получается практически в два раза больше, чем у DeepSeek. У LLaMA-3.1 405B Base их вообще в 11 раз больше, но она на этих бенчмарках хуже.
Авторы заявляют, что для DeepSeek-V3 на каждый триллион токенов обучения требуется 180K H800 GPU-часов.
Post-training.
Состоит из двух частей, Supervised Fine-Tuning (SFT) и RL.
SFT делался на дополнительных Reasoning и Non-Reasoning данных. Это всё было сделано для разных областей (упоминания конкретных доменов далее) и итоговый датасет для instruction-tuning составляет 1.5M примеров.
Reasoning данные фокусировались на математике, программировании, логических задачах. Данные генерировались внутренней DeepSeek-R1 моделью (которая в свою очередь была обучена на DeepSeek-V3 в качестве базы — см.рекурсия). Но проблема с данными от R1 была в её многословности, overthinking и плохом форматировании.
Для генерации данных из конкретного домена создавалась экспертная модель, также обученная через SFT + RL. Генерировались два типа SFT сэмплов: <problem, original response> и <system prompt, problem, R1 response>. В промпте были инструкции для рефлексии и верификации. В RL фазе с высокой температурой генерились ответы модели, и постепенно модель выучивала паттерны R1. После обучения с помощью rejection sampling генерировались примеры для SFT оригинальной модели.
👍15🔥1
Non-Reasoning данные включали creative writing, role-play, и simple question answering, и были сгенерены DeepSeek-V2.5 с последующей верификацией человеком.
Reinforcement Learning (RLHF по сути) включал два подвида: rule-based Reward Model (RM) и model-based RM.
Там, где можно было валидировать правилами, использовали rule-based RM. Например, так можно проверять некоторые математические задачи с детерминистическим результатом и заданным форматом ответа, а на задачах LeetCode можно получать фидбек от компилятора. Где можно использовать такой подход, старались использовать его, он защищён от манипуляции.
В вопросах с ground truth ответом в свободной форме использовали модель, которая оценивала насколько ответ матчится с этим ground truth. В более открытых постановках, когда и явного ground truth нет (например, в creative writing), reward model предоставляла фидбек по исходному запросу и ответу. RM были обучены на SFT чекпойнтах DeepSeek-V3. Для большей надёжности preference data не только давали финальный reward, но и содержали chain-of-thought цепочку рассуждений, ведущих к этому reward. Вроде как помогает от reward hacking.
Как и в DeepSeek-V2, авторы использовали Group Relative Policy Optimization (GRPO), вариант Proximal Policy Optimization (PPO), разработанный также в DeepSeek в рамках работы DeepSeekMath (https://arxiv.org/abs/2402.03300). GRPO позволяет избавиться от отдельной value model, которая обычно такого же размера, что и policy model — вот ещё одно место, где они сэкономили на вычислениях и памяти. Вместо value function используется средний reward на множестве сэмплов, сгенерённых по одному и тому же входному запросу. KL лосс (который нужен, чтобы модель не уходила в сильно другой и нечитаемый текст) в такой схеме тоже упрощается, но делается не между reward и полиси, а напрямую между референс моделью и полиси. Advantage в GRPO по сути вычисляется как z-score.
В этих методах я не специалист, интересно, можно было бы заменить на DPO или нет?
Для разных доменов использовались разные промпты.
Полученная чат модель по бенчмаркам выглядит весьма достойна, сравнима с Claude-Sonnet-3.5-1022 и GPT-4o-05. При этом мы помним, что обучение Sonnet стоило в разы больше, десятки миллионов долларов (https://news.1rj.ru/str/gonzo_ML/3275), хотя конечно тут мутно, что именно там Дарио репортит, но вряд ли это полная стоимость включая эксперименты и т.п.
В работе есть любопытный анализ дистилляции из reasoning модели (R1). Это улучшает качество, но также и увеличивает среднюю длину ответа, здесь тщательно нужно искать баланс с настройками. В работе это проверили на математике и программировании, но планируют дальше брать шире.
Также упоминается, что для задач, где сложно сделать валидацию и алгоритмический фидбек, в работе использовали подход constitutional AI (https://news.1rj.ru/str/gonzo_ML/1285), который мне очень нравится (в первую очередь тем, что он скейлится). По сути модель сама оценивала себя, они это назвали Self-Rewarding. Подход тоже улучшил качество, особенно в субъективных оценках. Так понимаю, в планах добавить больше конституционных инпутов.
В глубины бенчмарков уже не полезу, но в статье есть более детальные разборы. В любом случае, модель достойная.
Что особенно хочется отметить по результатам разбора DeepSeek? DeepSeek — это не просто топовая модель, конкурент западных. Это полноценная экосистема научных работ, тут под десяток разных наработок из их предыдущих статей. Интересно, опубликуют ли свой фреймворк для обучения? Это пока, кажется, один из основных missing parts.
Reinforcement Learning (RLHF по сути) включал два подвида: rule-based Reward Model (RM) и model-based RM.
Там, где можно было валидировать правилами, использовали rule-based RM. Например, так можно проверять некоторые математические задачи с детерминистическим результатом и заданным форматом ответа, а на задачах LeetCode можно получать фидбек от компилятора. Где можно использовать такой подход, старались использовать его, он защищён от манипуляции.
В вопросах с ground truth ответом в свободной форме использовали модель, которая оценивала насколько ответ матчится с этим ground truth. В более открытых постановках, когда и явного ground truth нет (например, в creative writing), reward model предоставляла фидбек по исходному запросу и ответу. RM были обучены на SFT чекпойнтах DeepSeek-V3. Для большей надёжности preference data не только давали финальный reward, но и содержали chain-of-thought цепочку рассуждений, ведущих к этому reward. Вроде как помогает от reward hacking.
Как и в DeepSeek-V2, авторы использовали Group Relative Policy Optimization (GRPO), вариант Proximal Policy Optimization (PPO), разработанный также в DeepSeek в рамках работы DeepSeekMath (https://arxiv.org/abs/2402.03300). GRPO позволяет избавиться от отдельной value model, которая обычно такого же размера, что и policy model — вот ещё одно место, где они сэкономили на вычислениях и памяти. Вместо value function используется средний reward на множестве сэмплов, сгенерённых по одному и тому же входному запросу. KL лосс (который нужен, чтобы модель не уходила в сильно другой и нечитаемый текст) в такой схеме тоже упрощается, но делается не между reward и полиси, а напрямую между референс моделью и полиси. Advantage в GRPO по сути вычисляется как z-score.
В этих методах я не специалист, интересно, можно было бы заменить на DPO или нет?
Для разных доменов использовались разные промпты.
Полученная чат модель по бенчмаркам выглядит весьма достойна, сравнима с Claude-Sonnet-3.5-1022 и GPT-4o-05. При этом мы помним, что обучение Sonnet стоило в разы больше, десятки миллионов долларов (https://news.1rj.ru/str/gonzo_ML/3275), хотя конечно тут мутно, что именно там Дарио репортит, но вряд ли это полная стоимость включая эксперименты и т.п.
В работе есть любопытный анализ дистилляции из reasoning модели (R1). Это улучшает качество, но также и увеличивает среднюю длину ответа, здесь тщательно нужно искать баланс с настройками. В работе это проверили на математике и программировании, но планируют дальше брать шире.
Также упоминается, что для задач, где сложно сделать валидацию и алгоритмический фидбек, в работе использовали подход constitutional AI (https://news.1rj.ru/str/gonzo_ML/1285), который мне очень нравится (в первую очередь тем, что он скейлится). По сути модель сама оценивала себя, они это назвали Self-Rewarding. Подход тоже улучшил качество, особенно в субъективных оценках. Так понимаю, в планах добавить больше конституционных инпутов.
В глубины бенчмарков уже не полезу, но в статье есть более детальные разборы. В любом случае, модель достойная.
Что особенно хочется отметить по результатам разбора DeepSeek? DeepSeek — это не просто топовая модель, конкурент западных. Это полноценная экосистема научных работ, тут под десяток разных наработок из их предыдущих статей. Интересно, опубликуют ли свой фреймворк для обучения? Это пока, кажется, один из основных missing parts.
Telegram
gonzo-обзоры ML статей
DeepSeek-V3 Technical Report
Статья: https://arxiv.org/abs/2412.19437
Репа: https://github.com/deepseek-ai/DeepSeek-V3
Предыдущий пост про DeepSeek был попсовый (https://news.1rj.ru/str/gonzo_ML/3239), сегодня хочется пройтись по некоторым техническим решениям в…
Статья: https://arxiv.org/abs/2412.19437
Репа: https://github.com/deepseek-ai/DeepSeek-V3
Предыдущий пост про DeepSeek был попсовый (https://news.1rj.ru/str/gonzo_ML/3239), сегодня хочется пройтись по некоторым техническим решениям в…
👍31❤3🔥2