Работу у AI отобрал другой AI )

Компания HighFlyer внедрила в свою LLM такие архитектурные фишки как Multi-Head Latent Attention, Mixture of Experts (MoE) with Auxiliary-Loss-Free Load Balancing и Multi-Token Predict. Однако все эти новшества уже были ранее представлены в других LLM: GPT-4, Llama, Mistrall и других.

Полистав WhitePaper HighFlyer, можно наткнуться на описание собственного непубличного тренировочного фреймворка HAI LLM, эксплуатирующего действительно новые фишки, которые позволяют значительно сэкономить на обучении модели. Именно в фреймворке и кроется, как мне кажется, одна из основных инноваций DeepSeek, о чем мне бы и хотелось поговорить далее.

Приятного прочтения)

Запуск DeepSeek V3

Модель DeepSeek V3 имеет 671 миллиардов параметров (общее кол-во). Чтобы только ее запустить, нужна видеокарта с 772 Гб памяти. Но самая большая доступная видеокарта, Nvidia H100, содержит всего лишь 94 гигабайта памяти. Поэтому такие модели запускают и тренируют на GPU-кластерах.

Существуют специальные фреймворки для развертывания LLM (serving framework), а также существуют фреймворки для обучения LLM (training framework) которые позволяют обучать большую модель сразу на большом количестве видеокарт. Такие фреймворки позволяют обучить модель с триллионом параметров, для которой нужно 12 ТБ видеопамяти на кластере из нескольких сотен видеокарт. 

Кластер

DeepSeek-V3 обучался на кластере с 2048 графическими процессорами NVIDIA H800, где каждый узел содержит 8 графических процессоров, соединенных посредством NVLink и NVSwitch для быстрой внутриузловой коммуникации. NVLink позволяет видеокартам обмениваться данными со скоростью 160 гигабайт в секунду. Для связи между различными узлами используется InfiniBand, обеспечивающий скорость 50 гигабайт в секунду, причем каждый узел соединен с каждым другим узлом, что позволяет эффективно распределять вычислительные задачи по всему кластеру.

Serving Frameworks

Для того, чтобы запустить LLM на GPU кластере используются различные публичные фреймворки для развертывания SGLang, LMDeploy, TensorRT-LLM, vLLM. Кстати разработчики DeepSeek сотрудничают с SGlang, для того чтобы помочь им улучшить свой фреймворк для запуска этой LLM.

Мы рады сообщить о выпуске SGLang v0.4.1, который теперь поддерживает DeepSeek V3 — на данный момент самая мощная опенсорсная LLM, превосходящую даже GPT-4o.

Команды SGLang и DeepSeek совместно работали над тем, чтобы DeepSeek V3 FP8 работал на графических процессорах NVIDIA и AMD с первого дня. Мы также внедрили оптимизацию MLA и DP внимание ранее, что делает SGLang одним из лучших открытых движков LLM для работы с моделями DeepSeek.

SGLang

Наиболее распространенной стратегией параллелизма для инференса является тензорный параллелизм. Однако он может быть не самым эффективным методом для некоторых моделей. Например, модели DeepSeek используют многоголовое латентное внимание (MLA) и имеют только одну KV-головку. Если мы применим тензорный параллелизм на 8 графических процессорах, это приведет к дублированию кеша KV и нежелательным затратам памяти.

Чтобы справиться с этой проблемой, в SGLang реализовали параллелизм данных (DP) для механизма MLA, дабы повысить пропускную способность моделей DeepSeek. Применяя DP для компонента внимания, они значительно сократили кеш KV, что позволило использовать большие размеры батчей. В подобной реализации внимания с DP каждый рабочий процесс DP обрабатывают разные типы батчей (предварительная выборка, декодирование, бездействие) независимо. Данные, обработанные вниманием, будут собраны со всех рабочих процессов перед входом в слой смеси экспертов (MoE), а после обработки через MoE данные будут перераспределены обратно к каждому рабочему процессу.

Training Framework

Для обучения своей LLM, компания High-Flyer, разработчик DeepSeek, разработала свой фреймворк HAI-LLM, который является инновационным в плане развития идей параллелизма. Увы, но этого фреймворка нет в открытом доступе. 

HAI-LLM, получил ряд особенностей DualPipe и Computation-Communication Overlap, Efficient Implementation of Cross-Node All-to-All Communication и Extremely Memory Saving with Minimal Overhead, а также несколько видов параллелизма, на которых остановимся подробнее:

  • 3D-параллелизм:

    • параллельность данных с поддержкой ZeRO;

    • конвейерную параллельность;

    • параллельность модели с разбиением тензоров;

    • последовательная параллельность.

3D-параллелизм

HAI-LLM позволяет реализовать гибкое сочетание трех способов параллельного обучения: параллелизм по данным, конвейерный параллелизм и тензорный параллелизм, а также применяет последовательный параллелизм для дальнейшей оптимизации transformer, что значительно повышает эффективность использования видеопамяти и вычислительную эффективность.

3D-параллелизм в системе с 32 GPU (восемь вычислительных узлов, каждый из которых оснащен четырьмя GPU) GPU одного и того же цвета находятся в одном и том же узле.
3D-параллелизм в системе с 32 GPU (восемь вычислительных узлов, каждый из которых оснащен четырьмя GPU) GPU одного и того же цвета находятся в одном и том же узле.

DualPipe и Computation-Communication Overlap

Одной из ключевых особенностей HAI-LLM является алгоритм DualPipe, который предназначен для эффективного конвейерного параллелизма. В традиционных методах существуют “пузыри” простоя, когда одни GPU стоят, ожидая завершения вычислений на других GPU. А DualPipe в свою очередь минимизирует эти самые “пузыри”, перекрывая этапы вычислений в прямом и обратном проходах.

Планирование DualPipe для 8 PP-рангов и 20 микропакетов в двух направлениях.
Планирование DualPipe для 8 PP-рангов и 20 микропакетов в двух направлениях.

Для иллюстрации мы обратимся к отчету. Здесь мы видим, что каждый чанк делится DualPipe’ом на четыре компонента: attention, all-to-all dispatch, MLP, and all-to-all combine (кстати, при обратном проходе attention и MLP дополнительно делятся на две части: для входных данных и для весов). В паре прямого и обратного чанков, DualPipe упорядочивает эти компоненты, чтобы добиться максимального перекрытия вычислений. И такая стратегия обеспечивает практически нулевую задержку на all-to-all коммуникацию даже при масштабировании модели и использовании экспертов на разных узлах кластеров.

Параллелизм в работе экспертов (EP32) 

Кроме оптимизации процесса обучения нейросетей, этому подверглась также и генерация контента.

Известно, что архитектура DeepSeek содержит в себе десятки экспертов (MoE), каждый из которых отвечает за свою специализацию от написания кода до хранения знания. При работе MoE, используется механизм 32-way Expert Parallelism (EP32). Основная идея которого заключается в том, что более востребованные эксперты развертываются в избыточном количестве.

Чтобы достичь балансировки нагрузки между различными экспертами в части MoE, необходимо, чтобы каждый GPU обрабатывал примерно одинаковое количество токенов. Для этого мы внедряем стратегию развертывания избыточных экспертов, которая дублирует экспертов с высокой нагрузкой и развертывает их избыточно. 

Эксперты с высокой нагрузкой выявляются на основе статистики, собранной во время онлайн-развертывания, и корректируются периодически (например, каждые 10 минут).

FP8

И перед завершением, мне бы также хотелось отметить использование формата FP8 для хранения весов и активаций модели, что также повлияло на снижение стоимости обучения. Если сравнивать со стандартным BF16, FP8 требует гораздо меньше памяти, что позволяет ускорить вычисления. Однако, этот работа с этим форматом приводит к проблеме ограниченного динамического диапазона, а также возможной потерей точности.

Чтобы избавиться от этой проблемы, для DeepSeek применили fine-grained quantization strategy, суть которой заключается в гранулярном масштабировании тензоров при квантизации в FP8. То есть вместо применения одного общего scaling factor для всего тензора, использовались индивидуальные для плиток 1x128 элементов (для активации) и для блоков 128x128 (для весов соответственно). Подобная манипуляция позволила лучше адаптироваться к выбросам в данных, а также снизить ошибки квантизации.

И также стоит отметить increasing accumulation precision, которая была направлена на повышение точности операций GEMM (General Matrix Multiplication) в FP8. Промежуточные результаты GEMM скапливались в FP32 через интервалы n=128, что позволило минимизировать ошибки округления и улучшило общую точность вычислений.

Заключение

В заключение хочу добавить, что наши китайские коммунистические товарищи хотя и не придумали ничего нового в архитектуре LLM, взяв лучшие существующие практики, а также обучив свою модель на результатах работы GPT-4, тем не менее смогли удивить весь мир в первую очередь за счёт более низких цен на обучение и генерацию. Этого удалось добиться в первую очередь благодаря более эффективной оптимизации работы слоя, который отвечает за запуск LLM на распределенном кластере, за счёт экономии видеопамяти и распараллеливанию процессов. За это им низкий поклон. 

Также, я думаю, что большую роль сыграло использование пониженной точности FP8 в сочетании с increasing accumulation precision и fine-grained quantization strategy. Комбинация смогла всё-таки дать очень хорошее качество генерации модели на уровне топовых ChatGPT-4o/Claude-3.5-Sonnet в части тестов.

P.S.: В Deepseek-v3 technical paper описано ещё много чего интересно, но включать это я не решил, чтобы не удлинять статью. Буду очень рад, если не вошедшая информация будет дополнять эту статьи в виде комментариев.

Также буду рад, если подпишитесь на мой телеграм канал (никого не принуждаю, предлагаю) :-)

Комментарии (10)


  1. lexa
    02.02.2025 10:32

    AI перевод статьи про AI - что может быть прекраснее


    1. dilukhin
      02.02.2025 10:32

      Чтобы избавится от этой проблемы для DeepSeek применили fine-grained quantization strategy, ...

      Чтобы я поверил, что это писал ИИ? Да не в жизнь.


  1. himeravcube
    02.02.2025 10:32

    не знаю что зашумели deepseek сенсация, скажу открыто очередное китайское барахло! Считать не умеет, логическое мышление неадекватно какой там конкурент cgpt не понимаю.!?


    1. rajce Автор
      02.02.2025 10:32

      Как раз наоборот, много восторженных отзывов на Reddit, и популярность среди плагинов для генерации кода говорит о своём.


      1. himeravcube
        02.02.2025 10:32

        для интереса можно пробежаться по школьной программе по алгебре физике за 8класс ну и в нагрузку пару загадок на логику и сами разницу ощутите!


    1. uralhi
      02.02.2025 10:32

      А что cgpt умеет считать? Или оно просто помнит что 2*2=4?


      1. himeravcube
        02.02.2025 10:32

        например вводил данные для расчёта рабочей частоты контура, самым точным последовательным оказался cgpt как в расчётах так и логике чего не скажешь о китайских (язык не поворачивается сказать) "аналогах"! Даже при пересчёте допускается ошибка и всегда результаты на выходе разные при одних и тех же вводных данных.


    1. avshkol
      02.02.2025 10:32

      Он практически идеально распознает (ocr) отсканированный текст, переводит на русский и выдаёт в нужном формате. Причём переваривает сразу по 20 страниц мелкого шрифта словаря. Когда он стал тормозить неделюназад из-за поднятого хайпа, у меня вся работа по оцифровке и запихиванию с БД нужной информации встала...


  1. himeravcube
    02.02.2025 10:32

    Это как раз тот случай когда дёшево и быстро не означает сделать качественно и надёжно, в прочем как и всё остальное в чайне!


  1. himeravcube
    02.02.2025 10:32

    отстой!