GPU и ускорители

AMD MI300X или NVIDIA H200 для LLM: как проверить выбор на своём стеке

~16 минут10 сентября 2026 г.

У AMD Instinct MI300X — 192 GB HBM3. У NVIDIA H200 SXM — 141 GB HBM3e.

Если большая языковая модель подходит близко к пределу памяти H200, дополнительные 51 GB на одной MI300X выглядят очень серьёзным аргументом. На восьми ускорителях разница номинальной HBM достигает уже 408 GB.

Но этого недостаточно, чтобы выбрать сервер.

Допустим, модель идеально помещается в MI300X, но production использует конкретный quantized checkpoint, attention backend или CUDA-extension, который не проходит на выбранной ROCm-конфигурации. В таком случае дополнительные 51 GB памяти пока ничего не решают.

Возможен и обратный сценарий: весь стек штатно работает на ROCm, обе платформы выполняют требуемый SLA, но H200 уже ограничивает model placement или KV-cache. Тогда 192 GB MI300X превращаются из красивой цифры в настоящее архитектурное преимущество.

Поэтому вопрос «MI300X или H200 быстрее?» поставлен слишком широко.

Для закупки полезнее другой:

И это стоит проверить до заказа оборудования.

MI300X или H200: короткий ответ

Ситуация

Что это означает

Обе платформы полностью поддерживают production stack

Сравниваем performance, количество GPU и стоимость

Workload подходит близко к 141 GB H200

192 GB MI300X становятся сильным аргументом

Критичный software component проходит только на CUDA

H200 получает практическое преимущество

В проекте много CUDA-only custom code

Сначала оцениваем переносимость, потом сравниваем GPU

Используются поддерживаемые PyTorch/vLLM/SGLang без vendor-specific зависимостей

MI300X нельзя исключать только потому, что это ROCm

Модель запустилась на одной GPU, а production будет TP=8

Проверка ещё не завершена

Одна GPU победила в публичном benchmark

Нужна проверка совпадения workload

Обе платформы выполняют одинаковый SLA

Тогда уже имеет смысл считать экономику сервера

Главное здесь — не пытаться получить универсального победителя.

Для конкретного проекта нам нужны PASS или FAIL.

Что действительно отличается в железе

1
Что действительно отличается в железе?

AMD указывает для Instinct MI300X 192 GB HBM3, 5,3 TB/s peak memory bandwidth, архитектуру CDNA 3, OAM form factor, PCIe 5.0 x16 и 750 W peak Typical Board Power.

NVIDIA указывает для H200 SXM 141 GB HBM3e, 4,8 TB/s memory bandwidth и настраиваемый TDP до 700 W. H200 относится к архитектуре Hopper.

Параметр

AMD Instinct MI300X

NVIDIA H200 SXM

Архитектура

CDNA 3

Hopper

GPU memory

192 GB HBM3

141 GB HBM3e

Peak memory bandwidth

5,3 TB/s

4,8 TB/s

Host interface

PCIe 5.0 x16

PCIe Gen5

Form factor

OAM

SXM

Основной GPU stack

ROCm

CUDA

Power specification

750 W peak TBP

до 700 W configurable TDP

По объёму локальной памяти разница составляет:

192 − 141 = 51 GB

То есть MI300X имеет примерно на 36% больше номинальной HBM относительно H200.

По peak memory bandwidth:

5,3 / 4,8 ≈ 1,10

— около 10%.

Но ни один из этих процентов нельзя превращать в процент прироста LLM throughput.

И отдельно не стоит делать вывод об энергоэффективности из 750 W TBP против 700 W TDP: это разные vendor specifications, а реальное энергопотребление определяется сервером, настройками мощности и workload.

Когда дополнительные 51 GB действительно важны

Если рабочая модель вместе с KV-cache занимает небольшую часть памяти обеих GPU, разница между 141 и 192 GB может не изменить архитектуру системы.

Совсем другое начинается около границы H200.

Предположим, конкретная комбинация весов, runtime и KV-cache уже подходит к 141 GB. В таком случае дополнительная память MI300X может дать больше headroom для cache и concurrency либо позволить иначе распределить модель между ускорителями.

В восьми-GPU узле номинальная память выглядит так:

8 × 192 = 1536 GB

против:

8 × 141 = 1128 GB.

Разница — 408 GB HBM.

Но даже это не означает автоматически:

MI300X позволит убрать одну GPU.

Чтобы сделать такой вывод, необходимо знать реальный footprint checkpoint и способ parallelism.

Правильнее сформулировать так:

Преимущество 192 GB становится особенно ценным, когда конкретный workload пересекает memory ceiling 141 GB H200.

Если же обе GPU имеют достаточный запас, память перестаёт быть главным критерием.

ROCm на MI300X уже нельзя считать экзотическим стеком

Отбрасывать MI300X словами «у нас LLM, значит нужна CUDA» сегодня слишком просто.

Актуальная документация AMD включает vLLM и SGLang в ROCm AI ecosystem. Текущая ROCm compatibility matrix публикует конкретные проверенные комбинации версий framework, Python и ROCm, а MI300X относится к gfx942.

У upstream vLLM есть официальный ROCm deployment path и официальные ROCm Docker images. Старые AMD-specific rocm/vllm images уже помечены как deprecated в пользу upstream vllm/vllm-openai-rocm, появившихся в 2026 году.

Поэтому вопрос:

Работает ли vLLM на MI300X?

сам по себе почти бесполезен.

Да, поддержка есть.

Нам нужен следующий уровень:

Работают ли именно наша модель, наши функции и наша конфигурация vLLM?

Поддержка framework ещё не означает поддержку workload

Текущая vLLM Feature × Hardware matrix хорошо это показывает.

Большая часть основных функций доступна и на Hopper, и на AMD: например, LoRA, speculative decoding, multimodal и ряд других возможностей.

Но полного feature parity нет. На момент проверки в матрице encoder-decoder models отмечены для Hopper и не отмечены для AMD; async output processing также доступен на Hopper и отсутствует у AMD.

Такие детали быстро меняются, поэтому запоминать конкретные красные и зелёные клетки бессмысленно.

Полезнее запомнить принцип:

Фраза:

«У нас vLLM»

недостаточна для выбора MI300X или H200.

Нужны exact version, model, quantization, serving features, attention backend и parallelism.

Quantization может решить выбор раньше benchmark

Особенно осторожно нужно относиться к фразам вроде:

У нас 4-bit модель.

Как именно она квантована?

AWQ? GPTQ? Другой формат? Какая реализация runtime должна её обслуживать?

На момент подготовки материала официальная stable-матрица upstream vLLM отмечает AWQ и GPTQ как доступные на Hopper, но не на AMD GPU. Marlin-based варианты там также относятся к NVIDIA-стороне.

Однако актуальная AMD ROCm documentation для vLLM отдельно описывает использование AWQ на MI300X через ROCm-specific path.

На первый взгляд документация противоречит сама себе.

На практике из этого следует гораздо более важный вывод:

Нельзя принимать решение по слову AWQ. Нужно зафиксировать конкретный vLLM build, ROCm version, container image и checkpoint и реально запустить эту комбинацию.

В быстро меняющемся AI stack поддержка конкретной функции может появиться в vendor-optimized path раньше, позже или иначе, чем она отражена в общей upstream matrix.

Именно поэтому compatibility test важнее общей таблицы.

FP8 — хороший противоположный пример

Для FP8 картина может быть совсем другой.

Актуальная документация vLLM по W8A8 FP8 прямо называет аппаратно ускоренными платформами как NVIDIA H100, так и AMD MI300X.

В такой ситуации фраза:

У нас ROCm, поэтому лучше сразу H200

уже ничего не доказывает.

Если нужный checkpoint и runtime path поддержаны на обеих платформах, нужно переходить к нормальному сравнению:

качество → latency → throughput → memory → stability.

То есть даже внутри одной темы quantization нельзя дать универсальный ответ о преимуществе CUDA или ROCm.

Версия ПО — часть конфигурации сервера

Описание:

MI300X + ROCm

слишком широкое.

Так же как:

H200 + CUDA.

Реальная конфигурация больше похожа на:

GPU + driver/runtime + PyTorch + inference engine + exact container image.

AMD compatibility matrix именно так и подходит к software support: версии ROCm, framework и других компонентов фиксируются как совместимые комбинации. В актуальной ROCm 10.0.0 matrix отдельно перечисляются валидированные версии vLLM и SGLang.

vLLM со своей стороны предупреждает, что ROCm binaries и kernels привязаны к software environment и при отличающемся ROCm/PyTorch stack может понадобиться другая сборка.

Поэтому версия — это не мелочь для DevOps.

Она является частью воспроизводимой серверной конфигурации.

Если benchmark делался на одном image, а production будет развёрнут на другом, результат уже нужно перепроверять.

Одинаковая задача важнее одинакового kernel

2
Одинаковая задача важнее одинакового kernel

При сравнении платформ легко сделать ошибку в другую сторону: попытаться создать настолько «одинаковые условия», что одна из GPU будет работать через нехарактерный для неё backend.

На NVIDIA оптимальный kernel path может быть одним.

На AMD — другим.

Например, актуальная AMD documentation рекомендует использовать ROCm-specific AITER optimizations и выбирать attention backend в зависимости от типа модели и workload. Для MI300X доступны отдельные ROCm kernel paths, в том числе AITER и Triton-варианты.

Заставить обе системы использовать один generic fallback может выглядеть научно честно, но для закупки сервера такой тест не очень полезен.

Нам нужно зафиксировать одинаковыми:

модель, checkpoint, precision, пользовательские запросы, context, output, concurrency, требуемые функции и SLA.

А каждой платформе разрешить использовать нормальный production-рекомендуемый backend.

Иначе мы сравниваем не два лучших решения задачи, а два искусственно ограниченных эксперимента.

Есть CUDA-only код? Это отдельная проверка

Теперь более сложный случай.

Если production состоит из актуальных mainstream-компонентов — PyTorch, Transformers, поддерживаемого inference engine — один уровень риска.

Если внутри есть собственные CUDA extensions, .cu kernels или библиотека, существующая только в NVIDIA-specific варианте, — совсем другой.

Общая поддержка Llama или vLLM на MI300X здесь ничего не гарантирует.

До выбора AMD нужно понять, существует ли используемый компонент для HIP/ROCm или требуется перенос.

Это не обязательно означает, что переход невозможен.

Но до такой проверки MI300X ещё не получила production PASS.

Подробную миграцию CUDA → ROCm здесь сознательно не разбираем — это отдельная тема из нашего плана. Для выбора между MI300X и H200 достаточно сначала обнаружить эту зависимость.

Single-GPU PASS не означает, что восьми-GPU сервер готов

Допустим, checkpoint успешно загрузился на одной MI300X.

Inference работает.

Это хороший результат.

Но если реальный сервер покупается под:

TP=8

он пока проверяет не ту систему.

Multi-GPU добавляет distributed communication, коллективные операции, распределение памяти и другой performance profile.

AMD для MI300X публикует отдельные рекомендации по RCCL, parallelism и настройке vLLM именно для multi-GPU workload. Более того, некоторые оптимизации имеют смысл только при нескольких ускорителях.

Поэтому правило простое:

Тестируйте ту topology, которую собираетесь эксплуатировать.

Если production — одна GPU, single-GPU test достаточен для этого слоя.

Если production — TP=4, нужен TP=4.

Если проектируется TP=8 — финальный PASS должен включать восемь GPU.

Pre-purchase protocol: что проверить до закупки

Это главный практический блок статьи.

Gate

Что фиксируем

Что считаем PASS

Model

Exact model ID + revision

Один checkpoint работает

Weights

BF16, FP8 и т. п.

Требуемый формат поддержан

Quantization

Exact implementation

Не нужно менять production checkpoint ради платформы

Engine

vLLM/SGLang + exact version

Нужная версия штатно работает

Features

LoRA, multimodal, prefix cache и др.

Необходимый feature set сохранён

Backend

Production attention/GEMM path

Нет критичного fallback

Custom code

CUDA/HIP/native extensions

Нет непроверенной vendor-specific зависимости

Container

Exact image и tag/digest

Environment воспроизводим

Single GPU

Correctness + memory

Базовая функциональность пройдена

Multi-GPU

Реальный TP/PP/EP

Production topology работает

Quality

Один и тот же test set

Качество в допустимых пределах

TTFT

p50/p95

Выполняется SLA

ITL

p50/p95

Выполняется SLA

Throughput

req/s или tok/s

Есть требуемая capacity

Memory

Peak usage

Есть необходимый headroom

Stability

Продолжительный test

Нет ошибок и деградации

Operations

Deploy, restart, monitoring

Систему реально можно сопровождать

Первые строки отвечают на вопрос:

Можно ли вообще запустить production stack?

Последние — на более важный:

Стоит ли на этой платформе строить production?

До теста составьте паспорт workload

3
До теста составьте паспорт workload

Результат вида:

MI300X показала 12 000 tokens/s

почти бесполезен без условий.

Минимальный паспорт сравнения может выглядеть так:

Model: org/model@revision

Weights: FP8

KV-cache: BF16

Engine: vLLM <exact version>

Container: <exact tag/digest>

Typical input: 8K

Typical output: 1K

Concurrency: 16

Tensor parallel: 8

Required features: prefix caching, tool calling

Quality test: <dataset / internal test set>

TTFT target: p95 < ...

ITL target: p95 < ...

Throughput target: ...

Это не benchmark Start Server и не готовый набор универсальных значений.

Это шаблон того, что нужно зафиксировать до первого запуска.

«Модель запустилась» — это только первый PASS

Для закупки удобно разделить результат на три уровня.

Первый — functional compatibility. Модель загружается, запрос проходит, результат корректный.

Второй — production compatibility. Работают нужная quantization, serving features, multi-GPU, custom extensions и API behavior.

Третий — SLA и эксплуатация. Система выдерживает необходимые latency, throughput и длительную нагрузку, имеет достаточный memory headroom, нормально перезапускается и мониторится.

И только третий уровень даёт основание сказать:

эта платформа подходит для нашего production.

GPU может прекрасно пройти первый уровень и провалиться на втором или третьем.

Почему одного tokens/s недостаточно

Aggregate throughput важен, но не отвечает на все вопросы LLM serving.

Представим две системы.

Первая показывает больше tokens/s, но при рабочей concurrency у неё слишком высокий p95 TTFT.

Для offline inference это может быть приемлемо.

Для интерактивного ассистента — нет.

Или наоборот: throughput близкий, но у MI300X остаётся значительно больше памяти после размещения модели, что позволяет обслуживать больше активного KV-cache без изменения tensor parallelism.

Поэтому перед закупкой полезно смотреть минимум на:

качество результата, TTFT, ITL, throughput, memory headroom и стабильность.

И сравнивать их при одном workload.

Публичный benchmark — ориентир, а не ответ

Публичные тесты MI300X/H200 полезны.

По ним можно увидеть, что конкретная модель вообще работает, какой runtime использовался и какие оптимизации дают результат.

Но переносить коэффициент производительности на свою инфраструктуру нельзя.

Поменялись model revision, quantization, context, concurrency, engine version или tensor parallel degree — это уже другой тест.

Поэтому публичный benchmark отвечает на вопрос:

Что произошло в этих опубликованных условиях?

А закупочный benchmark должен отвечать:

Выполняет ли эта платформа нашу задачу дешевле или лучше альтернативы?

Это разные вопросы.

Когда MI300X становится особенно сильным вариантом

Предположим, весь compatibility protocol пройден.

Точный checkpoint работает.

Quantization работает.

Нужные функции inference engine сохранены.

Custom CUDA blocker отсутствует или закрыт.

Multi-GPU deployment стабилен.

Quality и SLA выполняются.

Теперь разница в hardware начинает действительно решать.

Если workload уже упирается в 141 GB H200, 192 GB MI300X становятся сильным техническим преимуществом.

Дополнительная память может дать больший KV-cache, более удобное размещение модели или другой уровень concurrency.

И если весь ROCm stack прошёл проверку, нет технической причины обесценивать этот результат только аргументом:

CUDA привычнее.

Привычность стека имеет стоимость, но она не отменяет результатов теста.

Когда H200 оказывается практичнее

Теперь обратный сценарий.

Модель без проблем помещается в 141 GB.

При этом production использует software path, который на H200/CUDA уже стабилен и поддержан.

А на MI300X для той же задачи необходимо изменить обязательный checkpoint, перейти на другой runtime, портировать критичный CUDA-компонент или использовать неподтверждённое сочетание версий.

Тогда лишние 51 GB HBM могут не давать никакой бизнес-выгоды.

Но правильный вывод здесь тоже не:

CUDA лучше ROCm.

Он выглядит иначе:

У другого заказчика ответ может оказаться противоположным.

Что делать, когда официальные матрицы расходятся

С AI software это происходит и будет происходить.

Хороший пример — уже рассмотренный AWQ: upstream vLLM hardware matrix и актуальная AMD ROCm documentation сегодня описывают support surface не одинаково.

В такой ситуации не стоит выбирать ту страницу документации, которая удобнее подтверждает желаемую закупку.

Нужно зафиксировать:

GPU → runtime build → version → container → checkpoint.

И запустить именно эту комбинацию.

Это особенно важно потому, что ROCm и inference engines развиваются быстро. Например, актуальная ROCm 10.0.0 matrix уже валидирует конкретные современные версии vLLM и SGLang как часть AI ecosystem.

То, что не работало год назад, сегодня может работать штатно.

И наоборот: старый internal container может не получить поддержку автоматически только потому, что она появилась в новой ветке.

Итоговая схема выбора MI300X или H200

Результат проверки

Решение

Обе платформы проходят весь production protocol

Сравнивать performance, GPU count и экономику

Обе проходят, но H200 упирается в 141 GB

У MI300X появляется сильное преимущество по memory capacity

MI300X требует менять критичный production component

Оценивать стоимость изменений против H200

Есть большой CUDA-only dependency

MI300X ещё не получила PASS

Single-GPU прошёл, TP=8 не тестировался

Покупать 8-GPU узел по этому результату рано

Throughput высокий, но latency SLA провален

Платформа пока не решила задачу

H200 проще программно, но из-за 141 GB требует больше GPU

Считать уже весь сервер, а не цену одного ускорителя

Ни один вариант не выполняет SLA

Пересматривать workload/configuration

MI300X или H200: что выбрать

Если судить только по локальной памяти, преимущество у MI300X: 192 GB против 141 GB H200. Для больших моделей, которые приближаются к пределу H200, это может иметь очень серьёзное практическое значение.

Но покупать AI-сервер только по количеству HBM нельзя.

Перед решением нужно последовательно проверить:

model → quantization → runtime/version → необходимые features → kernels → custom code → production topology → quality → SLA → stability.

ROCm сегодня имеет полноценные современные LLM paths для MI300X, включая upstream vLLM deployment и ROCm-specific optimizations. Поэтому исключать AMD автоматически неправильно.

Но и общее слово «поддерживается» не является доказательством совместимости конкретного production stack.

Отсюда получается довольно простой критерий:

Такой тест гораздо дешевле провести до закупки, чем обнаруживать ограничения после поставки восьми ускорителей.


Обсудить проверку модели на выбранной платформе

Для первичной оценки нужны точный model ID/checkpoint и revision, формат весов или quantization, inference engine и его версия, container image, рабочий context и concurrency, предполагаемое число GPU и информация о собственных CUDA-компонентах.

По этим данным можно сформировать одинаковый workload для MI300X/ROCm и H200/CUDA и определить, какие compatibility и performance gates необходимо закрыть до выбора серверной платформы.