balkhaev.com Блог · AI-агенты и автоматизации

Свой инференс: open-source модели на арендованных GPUчасть 2 из 7

Как выбрать видеокарту: память, скорость и форматы весов

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

обновлено 8 мин чтенияinferencegpu

Видеоверсия без кода1:51
Свой инференс: open-source модели на арендованных GPUчасть 2 из 7
  1. 01Концепция: когда своя модель выгоднее API
  2. 02Как выбрать видеокарту: память, скорость и форматы весов
  3. 03Что поднимать сейчас: модели и движки
  4. 04RunPod и Vast.ai: где арендовать и как не переплатить
  5. 05Свой эндпоинт: vLLM, замер скорости и доступ по ключу
  6. 06Картинки и видео: ComfyUI на арендованной видеокарте
  7. 07Деньги: цена миллиона токенов, простой и serverless

Два этапа генерации

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

Префилл. Модель читает весь ваш запрос: системный промпт, историю, документы. Все токены запроса обрабатываются разом, большими матричными умножениями. Здесь видеокарта упирается в вычислительную мощность. От этого этапа зависит, сколько ждать первого токена.

Декод. Модель генерирует ответ по одному токену. Для каждого токена нужно прочитать из памяти все активные веса модели, а посчитать с ними нужно совсем немного. Видеокарта большую часть времени ждёт память. От этого этапа зависит, как быстро идёт текст.

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

Сколько памяти нужно

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

Память видеокарты Веса моделипараметры × байт на параметр Кэш контекста (KV)растёт с длиной и числом запросов Служебноеактивации, CUDA, движок

Веса

Число параметров умножается на размер одного параметра в выбранном формате:

Формат Байт на параметр 27B модель 120B модель
BF16 (исходный) 2 54 ГБ 240 ГБ
FP8 1 27 ГБ 120 ГБ
FP4 / INT4 около 0,5 около 15 ГБ около 65 ГБ

Для MoE-моделей (Mixture of Experts) считается общее число параметров, а не активное. Модель на 35B параметров, из которых на каждый токен работают 3B, всё равно должна целиком лежать в памяти.

Кэш контекста

Для каждого токена в контексте модель хранит ключи и значения внимания на каждом слое. Это KV-кэш, и он растёт линейно с длиной контекста и с числом одновременных запросов. Для классического внимания размер на один токен:

KV на токен = 2 × число слоёв × число KV-голов × размер головы × байт на значение

Все эти числа есть в файле config.json модели на Hugging Face (num_hidden_layers, num_key_value_heads, head_dim). Для типичной плотной модели на 30B с 64 слоями, 8 KV-головами по 128 и кэшем в BF16 получается 256 КБ на токен. Один запрос на 32 тысячи токенов занимает 8 ГБ, а десять таких параллельно уже 80 ГБ, больше, чем сами веса.

Хорошие новости: современные модели борются с этим. Сжатое внимание (MLA у DeepSeek и Kimi), скользящее окно на части слоёв (Gemma), гибриды с линейным вниманием (Qwen3.5 и новее, Nemotron) уменьшают кэш в разы. Поэтому формула выше даёт оценку сверху. Точную цифру показывает сам движок при запуске: vLLM пишет в лог, сколько токенов кэша поместилось в память.

Кэш тоже можно хранить в FP8. Это вдвое увеличивает число токенов, которое помещается в ту же память, почти без потери качества.

Правило на глаз

Возьмите размер весов в выбранном формате и добавьте к нему от 20 до 50 процентов. Двадцать, если контекст короткий и запросов мало. Пятьдесят и больше, если нужен длинный контекст и много параллельных пользователей. Если результат не влезает в одну видеокарту, есть три пути: формат поменьше, видеокарта побольше или несколько видеокарт.

Какая будет скорость

Верхнюю границу скорости генерации для одного запроса можно прикинуть до запуска:

токенов в секунду (максимум) ≈ пропускная способность памяти / размер активных весов

Плотная модель на 27B в FP8 весит 27 ГБ. У H100 SXM память читается со скоростью 3,35 ТБ/с, получается потолок около 120 токенов в секунду на один поток. Реально выходит 60 – 80 процентов от потолка.

MoE-модель на 35B с 3B активных параметров в том же FP8 на каждый токен читает около 3 ГБ, и её потолок уже около тысячи токенов в секунду. На практике её ограничат другие накладные расходы, но разница с плотной моделью всё равно кратная. Поэтому MoE так популярны для инференса: памяти нужно как у большой модели, а скорость как у маленькой.

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

Форматы весов и поколения видеокарт

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

Формат Где работает аппаратно Когда брать
BF16 везде, начиная с Ampere (A100, RTX 30xx) когда память позволяет и нужен эталон качества
FP8 Ada (RTX 40xx, L40S), Hopper (H100, H200), Blackwell основной формат для серверного инференса: потери качества почти не видны
NVFP4, MXFP4 Blackwell (B200, B300, RTX 50xx, RTX PRO 6000); MXFP4 у gpt-oss работает и на Hopper когда нужно вместить большую модель; на Blackwell ещё и быстрее
AWQ, GPTQ (INT4) любые видеокарты NVIDIA через оптимизированные ядра старые и потребительские видеокарты, где нет FP8
GGUF llama.cpp и Ollama, в том числе CPU и Mac локальный запуск и маленькие сервера, не для высокой нагрузки

На A100 FP8 тоже запустится, но без аппаратной поддержки: веса хранятся в FP8 и экономят память, а считается всё в BF16. Работает, но скорости как на H100 не ждите.

Практический вывод: если видеокарта поддерживает FP8, берите FP8-версию модели от авторов. Её проверяли на качество, и она вдвое меньше исходной.

Видеокарты, которые реально сдают в аренду

Цены ориентировочные, это прайс RunPod на начало ноября 2026 года за одну видеокарту в час. На Vast.ai те же карты часто дешевле, об этом в четвёртой части.

Видеокарта Память Скорость памяти FP8 / FP4 Цена в час Для чего
RTX 4090 24 ГБ 1,0 ТБ/с да / нет около 0,9 доллара модели до 14B в FP8, до 32B в INT4, картинки
RTX 5090 32 ГБ 1,8 ТБ/с да / да около 1,2 доллара модели до 27B в FP8 с коротким контекстом, картинки и видео
L40S 48 ГБ 0,86 ТБ/с да / нет около 1,1 доллара много памяти за небольшие деньги, но медленная память
RTX PRO 6000 96 ГБ 1,8 ТБ/с да / да около 2,5 доллара лучшая цена за гигабайт; модели до 70B в FP8, MoE до 120B в FP4
A100 80 ГБ 80 ГБ 2,0 ТБ/с нет / нет около 1,8 доллара дёшево, но без FP8; подходит для BF16 и INT4
H100 80 ГБ 3,35 ТБ/с да / нет около 3 – 4 долларов стандарт серверного инференса
H200 141 ГБ 4,8 ТБ/с да / нет около 5,3 доллара большие модели и длинный контекст на одной карте
B200 180 ГБ 8 ТБ/с да / да около 8 долларов самая быстрая генерация, крупные MoE в FP4
B300 288 ГБ 8 ТБ/с да / да около 9 долларов ещё больше памяти на карту

У AMD есть MI300X (192 ГБ, 5,3 ТБ/с) и более новые карты. vLLM и SGLang их поддерживают, но в аренде на RunPod и Vast.ai их мало, а готовых образов и оптимизаций под них меньше. Если не хотите разбираться с совместимостью, начните с NVIDIA.

Несколько видеокарт

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

  • В серверах на H100, H200 и B200 карты соединены NVLink, и восемь карт работают почти как одна большая.
  • Потребительские карты и RTX PRO 6000 связаны через PCIe. Две карты работают нормально, четыре уже заметно теряют на обмене.

Отсюда правило: одна большая видеокарта лучше двух маленьких. Две RTX 5090 в сумме дают 64 ГБ, но одна RTX PRO 6000 на 96 ГБ будет проще, быстрее на длинном контексте и почти не дороже.

Самые большие открытые модели живут только на серверах из восьми карт. Например, веса DeepSeek V4.1 Flash занимают около 510 ГБ, а Kimi K3 больше полутора терабайт. Такой сервер стоит 40 – 70 долларов в час, и это тот случай, когда провайдер с оплатой за токены почти всегда выгоднее.

Как выбрать за пять минут

да нет да нет да нет да нет Выбрали модель Посчитали веса в FP8и добавили 30 процентов До 24 ГБ? До 32 ГБ? До 96 ГБ? До 141 ГБ? RTX 4090 RTX 5090 RTX PRO 6000или H100, если важна скорость H200 Несколько H200 или B200,или FP4, или провайдер

Две поправки к схеме. Если важна скорость ответа одному пользователю, поднимайтесь на ступень выше по скорости памяти: H100 вместо RTX PRO 6000. Если важна пропускная способность на много пользователей, считайте память под кэш щедрее: чем больше памяти остаётся после весов, тем больше запросов видеокарта обработает одновременно.

Что дальше

Теперь мы умеем прикидывать, какая видеокарта нужна под модель. В следующей части выбираем саму модель: какие открытые модели стоит запускать сейчас под разные задачи и бюджеты, и каким движком их обслуживать: vLLM, SGLang, llama.cpp или Ollama.