Логотип Тераферма Тераферма Регистрация

4 октября 2026 г. · Анатолий Крылов, редактор Тераферма

Скорость генерации токенов LLM: от чего зависит и как оценить

Спидометр и поток блоков-токенов из видеокарты — скорость генерации токенов LLM и от чего она зависит

Скорость генерации токенов LLM при работе с одним пользователем определяется в первую очередь пропускной способностью видеопамяти: на каждый токен карта читает все веса модели. Отсюда простая оценка: разделите пропускную способность в ГБ/с на размер весов в ГБ. Например, Llama 8B в 4 битах (~5 ГБ) на RTX 4090 (~1 000 ГБ/с) упирается в потолок около 200 токенов в секунду, а на практике выдаёт 120–160.

Две фазы генерации: prefill и decode

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

Prefill — обработка запроса. Модель читает весь промпт целиком и параллельно считает его токены. Это интенсивные матричные вычисления, и здесь важны терафлопсы карты. Prefill определяет время до первого токена: сколько вы ждёте, прежде чем ответ начнёт появляться.

Decode — генерация ответа. Модель выдаёт токены по одному. Для каждого нужно прочитать из памяти все активные веса, а вычислений на эти данные приходится немного. Поэтому decode упирается не в вычисления, а в скорость памяти.

Для длинного промпта с коротким ответом (например, классификации документов) важнее prefill. Для чата и генерации текстов важнее decode. Большинство пользователей под «скоростью модели» понимают именно его.

Формула оценки скорости

Теоретический потолок скорости decode для одного запроса:

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

Реальная скорость ниже потолка из-за чтения KV-кеша, накладных расходов движка и неидеального использования памяти. Ориентируйтесь на 50–80% от расчёта: лучшие движки на крупных картах ближе к верхней границе.

Размер весов считается так: число параметров × байт на параметр. В FP16 — 2 байта, в FP8 и INT8 — 1 байт, в 4 битах с учётом служебных данных — около 0,55–0,6 байта.

Пропускная способность памяти популярных карт (по спецификациям производителя, округлённо):

Карта Память Пропускная способность Тариф, ₽/час
RTX 4060 Ti 16 ГБ ~290 ГБ/с 15
RTX 3060 12 ГБ ~360 ГБ/с 10
RTX A6000 48 ГБ ~770 ГБ/с 60
L40S 48 ГБ ~860 ГБ/с 102
RTX 3090 24 ГБ ~940 ГБ/с 22
RTX 4090 24 ГБ ~1 000 ГБ/с 44
RTX 5090 32 ГБ ~1 790 ГБ/с 70
A100 80 ГБ 80 ГБ ~2 000 ГБ/с 102
H100 SXM 80 ГБ ~3 350 ГБ/с 255
H200 141 ГБ ~4 800 ГБ/с 534

Интересное следствие: RTX 3090 за 26 ₽/час по скорости генерации для одного пользователя почти не уступает RTX 4090, потому что пропускная способность у них близкая. Разница в вычислительной мощности проявляется на prefill и при больших батчах.

Примеры расчёта для популярных моделей

Посчитаем потолок и ожидаемую скорость для нескольких сочетаний.

Модель и точность Размер весов Карта Потолок, ток/с Ожидаемо, ток/с
8B, 4 бита ~5 ГБ RTX 3060 ~72 40–55
8B, 4 бита ~5 ГБ RTX 4090 ~200 120–160
8B, FP16 ~16 ГБ RTX 3090 ~59 35–47
32B, 4 бита ~19 ГБ RTX 4090 ~53 30–42
32B, 4 бита ~19 ГБ RTX 5090 ~94 55–75
70B, 4 бита ~40 ГБ RTX A6000 ~19 11–15
70B, 4 бита ~40 ГБ A100 ~50 30–40
70B, FP8 ~70 ГБ H100 SXM ~48 30–38

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

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

Что ещё влияет на скорость

Длина контекста. На каждый токен модель читает не только веса, но и KV-кеш всех предыдущих токенов. При контексте в десятки тысяч токенов кеш занимает гигабайты, и скорость падает. Для модели 8B разница между контекстом 1 000 и 32 000 токенов может быть заметной.

Архитектура MoE. В моделях Mixture of Experts на токен активна только часть параметров. Например, у DeepSeek R1 из 671 млрд активны около 37 млрд. В формулу подставляется размер активных весов, поэтому MoE генерирует быстрее плотной модели того же общего размера. Но в память всё равно должны поместиться все параметры. Подробнее читайте в статье как запустить DeepSeek R1.

Движок инференса. llama.cpp и Ollama удобны для одного пользователя. vLLM и SGLang эффективнее используют память и выигрывают при параллельных запросах. Разница между движками на одной карте может доходить до десятков процентов.

Несколько карт. Тензорный параллелизм делит веса между картами, и каждая читает только свою часть. Скорость растёт, но не линейно: карты обмениваются данными на каждом слое. Без NVLink, через PCIe, прирост от второй карты меньше.

Квантизация KV-кеша. Хранение кеша в 8 битах вместо 16 вдвое сокращает его объём. Это позволяет обрабатывать более длинный контекст или больше параллельных запросов на той же карте, а при длинных диалогах ещё и немного ускоряет генерацию.

Тепловой режим и лимит мощности. Карта, которая перегревается или работает с урезанным лимитом энергопотребления, снижает частоты. На скорость decode это влияет меньше, чем на prefill, но при замерах стоит проверить частоты и температуру в nvidia-smi.

Спекулятивное декодирование. Маленькая модель-черновик предлагает несколько токенов, большая проверяет их за один проход. На предсказуемых текстах это даёт ускорение в 1,5–2,5 раза.

Скорость одного запроса и пропускная способность сервиса

Важно различать две метрики.

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

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

Пример: модель 8B на RTX 4090 через vLLM может выдавать одному пользователю 120+ токенов в секунду, а при 32 параллельных запросах — суммарно больше тысячи, хотя каждый отдельный пользователь получит меньше.

У батчинга есть обратная сторона: память под KV-кеш. Каждый параллельный запрос хранит свой кеш, и при длинных контекстах именно он, а не веса, ограничивает число одновременных пользователей. Поэтому карта с большей памятью, например RTX 5090 с 32 ГБ вместо RTX 4090 с 24 ГБ, при одинаковой модели может обслуживать заметно больше параллельных сессий.

Для API и продакшена считайте именно пропускную способность и цену миллиона токенов. Как развернуть vLLM, описано на странице запуска vLLM.

Какая скорость нужна для разных задач

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

Задача Комфортная скорость Что важнее
Чат с человеком 20–30 ток/с Время до первого токена
Голосовой ассистент 40+ ток/с Задержка всего ответа
RAG по документам 20–40 ток/с Prefill длинного контекста
Рассуждающие модели 50+ ток/с Скорость decode
Агенты с цепочками вызовов 60+ ток/с Скорость decode и prefill
Пакетная обработка текстов Не важна для одного запроса Суммарная пропускная способность

Для чата модель 8B на RTX 3060 уже даёт комфортную скорость, и брать RTX 4090 ради цифр в бенчмарке нет смысла. А вот для агента, который делает десять последовательных вызовов модели на каждый запрос пользователя, каждая лишняя секунда умножается на десять.

В RAG-сценариях отдельно оцените prefill. Если вы подаёте в модель 20 000 токенов контекста, время до первого токена может составить несколько секунд даже на быстрой карте. Здесь вычислительная мощность важнее пропускной способности памяти, и разница между RTX 3090 и RTX 4090 становится заметной: у второй тензорные ядра примерно вдвое производительнее.

Как замерить скорость своей модели

Точнее всего покажет короткий тест на арендованной карте.

  1. Арендуйте карту-кандидат, например RTX 4090, на 15–20 минут.
  2. Запустите модель в нужном движке и точности.
  3. В Ollama выполните запрос с флагом --verbose: в конце будет строка eval rate с токенами в секунду.
  4. Для vLLM используйте встроенный скрипт бенчмарка с нужным числом параллельных запросов.
  5. Повторите на второй карте и сравните цену миллиона токенов: тариф в час ÷ (токенов в секунду × 3 600) × 1 000 000.

Пример: 140 токенов в секунду на RTX 4090 за 48 ₽/час даёт около 504 000 токенов в час, то есть примерно 87 ₽ за миллион токенов для одного потока. С батчингом цена падает в разы.

Не забудьте замерить сценарий, близкий к реальному: с вашей длиной промпта, типичной длиной ответа и ожидаемым числом одновременных пользователей. Скорость на коротком запросе «привет» почти ничего не говорит о поведении модели на документе в 10 000 токенов.

Тест на 15 минут стоит 11 ₽ на RTX 4090 и 6 ₽ на RTX 3090. Это дешевле любой ошибки в выборе карты для сервиса, который будет работать месяцами.

Вопросы по теме

От чего больше всего зависит скорость генерации токенов?

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

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

Разделите пропускную способность памяти карты на размер весов модели в гигабайтах — получится теоретический потолок токенов в секунду. Реальная скорость обычно составляет 50–80% от этого значения.

Ускоряет ли квантизация генерацию?

Да. Модель в 4 битах весит примерно в 3,5 раза меньше, чем в 16 битах, поэтому при генерации карте нужно читать меньше данных на токен. Скорость растёт, хотя и не строго пропорционально.

Сколько токенов в секунду нужно для комфортного чата?

Человек читает примерно 5–10 токенов в секунду, поэтому для чата хватает 20–30. Для рассуждающих моделей и агентов, которые генерируют тысячи токенов перед ответом, нужно 50 и больше.

Подберите GPU

20 моделей с поминутной оплатой в рублях.