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

robot
Генерація анотацій у процесі

Джерело: квантовий біт

У третій день тижня відкритих джерел DeepSeek вивів на світло логіку навчання V3 / R1, яка стоїть за ним -

DeepGEMM:бібліотека FP8 GEMM (загального множення матриць), яка підтримує операції згущеного (dense) та змішаного експерта (MoE) множення матриць.

!

Спочатку давайте коротко розберемося з GEMM.

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

Однак, оскільки він має тенденцію до інтенсивних обчислень, оптимізація продуктивності GEMM є вирішальним моментом.

DeepGEMM з відкритим вихідним кодом DeepSeek, як і раніше, зберігає характеристики «висока продуктивність + низька вартість», з наступними основними моментами:

  • Висока продуктивність : На графічному процесорі архітектури Hopper DeepGEMM може досягати продуктивності в 1350+FP8 TFLOPS.
  • Простота : Основна логіка складає приблизно 300 рядків коду, але продуктивність перевершує ядра, що були налагоджені експертами.
  • Інкрементальна компіляція (JIT): Використання повної інкрементальної компіляції означає, що вона може динамічно генерувати оптимізований код під час виконання, щоб відповідати різним апаратним засобам та розмірам матриці.
  • Без важливих залежностей: Ця бібліотека розроблена дуже легковажною, без складних залежностей, що спрощує розгортання та використання.
  • Підтримка різноманітних матричних розташувань : підтримка густо розташованих матричних розташувань та двох видів розташувань MoE, що дозволяє йому адаптуватися до різних сценаріїв використання, включаючи, але не обмежуючись, змішаний експертний модель у глибинному навчанні.

Простіше кажучи, DeepGEMM в основному використовується для прискорення матричних операцій у глибокому навчанні, особливо у великомасштабному навчанні моделей та висновків.

Багато користувачів мережі більше «купують» цей відкритий вихідний код, а деякі люди порівнюють DeepGEMM із супергероєм у математичному світі, вважаючи, що він швидший за швидкий калькулятор і потужніший за поліноміальне рівняння.

!

Деякі люди порівнюють випуск DeepGEMM зі стабілізацією квантового стану до нової реальності і хвалять його миттєву компіляцію як чисту та ефективну.

!

Звісно, деякі люди почали хвилюватися про свої акції Nvidia ...

!

Дізнайтеся більше про DeepGEMM

DeepGEMM — це бібліотека, створена спеціально для простого та ефективного універсального множення матриць (GEMM) FP8 з дрібнозернистим масштабуванням, яка походить від DeepSeek V3.

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

Бібліотека написана на мові CUDA і не потребує компіляції під час встановлення, оскільки вона компілює всі програми ядра під час виконання за допомогою легкого модуля компіляції точно в строк (JIT).

Наразі DeepGEMM підтримує лише тензорне ядро Hopper від NVIDIA.

Для того, щоб вирішити проблему про те, що тензорне ядро FP8 недостатньо точне для обчислення накопичення, воно використовує двоступеневий метод накопичення (прискорення) ядра CUDA.

Хоча DeepGEMM запозичує деякі ідеї з CUTLASS і CuTe, він не надто покладається на їхні шаблони чи алгебраїчні операції.

Навпаки, ця бібліотека була спроектована дуже лаконічно, має лише одну основну ядро-функцію, об'єм коду становить приблизно 300 рядків.

Це робить його зручним для вивчення матричного множення FP8 та техніки оптимізації в архітектурі Hopper.

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

Яка ж конкретна продуктивність?

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

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

!

Згідно з результатами тестування, обчислювальна продуктивність DeepGEMM може досягати до 1358 TFLOPS, а пропускна здатність пам'яті – до 2668 ГБ/с.

**У порівнянні з оптимізованою реалізацією на основі CUTLASS 3.6, максимальне значення може бути досягнуто в 2,7 рази.

Давайте подивимося, як виступає DeepGEMM з підтримкою моделі MoE у випадку послідовного розміщення (contiguous layout):

!

Та підтримка продуктивності моделі MoE з маскованим макетом така:

!

Як користуватися?

Для того, щоб використовувати DeepGEMM, слід знати про декілька залежностей, зокрема:

  • Обов'язкова підтримка GPU з архітектурою Hopper, sm_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, суміжні-згруповані та замасковані)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; підтримка оптимізації використання блоків не степені 2 для покращення використання SM. FFMA SASS Interleaved: Покращено продуктивність шляхом зміни продуктивності та повторного використання бітів інструкцій SASS.

!

Зацікавленим товаришам можна клацнути посилання GitHub у кінці тексту, щоб подивитися деталі~

Ще одна річ

Акції NVIDIA цих днів ... ну ... продовжують падати.

!

Але вранці 27-го числа за пекінським часом також очікується звіт про фінансові результати компанії NVIDIA за четвертий квартал фінансового року 2025, тож ми можемо підготуватися до оцінки її виступу~

Переглянути оригінал
Контент має виключно довідковий характер і не є запрошенням до участі або пропозицією. Інвестиційні, податкові чи юридичні консультації не надаються. Перегляньте Відмову від відповідальності , щоб дізнатися більше про ризики.
  • Нагородити
  • Прокоментувати
  • Поділіться
Прокоментувати
0/400
Немає коментарів
  • Закріпити