Как выбрать GPU под задачу: инференс, дообучение, генерация изображений

Три задачи упираются в три разных параметра карты: инференс — в пропускную способность памяти, дообучение — в ёмкость, генерация изображений — в вычисления. Разбор с расчётом потолка скорости и спецификациями NVIDIA.

YouGPU Team 11 мин

TL;DR — Кратко:

  • Инференс LLM упирается в пропускную способность памяти, дообучение — в её объём, генерация изображений — в скорость вычислений. Одна и та же карта хороша для одной задачи и посредственна для другой.
  • Потолок скорости генерации токенов считается делением: пропускная способность карты на размер весов. Для 8B в bf16 на A100 80GB это 120 токенов в секунду.
  • Больше памяти не значит быстрее. В каталоге L40S с 48 ГБ имеет полосу 864 ГБ/с против 933 ГБ/с у A30 с 24 ГБ.

Вопрос «какую карту взять» задают одинаково, а правильный ответ зависит от задачи сильнее, чем от бюджета. Карта, на которой Llama отвечает быстро, может оказаться посредственной под дообучение той же модели. Карта с вдвое большим объёмом памяти — медленнее в генерации токенов.

Причина в том, что три типовые задачи нагружают три разных подсистемы. Инференс языковой модели читает веса из памяти на каждый токен и упирается в пропускную способность. Дообучение хранит градиенты и состояния оптимизатора и упирается в объём. Генерация изображений прогоняет десятки шагов сэмплирования и упирается в скорость вычислений.

Ниже — как определить своё узкое место, как посчитать потолок для каждой задачи и почему сравнение карт по одной цифре VRAM регулярно приводит к переплате.

Три задачи — три узких места

ЗадачаЧто ограничиваетЧто смотреть в спецификацииЧто почти не важно
Инференс LLMПропускная способность памятиГБ/сTFLOPS
ДообучениеОбъём памятиГБ, наличие NVLinkПиковые TFLOPS без нагрузки
Генерация изображенийСкорость вычисленийTFLOPS, поддержка FP8Объём сверх нужного минимума
Транскрибация, ASRСкорость вычисленийTFLOPSОбъём

Дальше по каждой строке отдельно.

Инференс LLM: решает пропускная способность

Генерация ответа языковой моделью состоит из двух фаз с разным характером нагрузки. Обработка промпта — это матрично-матричная операция по всем токенам сразу, она загружает вычислительные блоки полностью. Генерация ответа — это по одному токену за проход, и на каждый токен модель читает из памяти все свои веса.

В разборе оптимизации инференса на сайте NVIDIA вторая фаза описана прямо: «The speed at which the data (weights, keys, values, activations) is transferred to the GPU from memory dominates the latency, not how fast the computation actually happens. In other words, this is a memory-bound operation».

Отсюда следует формула потолка. Если на каждый токен читаются все веса, то время одного токена не может быть меньше, чем время их чтения:

Потолок скорости ≈ пропускная способность памяти ÷ размер весов

Подставим карты каталога и три ходовых конфигурации. Размеры весов взяты из репозиториев Hugging Face, пропускная способность — из спецификаций NVIDIA:

КартаVRAMПолоса8B bf16 (16.06 ГБ)8B INT4 (5.74 ГБ)70B INT4 (39.53 ГБ)
A3024 ГБ933 ГБ/с58 ток/с163 ток/сне помещается
L40S48 ГБ864 ГБ/с54 ток/с151 ток/с22 ток/с
RTX PRO 600096 ГБ1 597 ГБ/с99 ток/с278 ток/с40 ток/с
A100 80GB PCIe80 ГБ1 935 ГБ/с120 ток/с337 ток/с49 ток/с
H100 80GB SXM80 ГБ3 350 ГБ/с209 ток/с584 ток/с85 ток/с
H200 141GB141 ГБ4 800 ГБ/с299 ток/с836 ток/с121 ток/с

Это теоретический потолок для одного потока, а не замер. Реальная скорость ниже: часть полосы уходит на KV-кеш и активации, добавляются накладные расходы движка. Величина полезна для сравнения карт между собой и для проверки, что заявленная кем-то скорость вообще физически достижима. Источники спецификаций: A30, L40S, RTX PRO 6000 Server Edition, A100, H100, H200.

Из таблицы следуют два вывода, которые меняют выбор карты.

Квантование ускоряет, а не только уменьшает. Переход 8B с bf16 на INT4 сокращает объём чтения втрое, и потолок растёт втрое: с 58 до 163 токенов в секунду на той же A30. Это не побочный эффект, а прямое следствие формулы — вы читаете меньше байт на каждый токен.

Строка 70B INT4 у L40S требует оговорки. Веса 39.53 ГБ формально помещаются в 48 ГБ, но под KV-кеш остаётся около 4 ГБ, и это примерно один запрос с контекстом 8k. Подробный расчёт того, сколько параллельных запросов выдержит карта, — в справочнике по VRAM для инференса LLM.

Практическая сторона запуска разобрана в гайде по DeepSeek-R1 через Ollama и vLLM и в инструкции по Llama 3 в Docker.

Дообучение: решает ёмкость

Здесь картина обратная. Пиковая скорость вычислений почти никогда не оказывается ограничением — процесс останавливается раньше, на нехватке памяти.

При обучении в mixed precision на каждый параметр приходится 18 байт: 6 на две копии весов, 8 на состояния оптимизатора Adam и 4 на градиенты. Против 2 байт на параметр при инференсе — разрыв в девять раз ещё до учёта активаций. Полный разбор с раскладкой по компонентам — в справочнике по VRAM для обучения.

Что из этого следует для выбора карты:

Полное дообучение почти никто не делает. Модель на 7 миллиардов параметров требует 126 ГБ только под статику. Практический путь — LoRA и QLoRA, где базовые веса заморожены и обучаются небольшие адаптеры. Рабочий пример с конкретными цифрами по памяти — в разборе файн-тюнинга Llama 3 8B.

Порог 48 ГБ важнее, чем разница в TFLOPS. Именно на нём появляется QLoRA для 70B и обучение 13B с длинным контекстом. Разница между картой на 24 ГБ и картой на 48 ГБ — это разница между «задача не запускается» и «задача считается», а её никакая скорость вычислений не компенсирует.

Связь между картами важнее их одиночной скорости. При обучении на нескольких GPU градиенты синхронизируются на каждом шаге. Карта с NVLink и карта без него ведут себя по-разному, и это отдельный параметр спецификации. Сравнение по этому признаку разобрано в материале про A100 и RTX 4090.

Генерация изображений: решают вычисления

Диффузионная модель работает иначе, чем языковая. Каждый шаг сэмплирования обрабатывает все токены латента одновременно — это матрично-матричная операция, которая загружает вычислительные блоки, а не шину памяти. Таких шагов от 4 до 50 на изображение.

Поэтому здесь смотрят на TFLOPS и на поддержку низкоточных форматов, а не на ГБ/с. Разница между поколениями архитектуры оказывается заметнее, чем разница в объёме памяти: Ada Lovelace и Blackwell умеют FP8, Ampere — нет. У L40S по спецификации NVIDIA FP16 даёт 362 TFLOPS, а FP8 — 733, то есть вдвое больше.

Память при этом всё равно нужна, но она ведёт себя как порог, а не как множитель. Веса SDXL занимают 6.95 ГБ, FLUX.1 [dev] в bf16 — 33.7 ГБ, и разница между картой на 48 ГБ и картой на 96 ГБ для SDXL не даёт ничего. Полная раскладка по моделям — в справочнике по VRAM для Stable Diffusion, SDXL и Flux, а практика запуска — в гайде по ComfyUI на арендованном GPU.

Транскрибация ведёт себя так же: нагрузка вычислительная, требования к памяти скромные. Расчёт стоимости минуты аудио есть в разборе Whisper на GPU.

Ёмкость и пропускная способность — разные вещи

Это то место, где выбор по одной цифре даёт неверный ответ чаще всего. Объём памяти и скорость доступа к ней — независимые параметры, и в пределах одного каталога они расходятся.

КартаVRAMТип памятиПропускная способность
A3024 ГБHBM2933 ГБ/с
L40S48 ГБGDDR6864 ГБ/с
A100 80GB PCIe80 ГБHBM2e1 935 ГБ/с
RTX PRO 600096 ГБGDDR71 597 ГБ/с
H100 80GB SXM80 ГБHBM33 350 ГБ/с
H200 141GB141 ГБHBM3e4 800 ГБ/с

В этой таблице две инверсии, и обе противоречат правилу «больше памяти — быстрее».

L40S против A30. Памяти вдвое больше — 48 ГБ против 24. Пропускная способность при этом ниже: 864 ГБ/с против 933. На модели, которая помещается в 24 ГБ, A30 сгенерирует токены быстрее.

RTX PRO 6000 против A100 80GB. Памяти на 20% больше — 96 ГБ против 80. Полоса ниже на 17%: 1 597 ГБ/с против 1 935.

Объяснение в типе памяти. HBM ставят на серверные ускорители, GDDR — на карты, выросшие из профессиональной графики. HBM2e у A100 даёт больше полосы, чем GDDR7 у RTX PRO 6000, при меньшем объёме.

Практический вывод простой. Объём определяет, запустится ли задача. Пропускная способность определяет, с какой скоростью она пойдёт, если запустилась. Это два независимых критерия, и порядок их применения зависит от задачи: для дообучения сначала объём, для инференса — сначала полоса среди тех карт, куда модель влезла.

Как измерить своё узкое место

Формулы выше дают ориентир до аренды. Когда задача уже запущена, узкое место определяется замером, и для первой прикидки хватает штатного nvidia-smi.

nvidia-smi --query-gpu=utilization.gpu,utilization.memory --format=csv -l 1

Два поля означают разное, и документация NVIDIA определяет их так. utilization.gpu — «percent of time over the past sample period during which one or more kernels was executing on the GPU». utilization.memory — «percent of time over the past sample period during which global (device) memory was being read or written».

То же самое построчно, без разбора CSV:

nvidia-smi dmon -s u

Как читать пару значений:

utilization.memoryutilization.gpuЧто это значитЧто поможет
ВысокаяЗаметно нижеУпор в чтение весов из памятиКвантование, карта с большей полосой
ВысокаяВысокаяУпор в вычисленияFP8, карта с большими TFLOPS
НизкаяНизкаяУпор не в картуПодача данных, препроцессинг, сеть

Одна оговорка по интерпретации. utilization.memory показывает долю времени, в течение которого память читалась или писалась, а не процент израсходованной пропускной способности. Поле говорит, что шина занята, но не насколько близко она к пределу. Для грубого разделения «память против вычислений» этого достаточно, для точной оценки насыщения полосы — нет.

Третий сигнал берётся из лога движка. vLLM при запуске печатает фактический размер выделенного KV-кеша, и это единственная цифра, которая не зависит от прикидок по спецификациям.

Как выбрать за четыре шага

Шаг 1. Определите фазу нагрузки. Генерация токенов по одному — память. Обработка больших батчей, шаги диффузии, обучение — вычисления и объём.

Шаг 2. Посчитайте нижнюю границу по памяти. Инференс — размер весов плюс KV-кеш под ваш контекст и число запросов. Обучение — 18 байт на параметр при полном дообучении или доли этого при QLoRA. Генерация изображений — сумма денойзера, текстовых энкодеров и VAE.

Шаг 3. Отбросьте карты, куда задача не помещается. Здесь объём работает как фильтр, а не как критерий сравнения. Запас нужен всегда: движок резервирует часть памяти под свой пул, активации добавляются сверху.

Шаг 4. Среди оставшихся выбирайте по узкому месту из шага 1. Для инференса — по ГБ/с. Для обучения — по объёму с запасом и по наличию быстрой связи между картами. Для генерации изображений — по TFLOPS и поддержке FP8.

Порядок важен. Начнёте с четвёртого шага — возьмёте быструю карту, в которую задача не помещается. Остановитесь на третьем — переплатите за память, которая останется незанятой.

Сколько стоит единица работы

Потолок скорости вместе с ценой часа даёт величину, по которой карты сравниваются напрямую, — стоимость миллиона сгенерированных токенов. Расчёт для 8B в INT4, цены каталога на 19 августа 2026 года, минимальное предложение за один GPU:

КартаЦенаПотолокТокенов в час₽ за млн токенов
A3052.68 ₽/час163 ток/с585 00090
A100 80GB PCIe197.41 ₽/час337 ток/с1 214 000163
H100 80GB SXM410.94 ₽/час584 ток/с2 101 000196
L40S132.46 ₽/час151 ток/с542 000244
RTX PRO 6000329.66 ₽/час278 ток/с1 002 000329

Порядок в этой таблице не совпадает с порядком по цене часа. Самая дешёвая карта каталога оказывается и самой дешёвой на единицу работы, а самая дорогая по часу — не самой дорогой по токенам.

Оговорка, без которой вывод получится неверным: расчёт сделан для одного потока. При батчинге веса читаются один раз на шаг для всего батча, поэтому суммарная скорость в токенах растёт с числом одновременных запросов, и дорогие карты отыгрывают цену именно здесь. Разница в запасе памяти под KV-кеш при этом велика: на 24 ГБ помещается около пяти запросов с контекстом 8k для 8B в bf16, на 80 ГБ — около полусотни. Расчёт этого запаса разобран в справочнике по VRAM для инференса LLM.

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

Три сценария

Чат-бот на 8B для внутренней команды. Модель в INT4 — 5.74 ГБ весов. Помещается в любую карту каталога. Узкое место — полоса, значит выбираем по ней среди дешёвых: A30 с её 933 ГБ/с даёт потолок 163 токена в секунду и стоит дешевле карт на 48 ГБ. Брать сюда 48 ГБ незачем: память останется незанятой, а скорость не вырастет.

Дообучение 8B под свой домен. QLoRA укладывается в 16–24 ГБ, но с длинным контекстом и запасом на активации комфортнее 48 ГБ. Скорость вычислений вторична: разница в полчаса на прогоне не стоит переплаты вдвое. Берём самую дешёвую карту на 48 ГБ.

Поток генерации изображений на Flux. Веса в bf16 — 33.7 ГБ, значит нижняя граница 48 ГБ. Узкое место вычислительное, поэтому среди карт на 48 ГБ выбираем по поколению архитектуры: Ada с FP8 предпочтительнее Ampere без него, даже если по объёму они равны. Разбор этой развилки по трём картам каталога — в сравнении RTX A6000 и L40S.

Экономическая сторона — когда аренда выгоднее покупки и при какой загрузке — посчитана отдельно в разборе TCO.

Что в итоге

Единственной правильной карты не существует, потому что три задачи ограничены тремя разными параметрами.

Для инференса языковых моделей смотрите на ГБ/с и считайте потолок делением полосы на размер весов. Квантование здесь ускоряет напрямую, а не только экономит память.

Для дообучения смотрите на объём: 18 байт на параметр против 2 при инференсе — это разрыв, который не закрывается ничем, кроме LoRA и QLoRA либо большего объёма памяти.

Для генерации изображений смотрите на TFLOPS и поддержку FP8. Память здесь порог: набрали нужный объём — дальше платить за него смысла нет.

И держите в голове, что объём и скорость памяти не связаны. В каталоге есть карта с 48 ГБ и полосой ниже, чем у карты с 24 ГБ. Проверить свой профиль нагрузки дешевле всего почасовой арендой: один прогон показывает фактические цифры точнее любой прикидки по спецификациям.

Не уверены, какая карта подойдёт?

A30 на 24 ГБ под инференс 8B, RTX A6000 на 48 ГБ под дообучение и Flux, A100 80GB под 70B. Оплата поминутная, окружение настроено.

Посмотреть каталог