GPU для ИИ-инженера: почему H200 быстрее H100 при той же мощности

Каждый, кто работает с ИИ, ежедневно пользуется GPU, но мало кто смотрит на железо внимательно. Пока всё работает, это не мешает. Проблемы начинаются, когда нужно выбрать GPU для аренды, понять, почему одна модель влезает в память, а другая падает, или почему H200 обгоняет H100 при одинаковой вычислительной мощности на бумаге.
ML-инженер Каран (@kmeanskaran) написал подробный разбор, и ниже его пересказ на русском. Все расчёты сделаны на двух реальных открытых моделях. Gpt-oss-120b от OpenAI содержит 117 млрд параметров, из которых на каждый токен активны 5,1 млрд, и помещается на один GPU. Kimi K3 от Moonshot AI содержит 2,8 трлн параметров при 104 млрд активных и входит в число крупнейших открытых моделей 2026 года.
Обе модели построены по схеме mixture-of-experts. В каждом слое много небольших сетей-экспертов, и токен проходит только через несколько из них: 4 из 128 у gpt-oss-120b и 16 из 896 у Kimi K3. Поэтому важны два числа. Общее количество параметров определяет, сколько нужно памяти. Активные параметры определяют, сколько вычислений и пересылки данных стоит каждый токен.
Какие бывают GPU
Есть три класса. Серверные GPU стоят в стойках и связаны быстрыми каналами, пример: NVIDIA B200. Рабочие станции используют одну большую карту, пример: RTX Pro 6000. Потребительские карты ставят в игровые ПК, пример: GeForce RTX 5090.
Серверные GPU работают в облаке (AWS, GCP или неооблака вроде CoreWeave и Nebius), в собственном дата-центре компании или в изолированном контуре без внешней сети. Если вы не работаете в крупной корпорации или госструктуре, скорее всего, вы будете арендовать серверные GPU в облаке.
Что внутри GPU
CPU хорошо справляется со сложными задачами, которые выполняются последовательно. GPU устроен иначе: он выполняет одну простую операцию над тысячами чисел одновременно. Нейросети в основном состоят из умножения матриц, а это ровно такая работа.
Если снять с H100 радиатор, в центре окажется кристалл с 80 млрд транзисторов, а вокруг пять стеков памяти общим объёмом 80 ГБ. По сути GPU состоит из двух частей: вычислительного блока и памяти рядом с ним.
Вычисления
Кристалл состоит из потоковых мультипроцессоров (SM), у H100 их 132. В каждом SM есть три типа вычислителей. CUDA-ядра работают с отдельными числами. Тензорные ядра обрабатывают небольшие матрицы целиком и выполняют основную работу в нейросетях. Блоки специальных функций считают синусы, косинусы и логарифмы, они нужны, например, для softmax.
Работу выполняют потоки. У CPU их десятки или сотни, у GPU десятки тысяч, объединённые в группы по 32, которые называются варпами. Когда один варп ждёт данные, GPU за один такт переключается на другой, и вычисления почти не простаивают.
Код, который выполняют потоки, называется CUDA-ядром. Это функция, которую запускают один раз, и тысячи потоков одновременно выполняют её на разных данных. Простейший пример из руководства NVIDIA:
__global__ void vecAdd(float* A, float* B, float* C, int vectorLength)
{
int workIndex = threadIdx.x + blockIdx.x*blockDim.x;
if(workIndex < vectorLength)
{
C[workIndex] = A[workIndex] + B[workIndex];
}
}Цикла здесь нет, каждый поток складывает одну пару чисел. Когда вы вызываете model(x) в PyTorch, каждое умножение матриц, нормализация и softmax превращаются в такие ядра. Например, в коде gpt-oss в vLLM матрицы Q, K и V хранятся рядом и считаются одним умножением: 2880 чисел каждого токена проходят через матрицу 2880 × 5120.
Производительность измеряют во FLOPS, операциях с плавающей точкой в секунду. При чтении спецификаций важны две вещи. Смотрите на dense-значение, а не на цифру «с разреженностью»: для H100 указано 1979 терафлопс в BF16 с разреженностью, то есть около 990 без неё. И сравнивайте GPU при одинаковой точности, потому что при уменьшении точности вдвое FLOPS примерно удваиваются.
Прямой проход стоит примерно 2 FLOP на активный параметр на токен: одно умножение и одно сложение. Для gpt-oss-120b это 10,2 гигафлопа на токен, и промпт из 1000 токенов на H100 обработается примерно за 10 мс. Для Kimi K3 это 208 гигафлоп на токен, в 20 раз больше, и тот же промпт займёт около 210 мс на одном H100. Это идеальные цифры, реальные ядра никогда не выходят на пиковые значения из спецификации.
Память
У GPU два вида памяти. VRAM измеряется в гигабайтах, сегодня это HBM, память с высокой пропускной способностью. SRAM находится прямо на кристалле и работает как кэш трёх уровней: L0 у каждого тензорного ядра, L1 внутри каждого SM (256 КБ у H100) и общий L2 на 50 МБ.
VRAM важна по двум причинам. Объём определяет, что поместится: веса модели плюс KV-кэш, то есть сохранённые ключи и значения предыдущих токенов. Распространённое правило: к весам нужно добавить минимум 50% под кэш. Gpt-oss-120b весит около 65 ГБ и влезает в 80 ГБ H100, но остаётся всего около 15 ГБ под кэш, меньше рекомендуемого. С 141 ГБ у H200 места хватает с запасом.
Пропускная способность определяет, как быстро генерируются токены, потому что для каждого нового токена GPU читает из VRAM все активные веса. Для gpt-oss-120b на одном H100 с одним пользователем это около 1,9 ГБ 4-битных весов экспертов плюс примерно 3,1 ГБ внимания, роутера и выходного слоя в BF16, всего около 5 ГБ на токен.
Загрузка весов занимает 5 ГБ ÷ 3,35 ТБ/с, около 1,5 мс. Сами вычисления занимают 10,2 гигафлопа ÷ 990 терафлопс, около 0,01 мс. GPU ждёт данные примерно в 145 раз дольше, чем считает. Потолок составляет около 670 токенов в секунду для одного пользователя, и это ещё без учёта KV-кэша и реальных накладных расходов.
Отсюда простое правило. Обработка промпта (prefill), генерация изображений и видео упираются в вычисления. Генерация токенов (decode) упирается в пропускную способность памяти. Поэтому и появился H200: вычислительная мощность та же, что у H100, но вместо 80 ГБ на 3,35 ТБ/с у него 141 ГБ на 4,8 ТБ/с.
Обучение и инференс
Один и тот же GPU выполняет две очень разные работы. Долгое время основной нагрузкой было обучение, сейчас главной становится инференс.
При обучении на каждом батче выполняются три шага: прямой проход, обратный проход для расчёта градиентов и обновление весов. По оценке из статьи о законах масштабирования, это около 6 FLOP на параметр на токен, потому что обратный проход примерно вдвое дороже прямого. Для gpt-oss-120b получается 30,6 гигафлопа на токен, втрое больше, чем при инференсе.
Памяти обучение требует гораздо больше. По руководству Hugging Face для обучения со смешанной точностью и оптимизатором Adam нужно 6 байт на параметр под веса (16-битная копия для вычислений и 32-битная для стабильных обновлений), 8 байт под состояния оптимизатора и 4 байта под градиенты. Плюс активации, которые растут с размером батча и длиной последовательности. Итого около 18 байт на параметр, причём считаются все параметры, а не только активные. Для gpt-oss-120b это около 2,1 ТБ на обучение против 65 ГБ на инференс.
Отличается и характер нагрузки. При обучении через GPU проходят огромные батчи, каждый загруженный вес используется много раз, и тензорные ядра загружены. При генерации на каждого пользователя создаётся по одному токену, и GPU в основном ждёт память. Поэтому для обучения важны FLOPS, общий объём памяти и скорость связи между GPU, а для инференса пропускная способность памяти, место под KV-кэш и стоимость токена.
Квантизация
Если каждый вес занимает 2 байта, его можно хранить в меньшем числе бит. 8 бит дают вдвое меньший размер, 4 бита вчетверо. Основа метода в общем масштабе: в руководстве Hugging Face это записано как x = S * (x_q – Z). Например, веса 0,50, -1,27 и 0,03 при масштабе 0,01 хранятся как 50, -127 и 3, а умножение на 0,01 возвращает исходные значения.
Старые GPU хранят веса в низкой точности и перед вычислениями переводят их в BF16. Новые считают прямо в низкой точности: FP8 на Hopper, FP4 на Blackwell. На бумаге FP8 вдвое быстрее, но в реальности прирост меньше.
Gpt-oss-120b распространяется в 4-битном формате MXFP4. В BF16 её 117 млрд параметров заняли бы 234 ГБ, а в поставке около 65 ГБ. Kimi K3 обучали сразу с расчётом на 4-битные веса (quantization-aware training): вместо 5,6 ТБ в BF16 чекпоинт весит около 1,56 ТБ. Квантизация прежде всего экономит память, и модель помещается на меньшее число GPU или на более дешёвые. Качество всегда стоит проверять на своих задачах.
Поколения GPU NVIDIA
Название состоит из двух частей: буква обозначает поколение, число указывает на размер. H100 пришёл на смену A100, H200 представляет собой увеличенный Hopper. Поколения названы в честь учёных. В старых системах ещё встречаются Turing (T4) и Ampere (A10, A100).
Ada Lovelace (L4, L40) дешевле и поддерживает FP8, но не имеет NVLink, быстрой связи между GPU. Подходит для небольших моделей. Hopper (H100, H200) добавил FP8, поддерживается всеми фреймворками и сейчас обслуживает большую часть инференса. Blackwell (B200, B300) добавил FP4, поэтому 4-битные модели вроде gpt-oss-120b и Kimi K3 работают на нём нативно. У B200 180 ГБ памяти, у B300 288 ГБ, и это новый стандарт для больших моделей.
Rubin, поколение 2026 года, получил память HBM4: до 288 ГБ на 22 ТБ/с на один GPU. Поставки начинаются в октябре 2026 года. Отдельный чип Rubin CPX только для prefill ожидается к концу года. Следующим в планах NVIDIA стоит Feynman в 2028 году. Процессоры NVIDIA Grace и Vera подключаются к памяти GPU на скорости 900 ГБ/с, этого хватает, чтобы выгружать старый KV-кэш в более объёмную память CPU.
Буква поколения подсказывает, какая точность доступна, есть ли NVLink и насколько зрелый софт. С новыми поколениями автор советует не спешить и ждать реальных бенчмарков: софт догоняет железо примерно год.
Что вы на самом деле арендуете
В облаке арендуют не GPU, а инстанс: GPU плюс CPU, оперативную память, хранилище, сеть и связь между GPU. Узким местом может оказаться любой из этих компонентов.
Если модель слишком большая, несколько GPU работают вместе. Стандартная единица называется узлом: восемь GPU в одном сервере, связанные через NVLink (900 ГБ/с на GPU у Hopper и 1800 ГБ/с у Blackwell) и NVSwitch, который соединяет каждый GPU с каждым. Узлы связаны через InfiniBand, а это примерно в десять раз медленнее NVLink.
Из-за этой разницы документация vLLM рекомендует делить каждый слой между GPU внутри узла (тензорный параллелизм), а группы слоёв распределять между узлами (конвейерный параллелизм). Веса Kimi K3 занимают около 1,56 ТБ, больше, чем вмещает узел из 8 H200 (1128 ГБ). Рецепт NVIDIA запускает модель на 32 H200: тензорный параллелизм на 8 GPU внутри узла и конвейерный между 4 узлами. Всего 4512 ГБ, и большая часть памяти уходит под KV-кэш. Один узел из 8 B300 на Blackwell Ultra (2304 ГБ) вмещает веса целиком.
Обратная ситуация бывает с маленькими моделями: модель на пару миллиардов параметров не загрузит H100. Для этого есть MIG, технология, которая делит один GPU на семь изолированных частей со своей долей памяти.
Как выбрать GPU за пять шагов
Сначала посчитайте веса. По правилу Hugging Face модель на X млрд параметров занимает примерно 2X ГБ в bfloat16, вдвое меньше в 8 битах и вчетверо в 4 битах. Затем добавьте до 20% на накладные расходы, как советует документация Hugging Face Accelerate. Оставьте минимум 50% сверху под KV-кэш. Оцените скорость: размер весов, делённый на пропускную способность памяти, даёт лучшее время на токен для одного пользователя. И наконец посчитайте стоимость: цену за час и то, насколько плотно вы сможете загрузить GPU, ведь загруженный GPU делит каждое обращение к памяти между многими пользователями.
По ценам Hugging Face Inference Endpoints на AWS на конец сентября 2026 года самый дешёвый вариант для gpt-oss-120b: один A100 80 ГБ за $2,5 в час, с запасом около 15 ГБ под кэш. Для многих пользователей лучше один H200 за $5 в час: под KV-кэш остаётся 76 ГБ, а пропускная способность 4,8 ТБ/с снижает время на токен примерно до 1 мс. Kimi K3 не помещается даже в самый крупный инстанс из списка, 8 × H200 с 1128 ГБ за $40 в час, и требует многоузловой конфигурации.
Альтернативы NVIDIA
NVIDIA лидирует, но не одна на рынке. Есть AMD Instinct, AWS Inferentia и Trainium, Google TPU, чип Cerebras размером с пластину и LPU от Groq на основе SRAM. Из последних новостей: AMD перешла на серию MI400, а NVIDIA лицензировала технологию Groq, и NVIDIA Groq 3 LPX уже в массовом производстве.
Каждый конкурент делает ставку на своё преимущество: пропускную способность памяти (Cerebras, Groq), энергоэффективность (Furiosa, Qualcomm) или интеграцию с облаком (Amazon, Google). Общая проблема у всех одна: без CUDA приходится заново строить программный стек. Альтернативный чип может оказаться быстрее или дешевле для конкретной нагрузки, но сначала проверьте, поддерживается ли ваша модель.
Итог
Автор считает, что для работы достаточно разбираться в основах LLM и немного в GPU, а совет начинать с изучения CUDA описывает последние десять процентов профессии так, будто это вход в неё.
Перед арендой любого GPU сделайте два деления. Веса ÷ VRAM покажут, влезет ли модель. Активные веса ÷ пропускная способность покажут, с какой скоростью она будет работать.
Каран честно оговаривается, что сам эти GPU не тестировал, и все скорости посчитаны по спецификациям. А данные о железе быстро устаревают: источники, написанные всего несколько месяцев назад, уже отставали по Apple, AMD и Groq.
Источник: статья Karan в X.






