DeepSeekОткрытый исходный код第三弹:V3/R1训练推理关键秘籍

robot
Генерация тезисов в процессе

Источник: Кубиты

На третий день недели открытых исходных кодов DeepSeek вывел на свет "двигатель" тренировки расследования V3/R1

DeepGEMM: библиотека FP8 GEMM (общего умножения матриц), поддерживающая операции умножения плотных и смешанных экспертных матриц (MoE).

!

Начнем с краткого обзора GEMM.

GEMM, то есть общее умножение матриц, является основной операцией в линейной алгебре, постоянно встречается в областях научных вычислений, машинного обучения, глубокого обучения, а также является основой многих задач высокопроизводительных вычислений.

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

И DeepSeek на этот раз открыл исходный код DeepGEMM, который все еще сохраняет особенности "высокая производительность + низкая стоимость", основные особенности следующие:

  • Высокая производительность:На архитектуре Hopper GPU DeepGEMM способен достигать производительности вплоть до 1350+FP8 TFLOPS.
  • Простота : базовая логика состоит всего из примерно 300 строк кода, но при этом производительность превосходит ядра, оптимизированные экспертами.
  • 即时编译(JIT):используя полностью即сей компиляции, это означает, что она может динамически генерировать оптимизированный код во время выполнения, чтобы соответствовать различным аппаратным средствам и размерам матриц. Без тяжелых зависимостей: Эта библиотека спроектирована так, чтобы быть очень легкой, без сложных зависимостей, что делает ее простой в развертывании и использовании.
  • Поддержка различных матричных макетов : поддержка плотного матричного макета и двух различных макетов MoE, что позволяет ему адаптироваться к различным сценариям использования, включая, но не ограничиваясь, смешанные экспертные модели в глубоком обучении.

Другими словами, DeepGEMM в основном используется для ускорения матричных операций в глубоком обучении, особенно в крупномасштабном обучении и выводе моделей. Он особенно подходит для сценариев, требующих эффективных вычислительных ресурсов, и способен значительно повысить эффективность вычислений.

Многие интернет-пользователи относятся к этому открытию довольно одобрительно. Некоторые называют DeepGEMM математическим супергероем, считая, что он даже быстрее, чем молниеносный калькулятор, и мощнее, чем полиномиальное уравнение.

!

Также есть люди, которые сравнивают выпуск DeepGEMM с тем, что квантовое состояние стабилизировалось в новую реальность, и хвалят его мгновенную компиляцию как чистую и аккуратную.

!

Конечно, некоторые начали беспокоиться о своих акциях Nvidia...

!

Глубокое погружение в DeepGEMM

DeepGEMM — это библиотека, созданная специально для простого и эффективного FP8 Universal Matrix Multiplication (GEMMs) с мелкозернистым масштабированием, которое является производным от DeepSeek V3.

Он может обрабатывать как обычное общее умножение матриц, так и поддерживать умножение общих матриц групп MoE.

Эта библиотека написана на CUDA, и для установки не требуется компиляция, поскольку она компилирует все ядерные программы во время выполнения через легковесный модуль мгновенной компиляции (JIT).

В настоящее время DeepGEMM поддерживает только тензорные ядра Hopper от Nvidia.

Чтобы решить проблему, связанную с тем, что тензорное ядро FP8 недостаточно точно для вычисления накопления, оно использует двухступенчатый метод накопления (бустинга) ядра CUDA.

Хотя DeepGEMM вдохновлен некоторыми идеями из CUTLASS и CuTe, он не излишне полагается на их шаблоны или алгебраические операции.

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

Это делает его кратким и простым для понимания ресурсом для изучения методов умножения и оптимизации матриц FP8 в архитектуре Hopper.

Несмотря на свою компактность, производительность DeepGEMM может соответствовать или превосходить экспертные библиотеки тюнинга для различных форм матриц.

Какова конкретная производительность?

Команда протестировала все формы, которые могут использоваться в выводе DeepSeek-V3/R1 на H800 с помощью NVCC 12.8 (включая предварительное заполнение и декодирование, но без параллельных тензоров).

На следующей диаграмме показана производительность обычного DeepGEMM для плотной модели:

!

По результатам тестирования производительность вычислений DeepGEMM** может достигать 1358 TFLOPS, а память - до 2668 ГБ/с.

В части коэффициента ускорения он может достигать вплоть до 2,7 раза по сравнению с оптимизированной реализацией на основе CUTLASS 3.6.

Давайте теперь посмотрим на производительность DeepGEMM с поддержкой модели MoE в продолжительном макете (contiguous layout):

!

И производительность поддерживает модель MoE ** маскировочного макета ** такая:

!

Как использовать?

Для использования DeepGEMM необходимо учитывать несколько зависимостей, в том числе:

  • Должна поддерживаться архитектура Hopper GPU, см_90a.
  • Python 3.8 и выше.
  • CUDA 12.3 и выше (рекомендуется 12.8).
  • PyTorch 2.1 и более поздние версии.
  • CUTLASS 3.6 и выше

Код разработки выглядит следующим образом:

# Submodule must be clonedgit clone --recursive git@github.com:deepseek-ai/DeepGEMM.git# Создавайте символические ссылки для сторонних (CUTLASS и CuTe) включайте каталогиpython setup.py develop# Test JIT compilationpython tests/test_jit.py# Протестировать все реализации GEMM (normal, contiguous-grouped и masked-grouped)python tests/test_core.py

Установочный код приведен ниже:

python setup.py установить

После описанных выше шагов вы можете импортировать deep_gemm в свой проект Python.

Что касается интерфейсов, то для обычного DeepGEMM может быть вызвана функция deep_gemm.gemm_fp8_fp8_bf16_nt, а также поддерживается формат NT (нетранспонированный LHS и транспонированный RHS).

Для сгруппированных DeepGEMM m_grouped_gemm_fp8_fp8_bf16_nt_contiguous в случае непрерывной компоновки. В случае компоновки маски это m_grouped_gemm_fp8_fp8_bf16_nt_masked.

DeepGEMM также предоставляет инструментальные функции для установки максимального количества SM, получения выравнивания TMA и поддерживает переменные среды, такие как DG_NVCC_COMPILER, DG_JIT_DEBUG и т. д.

Кроме того, команда DeepSeek также предоставляет несколько оптимизированных способов, включая:

JIT-проектирование: Все ядра компилируются во время выполнения, нет необходимости компилировать во время установки; Поддерживает динамический выбор оптимального размера блока и стадии трубопровода.

  • Тонкомасштабное увеличение: решение проблемы точности FP8 через двойное накопление ядер CUDA; поддержка оптимизации использования SM для блоков неподходящего размера для степеней 2. FFMA SASS Interleaved: Повышает производительность за счет изменения битов выдачи и повторного использования инструкций SASS.

!

Заинтересованные партнеры могут нажать на ссылку GitHub в конце статьи, чтобы просмотреть подробности~

И ещё кое-что

Акции Nvidia ...... в эти дни Колодец...... Продолжайте падать снова:

!

Тем не менее, рано утром 27-го числа по пекинскому времени также будет опубликован отчет Nvidia о производительности за четвертый квартал 2025 финансового года, и мы можем с нетерпением ждать его производительности~

Посмотреть Оригинал
Содержание носит исключительно справочный характер и не является предложением или офертой. Консультации по инвестициям, налогообложению или юридическим вопросам не предоставляются. Более подробную информацию о рисках см. в разделе «Дисклеймер».
  • Награда
  • комментарий
  • Поделиться
комментарий
0/400
Нет комментариев
  • Закрепить