Проблема: память, а не вычисления
Профилирование модели Ling-3.0-flash (124 млрд параметров, 5.1 млрд активных) на NVIDIA DGX Spark выявило узкое место: на этапе декодирования (batch-size=1) производительность ограничена пропускной способностью памяти. Основные затраты идут на чтение весов модели, особенно в операциях Mixture-of-Experts (MoE) и проекции выходного слоя (LM head). Для решения этой задачи разработчики внедрили три оптимизации.
1. Humming MXFP4 MoE kernels
Стандартный бэкенд FlashInfer заменен на библиотеку Humming. В отличие от статической компиляции, Humming использует NVRTC для генерации CUBIN-бинарей под конкретные размеры матриц (M/N/K) и архитектуру GPU в рантайме. Это критично для узких слоев MoE (intermediate_size=768). Компиляция занимает секунды, а не минуты, обеспечивая специализированные ядра.
2. Онлайн-квантование LM head в FP8
Выходной слой (LM head) хранится в BF16, что создает огромный трафик данных (вектор 157,184 × 2,560). Включение флага SGLANG_ENABLE_FP8_LM_HEAD=1 переводит веса в FP8, сокращая объем чтения вдвое. Это решение взаимно исключает использование --enable-fp32-lm-head.
3. Speculative Decoding с NEXTN
Модель содержит встроенный слой предсказания NEXTN (1 слой), который работает как draft-модель без дообучения. Конфигурация: 3 шага черновика, проверка 4 токенов. Ключевой момент — при совместном использовании с FP8 LM head требуется общий доступ к модулю LM head, иначе система молча падает в BF16, снижая эффективность. Коэффициент стоимости верификации составил ~2.26 из-за активации до 32 экспертов одновременно.
Результаты оптимизаций
Синтетическая нагрузка: 32K входных токенов, 2K выходных, batch size 1. Ниже приведена динамика ускорения (TPOT — время на токен, Decode throughput — скорость генерации):
| Конфигурация | TPOT (мс) | Пропускная способность (ток/с) | Прирост к базовому уровню |
|---|---|---|---|
| Baseline (W4A8, FlashInfer) | 27.71 | 36.09 | — |
| + Humming MoE backend | 25.35 | 39.45 | +9.3% |
| + Online FP8 LM head | 22.76 | 43.94 | +21.7% |
| + MTP (NEXTN, steps=3) | 9.72 | 102.88 | +185.1% |
На реальном датасете GSM8K (1,319 вопросов, chain-of-thought, temp 0.6) комбинация техник также показала стабильное преимущество, хотя синтетические тесты могут завышать выгоду спекулятивного декодирования из-за простоты сэмплов.
Источник: NVIDIA dev blog ↗
