Затраты инференса LLM: TPS‑таргеты и ценообразование
Задача страницы. Дать практическую методику расчёта стоимости инференса LLM: как связаны TPS/QPS, TTFT/TTLT, длины контекста, квантизация и цена за 1M токенов; как планировать ёмкость пулов (short/long) и выбрать модель ценообразования для продукта.
TL;DR
- Стоимость за 1M токенов определяется Tokens/hour и ценой GPU‑часа. Сокращайте контекст/выход и повышайте decode TPS — получите лучшую экономику.
- Планируйте по профилям трафика (short/balanced/long) и держите раздельные пулы. Батчинг + стриминг дают максимум QPS без потери UX.
- Ключевые рычаги: квантизация (INT4/INT8/FP8), жёсткие лимиты max context/max_tokens, разделение по длинам, выбор стека (vLLM/TensorRT‑LLM/TGI/SGLang/llama.cpp).
- Начинайте с пилотных замеров prefill_rate и decode TPS, затем делайте «what‑if» на калькуляторе ниже.
Связанные страницы: /solutions/cost-planner/ • /solutions/llm-inference/quantization/ • /solutions/llm-inference/streaming/ • /solutions/llm-inference/multi-model/ • /solutions/llm-inference/observability/ • /solutions/monitoring-logging/ • /solutions/interruptible-patterns/
Базовая модель: как связаны задержки, TPS и цена
Обозначим:
- L_in — входные токены (префикс/история), L_out — выход.
- P — скорость prefill (ток/с), D — decode TPS (ток/с на батч), B — фактический батч на декоде.
- O — накладные (парсинг, сеть, пост‑обработка).
Латентность запроса (приближённо):
T ≈ (L_in / P) + (L_out / (D / B)) + O
QPS (пропускная способность):
QPS ≈ B / T
Tokens/hour и цена за 1M токенов:
Tokens_per_hour ≈ D × 3600
Cost_per_1M ≈ (GPU_hour_price × Num_GPU) / (Tokens_per_hour / 1e6)
Интерпретация: повысили D (decode TPS) или уменьшили L_out — цена за 1M снижается. Увеличили B — растёт QPS при той же цене.
Что мерить на пилоте (перед расчётами)
Соберите на реальном сэмпле трафика (см. /solutions/llm-inference/observability/):
- Распределения L_in, L_out (p50/p95) по каждому сценарию.
- Prefill_rate (P) и decode TPS (D) выбранного стека на вашей модели/кванте.
- TTFT/TBT/TTLT и queue wait в пулах short/long.
- KV‑кэш: занятость/эвикции; GPU: HBM/util.
- Эти четыре группы метрик достаточно, чтобы построить рабочий прогноз ёмкости и цены.
Быстрый калькулятор (вставьте в любой бэкенд/скрипт) ```
def cost_model(Lin, Lout, P, D, B, overhead, gpu_hour_price, num_gpu):
Латентность
T = (Lin / P) + (Lout / (D / B)) + overhead # сек
Пропускная способность
QPS = B / T
Экономика
tokens_per_hour = D * 3600 cost_per_1M = (gpu_hour_price * num_gpu) / (tokens_per_hour / 1e6) return dict(T=T, QPS=QPS, tokens_per_hour=tokens_per_hour, cost_per_1M=cost_per_1M)
**Как подставлять:**
- Берите Lin/Lout как p50 или p95 конкретного пула, P/D — из пилота, B — «средний активный батч» на декоде вашего стека (из метрик).
- Для **short‑pool** оптимизируйте T (жёсткие лимиты), для **balanced** — cost\_per\_1M, для **long** — стабильность при больших Lin.
**Профили трафика и пулы**
**Short (строгий SLA)**
- L\_in ≤ ~1–2K, L\_out ≤ ~200–300, приоритетная очередь, высокий B.
- Рекомендуемые стеки: vLLM /solutions/llm-inference/vllm/ или TensorRT‑LLM /solutions/llm-inference/tensorrt-llm/.
- Цель: **TTFT/TTLT p95** и стабильный QPS.
**Balanced**
- Средние длины, смешанный трафик, умеренные лимиты.
- vLLM/TGI/SGLang: смотрите /solutions/llm-inference/tgi/, /solutions/llm-inference/sglang/.
**Long**
- Длинные контексты/ответы; мягкая p95, меньшая конкуренция.
- Отдельный пул/инстансы; обязательны лимиты и контроль KV‑кэша.
- Возможен отдельный стек (например, TGI/llama.cpp): /solutions/llm-inference/llama-cpp/.
**Ключевые рычаги снижения цены за 1M токенов**
1. **Квантизация** весов и KV‑кэша: INT4/INT8, FP8 (Hopper) → меньше VRAM, больше одновременность, выше D.
Подробнее: /solutions/llm-inference/quantization/.
2. **Лимиты длины**: max context, max\_tokens, сокращение системных префиксов и истории → меньше L\_in/L\_out.
3. **Батчинг + стриминг**: continuous batching, отдача токенов потоком → высокий B и отличный UX.
См. /solutions/llm-inference/streaming/.
4. **Разделение по длинам**: short/long пулы, разные SLO/лимиты; уменьшает «хвосты» и очереди.
См. /solutions/llm-inference/multi-model/.
5. **Prefix‑кэш / prefill‑экономия**: унифицируйте шаблоны промптов (особенно в vLLM) → растёт полезный D.
См. /solutions/llm-inference/vllm/.
6. **Выбор стека под цель**:
– минимальная p95 → TensorRT‑LLM;
– максимальный TPS → vLLM/SGLang;
– универсальный REST и пулы → TGI;
– тонкие инстансы → llama.cpp. **On‑Demand vs Interruptible (preemptible)**
- **On‑Demand** — фиксированная цена/ч с гарантией доступности.
- **Interruptible** — ниже цена/ч, но возможны прерывания; подходит для асинхронных/пакетных задач и non‑critical потоков.
- Эксплуатационные приёмы: автосейвы/чекпоинты, очереди повторов, гибридные пулы (часть реплик — on‑demand, часть — interruptible).
Подробно: [/solutions/interruptible-patterns/](/solutions/interruptible-patterns/), чекпоинты — [/solutions/llm-training/checkpointing/](/solutions/llm-training/checkpointing/).
**Примеры «what‑if» (как меняется экономика)**
### A) Перешли с FP16 на INT8
- D вырос, VRAM хватает на больший пул → Tokens/hour ↑, Cost\_per\_1M ↓.
- Проверить качество/метрики на вашем домене (см. /solutions/llm-training/eval/).
### B) Ужесточили max\_tokens в short‑pool с 400 до 256
- L\_out ↓ → T ↓ → QPS ↑; цена за 1M меняется меньше, но SLA сильно выигрывает.
### C) Выделили long‑пул
- Short‑пул избавился от хвостов p95; итоговая цена/1M часто снижается за счёт лучшей утилизации.
**Модели ценообразования для продукта**
- **Per‑token (in/out)** — честно и прозрачно; требуется точный биллинг токенов.
- **Per‑request** — просто для клиента; важно жёстко ограничить max\_tokens.
- **Tiered** — пакеты токенов в месяц; удобно для B2B.
- **Reserved capacity** — гарантированная полка QPS за фикс/мес, сверх — по счётчику.
- **Per‑minute streaming** — для «долгих» сценариев (код/аналитика), но контролируйте idle‑тайм.
**Как задать цену:** Target margin + модель издержек:
UnitCost\_per\_1M = Cost\_per\_1M × (1 + Overheads)
Price\_per\_1M = UnitCost\_per\_1M / (1 - TargetMargin)
Где Overheads — сеть/хранилище/гейтвей/резерв/ПО.
**Пошаговый план внедрения**
1. **Сегментируйте трафик** на short/balanced/long.
2. **Снимите метрики** P/D, L\_in/L\_out, TTFT/TTLT, KV/GPU (пилот).
3. **Соберите калькулятор** в /solutions/cost-planner/ с вашим прайсом GPU.
4. **Выберите стек** по цели (SLA/цена) и квантизацию.
5. **Задайте лимиты** max context/max\_tokens, включите стриминг.
6. **Разверните пулы** и биллинг по выбранной модели.
7. **Наблюдаемость и алерты**: /solutions/llm-inference/observability/.
8. **Итеративно** оптимизируйте по p95/cost (A/B пулы, canary‑веса).
**Чек‑лист перед продом**
- Определены SLO: **TTFT/TBT/TTLT p95**, целевые **QPS/TPS**, **Cost\_per\_1M**.
- Измерены P/D, распределения L\_in/L\_out на пилоте.
- Выбран стек (vLLM/TensorRT‑LLM/TGI/SGLang/llama.cpp) и схема квантизации.
- Настроены **пулы** short/long и жёсткие лимиты длины.
- Включён **стриминг**, continuous batching.
- Настроен биллинг: модель тарифа, учёт токенов/минут/запросов.
- Метрики и алерты: /solutions/llm-inference/observability/.
- План деградации: снижение лимитов, фоллбек‑модель, перераспределение трафика.
**Как это использовать в cloudcompute.ru**
- В /solutions/templates/ доступны пресеты **“Cost‑Planner”** и сервера под **vLLM/TensorRT‑LLM/TGI/SGLang/llama.cpp**.
- Для быстрых оценок и мониторинга цены за 1M токенов подключите счётчики из /solutions/llm-inference/observability/ и добавьте панель «Economy».
**Навигация по разделу «Инференс LLM»**
[/solutions/llm-inference/](/solutions/llm-inference/) • [/solutions/llm-inference/vllm/](/solutions/llm-inference/vllm/) • [/solutions/llm-inference/tensorrt-llm/](/solutions/llm-inference/tensorrt-llm/) • [/solutions/llm-inference/tgi/](/solutions/llm-inference/tgi/) • [/solutions/llm-inference/sglang/](/solutions/llm-inference/sglang/) • [/solutions/llm-inference/llama-cpp/](/solutions/llm-inference/llama-cpp/) • [/solutions/llm-inference/quantization/](/solutions/llm-inference/quantization/) • [/solutions/llm-inference/multi-model/](/solutions/llm-inference/multi-model/) • [/solutions/llm-inference/streaming/](/solutions/llm-inference/streaming/) • [/solutions/llm-inference/observability/](/solutions/llm-inference/observability/) • [/solutions/cost-planner/](/solutions/cost-planner/)
Готовы запустить?
Запустить GPU-сервер