Порт DeepGEMM Ascend: максимум эффективности на Huawei
Команда DeepSeek выпустила DeepGEMM Ascend — оптимизированную реализацию библиотеки матричных умножений для NPU Huawei Ascend. Проект полностью совместим по API с оригинальной версией, что позволяет разработчикам использовать те же интерфейсы и рабочие процессы. Ключевое достижение: на чипах Ascend 950 (CANN 9.20) библиотека достигает 99,8% от теоретического предела производительности железа в операциях BF16.
Технические детали и оптимизации
DeepGEMM Ascend скрывает сложность низкоуровневых примитивов MAD, таких как фрактальные layout'ы и выравнивание адресов. Для достижения экстремальной производительности использованы специфичные для Ascend техники:
- Спартая загрузка данных (sparse data loading) для снижения задержек памяти.
- Корутино-ориентированный конвейеринг (coroutine-based pipelining) для скрытия latency.
- Поддержка форматов BF16, FP8, FP4, а также специфичных для DeepSeek операторов: MQA logits и MegaMoE.
Результаты бенчмарков: плотные GEMM
Тестирование проводилось на Ascend 950DT с использованием bench_msprof. Библиотека демонстрирует стабильно высокую утилизацию вычислительных блоков (TFLOPS) на широком спектре размеров матриц. Ниже приведены ключевые метрики для плотных GEMM (Dense GEMM) при размере матрицы 4096x7168x16384:
| Тип данных | Вычислительная мощность (TFLOPS) | Пиковая мощность железа (TFLOPS) | Утилизация (%) |
|---|---|---|---|
| BF16×BF16 | 431 | 432 | 99.8 |
| FP8×FP8 | 861 | 865 | 99.5 |
| FP8×FP4 | 861 | 865 | 99.5 |
| FP4×FP4 | 1701 | 1730 | 98.3 |
Оптимизация для MoE и MQA
Особое внимание уделено архитектурам Mixture-of-Experts (MoE) и Multi-Query Attention (MQA). Для MegaMoE (EP8, top-k=6, 96 экспертов) библиотека объединяет диспетчеризацию, GEMM, SwiGLU и combine в один ядро. На нагрузке с 384 экспертами и 16384 токенами достигается пропускная способность памяти до 269.3 GB/s и вычислительная мощность 846.3 TFLOPS.
Ядро MQA Logits (индексатор DeepSeek Lightning) работает не на вычислениях, а на заполнении конвейера FIX (FIX-pipe bound), достигая 99% утилизации конвейера при обработке токенов в форматах FP8 и FP4.
Требования и установка
Для работы требуется NPU серии Ascend 950, тулкит CANN 9.20 и Python 3.10+. Библиотека использует JIT-компиляцию через Bisheng. Установка осуществляется стандартным способом:
git clone --recursive https://github.com/deepseek-ai/DeepGEMM-Ascend.git
cd DeepGEMM-Ascend
pip install --no-build-isolation .
Проект позиционируется не только как утилитарный инструмент, но и как референс для разработчиков, стремящихся выжать максимум из архитектуры Huawei Ascend.
Источник: Github ↗
