Спрос на инференс растёт так быстро, что предложение за ним не поспевает. Фронтирные модели выходят чуть ли не каждую неделю — Claude Fable, GLM5.2, Minimax M3. Токенов нужно всё больше, а доступных Blackwell на всех не хватает. Цены на NVIDIA GPU взлетают, токены дорожают. И тут на сцену выходит AMD.
MI355X в среднем в 2,75 раза дешевле B300 при схожих характеристиках «железа». Но есть затык: у NVIDIA софт и поддержка «с первого дня» (day-0) настроены настолько хорошо, что провайдеры получают высокую производительность почти без возни. На стеке AMD MI355X / ROCm выдающаяся производительность для новых моделей из коробки — редкость. Без day-0 поддержки настройка может занять недели инженерной работы. AMD всё время догоняет.
Но, как показывают тесты Wafer, разрыв закрывается. На нагрузке 20k входных / 1k выходных токенов с 60% cache hit rate они получили 2626 ток/с/узел при 2,4 RPS и TTFT не более 5 секунд. Это всего на 20% хуже B200, хотя MI355X более чем вдвое дешевле. На GLM5.2 в однопотоке (10k вход / 1.5k выход) выжали 213 ток/с — не лидер рейтинга Artificial Analysis, но победа по производительности на доллар.
Как они это сделали? Взяли GLM5.2 в bf16, с помощью AMD Quark сквантизировали до MXFP4. По сравнению с официальной FP8 квантизацией от z-ai потери точности почти нет (GPQA-Diamond, GSM8K, tau2). Из фреймворков выбрали sglang — vLLM не умел работать с MXFP4 + GlmMoeDsa, а ATOM деградировал на длинном контексте.
Дальше — спекулятивный декодинг. Образ sglang под ROCm не поддерживал его из коробки. Пришлось чинить два бага. Первый: MTP-голова хранила общий expert в bf16, но из-за несовпадения префиксов слоёв sglang пытался загрузить его как MXFP4 и падал. Решение — скопировать список не-квантизованных весов под правильное имя. Второй баг: в коде ядра встретился #include <cuda_runtime.h> без защиты #ifdef USE_ROCM. Добавили — заработало. Сspec decode дал прирост в 3x в однопотоке.
Но для агрегатной пропускной способности (нагрузка prefill-bound) этого мало. Конфигурация TP4×DP2 вместо TP8 дала скачок до 1944 ток/с при 2,0 RPS. Главная причина тормозов — MoE-ядра GLM5.2 в fp4 работали на медленной эвристике FlyDSL. Wafer вручную подобрали конфигурацию для Mixture of Experts (model_dim 6144, moe_inter 2048, E=256, topk=8) и достигли 2626 ток/с при 2,4 RPS.
Вывод: хотя трения остаются, выжать лучшую производительность на доллар из MI355X уже не так сложно. В этот раз не пришлось писать кастомные ядра — только чинить баги конфигурации. «CUDA-ров» размывается на глазах.