AMD MI355X обошёл Nvidia B300 по цене за токен на модели Kimi K3

Открытые модели быстро растут в размере вместе с интеллектом: у GLM5.2 753 млрд параметров, у DeepSeek V4-Pro 1,6 трлн, а у новой Kimi K3, 2,8 трлн. Одни только веса Kimi K3 требуют больше 1,5 ТБ видеопамяти, ещё до выделения KV-кэша под контекст в 1 млн токенов. Из-за этого модель не помещается на один узел Nvidia B200 (8 GPU по 192 ГБ), нужен либо один узел на B300 (288 ГБ видеопамяти на GPU), либо два узла B200 с тензорным параллелизмом TP16.

У AMD MI355X тоже 288 ГБ видеопамяти на GPU, так что Kimi K3 помещается и на один узел MI355X. Компания Wafer.ai прогнала модель на тесте с входом 1024 токена и выходом 400 токенов: MI355X показал 952 токена/с суммарной пропускной способности на узел и 118 токенов/с в однопотоковом режиме. Это в 3,8 раза больше по агрегатной пропускной способности на узел и в 1,3 раза больше по однопотоковому декодированию, чем у имевшегося у Wafer.ai двухузлового развёртывания на B200 с TP16 (498 токенов/с суммарно на 16 GPU, то есть около 249 на узел), конфигурация на B200 к тому же теряет в скорости из-за межузлового all-reduce по RoCE v2 на ~195 Гбит/с, поскольку модель не помещается в один узел B200.

При сравнении с одноузловым B300 картина иная: B300 выигрывает у MI355X по абсолютной суммарной пропускной способности примерно в 1,65 раза. Но при ценах $2,50 за час GPU у MI355X против $6,00 у B300 и $4,25 у B200, GPU MI355X обходится примерно в 2,4 раза дешевле B300 и примерно в 1,7 раза дешевле B200. С учётом цены за час MI355X обгоняет B300 по соотношению производительность/доллар, несмотря на меньшую абсолютную скорость.

Чтобы этого добиться, Wafer.ai пришлось решить два инженерных препятствия. Первое, спекулятивное декодирование: Kimi K3 не поставляется со своими вспомогательными весами для этого (ни MTP, ни EAGLE), поэтому используется внешняя модель-черновик Kimi-K3-DSpark от RadixArk. На CUDA всё работало сразу, а на ROCm первый же запрос ронял планировщик sglang с ошибкой NameError: name 'top_k_renorm_prob' is not defined, в ROCm-сборке не было функции top-k-нормализации вероятностей, которую CUDA-сборка берёт из своего пакета ядер. Команда написала недостающую операцию (сортировка, обнуление лишних вероятностей, повторная нормализация суммы к единице) прямо на PyTorch, без написания отдельного GPU-ядра. После починки спекулятивного декодирования выигрыш составил 2,2 раза в однопотоковом режиме, 1,7 раза при умеренной нагрузке и +18% на пике агрегатной пропускной способности, причём сам пик сдвинулся на более высокую конкурентность (c64 вместо c24 без спекулятивного декодирования).

Второе препятствие, время до первого токена (TTFT). На одинаковом холодном prefill длиной 172 тысячи токенов MI355X тратил около 51 секунды против 23 секунд у B300, заметно медленнее. Причина: быстрое ядро предзаполнения AITER MLA не загружалось, потому что при TP8 на Kimi K3 приходится 12 attention-голов на ранг, а ядро AITER MLA поддерживает только 4, 8 или кратные 16, и система откатывалась на медленное generic-ядро на Triton. Решение оказалось простым: дополнить число голов нулями с 12 до 16, прогнать через быстрое ядро, а затем взять из результата настоящие 12 голов. После фикса ядро AITER MLA держало около 13 тысяч токенов/с в устойчивом состоянии против 4, 7 тысяч у отката на Triton, ускорение prefill в 2, 3 раза. Это не меняет скорость самого декодирования, но напрямую сокращает время ожидания первого токена пользователем.

По итогам Wafer.ai пишет, что добиться лучшего соотношения производительность/доллар на MI355X удалось почти без переделок «из коробки», багов оказалось меньше, чем при запуске GLM5.2, и на этот раз не потребовалось писать собственные GPU-ядра. Вывод авторов: state-of-the-art на AMD, уже дело ближайшего времени, а «CUDA» как барьер для конкурентов слабеет.

Ключевые факты

  • Kimi K3 (2,8 трлн параметров) требует больше 1,5 ТБ видеопамяти под одни только веса, ещё до KV-кэша под 1 млн токенов контекста, модель не помещается на один узел Nvidia B200 (8×192 ГБ)
  • На AMD MI355X (288 ГБ на GPU, как у B300) Wafer.ai получил 952 токена/с суммарно на узел и 118 токенов/с в однопотоковом режиме, в 3,8 раза больше агрегатной пропускной способности и в 1,3 раза больше однопотоковой, чем у их прежнего двухузлового развёртывания на B200 (TP16)
  • Nvidia B300 всё ещё быстрее MI355X по абсолютной пропускной способности примерно в 1,65 раза, но стоит $6,00 за час GPU против $2,50 у MI355X (около 2,4 раза дороже), поэтому по цене за производительность выигрывает MI355X; B200 стоит $4,25 в час
  • Потребовалась инженерная доводка: починка сломанного на ROCm спекулятивного декодирования (недостающая функция top-k-нормализации в sglang) дала 2,2 раза прироста в однопотоковом режиме, а дополнение числа attention-голов нулями с 12 до 16 разблокировало быстрое ядро предзаполнения и ускорило холодный prefill в 2, 3 раза
  • Источник, блог самой компании Wafer.ai: автор и дата публикации не указаны, независимой проверки результатов нет, происхождение указанных цен за час GPU не раскрыто

Почему это важно

Это редкий случай, когда преимущество AMD перед Nvidia на конкретной frontier-модели измерено числами, а не заявлено на словах. Kimi K3 (2,8 трлн параметров) физически не помещается на стандартный узел Nvidia B200, а MI355X с его 288 ГБ видеопамяти на GPU, помещается на одном узле, как и более дорогой B300. Это первый показанный Wafer.ai пример, где ставка AMD на объём HBM-памяти даёт измеримое практическое преимущество именно там, где у Nvidia B200 не хватает памяти на GPU, а B300 обходится заметно дороже.

Кому это важно

Компаниям, которые разворачивают inference крупных открытых моделей (аналогичного класса, GLM5.2, DeepSeek V4-Pro, Kimi K3) и считают стоимость GPU-часа: облачным провайдерам ИИ-инфраструктуры, командам MLOps, инженерам, выбирающим между Nvidia и AMD для serving. Также важно разработчикам ROCm-стека и фреймворков вроде sglang, материал документирует конкретные баги и их фиксы.

Как это применить

Wafer.ai использовал GPU-часовые ставки $2,50 (MI355X), $6,00 (B300) и $4,25 (B200) для расчёта цены за производительность, с этими цифрами MI355X выгоднее B300 в разы, несмотря на меньшую абсолютную скорость. Практические уроки: для моделей без встроенных весов для спекулятивного декодирования (как Kimi K3) можно использовать внешнюю модель-черновик; ошибки вида «функция не определена» на ROCm не всегда требуют написания нового GPU-ядра, иногда достаточно реализовать недостающую операцию на PyTorch; несовместимость числа attention-голов с требованиями быстрого ядра предзаполнения можно обойти zero-padding головы до ближайшего поддерживаемого числа.

Можно ли доверять

Материал, это пост в блоге самой компании Wafer.ai, которая занимается инференс-инфраструктурой и явно заинтересована показать AMD в выгодном свете. Автор поста и дата публикации не указаны, независимой проверки цифр третьей стороной (в том числе самими AMD или Nvidia) в тексте нет, а происхождение указанных цен за час GPU (список ли это цен, спотовые или договорные ставки) не раскрывается. Числа пропускной способности получены на одном узком бенчмарке (вход 1024 токена, выход 400) и могут не обобщаться на другие нагрузки.

Риски и подводные камни

У MI355X есть и слабое место: на холодном prefill длиной 172 тысячи токенов он был заметно медленнее B300 (около 51 секунды против 23), пока Wafer.ai не обошёл несовместимость ядра предзаполнения ручным zero-padding'ом attention-голов. Это показывает, что программная экосистема ROCm для frontier-моделей всё ещё требует ручной инженерной доводки, а не работает "из коробки" во всех сценариях. Кроме того, вывод о превосходстве по цене за производительность зависит от конкретных ставок аренды GPU, которые могут отличаться у других провайдеров и со временем меняться.

«AMD снова доказывает, что она, лидер по соотношению производительности к цене.»

— блог Wafer.ai