Скорость генерации (TPS / TTFT / Latency)
Ключевые инженерные показатели производительности языковых моделей: Time to First Token (время реакции на входной контекст) и Tokens Per Second (скорость потоковой генерации выходного текста).
1. Обзор концепции и системная проблема
В инженерных дискуссиях производительность моделей часто сводят к размытым определениям «быстрая» или «медленная». Такой любительский подход приводит к провалу систем реального времени: интерфейс голосового бота зависает на несколько секунд перед ответом, автодополнение кода в IDE раздражает задержкой появления символов, а фоновые агентские циклы застревают в многочасовых очередях.
Реальный инференс больших языковых моделей подчиняется законам физики полупроводников и делится на две абсолютно разные аппаратные фазы:
- Фаза префилла (Prefill / Context Phase): параллельная обработка входного промпта.
- Фаза декодирования (Decode / Generation Phase): последовательная генерация выходных символов токен за токеном.
Метрики TTFT (Time to First Token) и TPS (Tokens Per Second) — это системный компас инженера, который определяет архитектуру очередей, выбор оборудования и пользовательский опыт интерактивных приложений.
2. Архитектурная таксономия и ментальная модель
Метрики задержки и пропускной способности классифицируются по этапам жизненного цикла запроса:
┌─────────────────────────────────────────────────────────────┐
│ INFERENCE LATENCY TAXONOMY │
├─────────────────────────────────────────────────────────────┤
│ 1. Queue Time (Очередь ожидания свободных ресурсов GPU) │
├─────────────────────────────────────────────────────────────┤
│ 2. Prefill Phase ➔ TTFT (Time to First Token) │
│ • Compute-Bound (TFLOPS Tensor Cores) │
│ • Прямой расчет KV Cache для всего входного текста │
├─────────────────────────────────────────────────────────────┤
│ 3. Decode Phase ➔ TPS / ITL (Inter-Token Latency) │
│ • Memory-Bandwidth Bound (GB/s шины VRAM) │
│ • Последовательное чтение весов на каждый токен │
├─────────────────────────────────────────────────────────────┤
│ 4. Total E2E Latency = TTFT + (N_generated_tokens * ITL) │
└─────────────────────────────────────────────────────────────┘
- TTFT (Time to First Token — время до первого токена):
- Количество миллисекунд от момента отправки HTTP-запроса клиентом до получения первого байта потокового ответа. Состоит из задержки сети, ожидания в очереди и времени расчета префилла.
- TPS (Tokens Per Second — скорость генерации):
- Количество токенов, которое система выдает за одну секунду. Для одного стрима это $1 / \text{ITL}$. Для всего сервера (Aggregate Throughput) — это суммарное количество токенов, сгенерированное всеми клиентами одновременно.
- ITL (Inter-Token Latency — межтокенная задержка):
- Время между появлением соседних токенов во время стриминга. Для человеческого глаза комфортный показатель составляет менее 30 мс на токен (соответствует >33 TPS).
- Спекулятивное декодирование (Speculative Decoding):
- Алгоритмический трюк, который преобразует часть операций фазы Decode в параллельную проверку, увеличивая чистый TPS в 2–3 раза без потери точности.
3. Технический пайплайн и внутренняя механика
Жизненный цикл инференса под микроскопом таймингов:
- Прием запроса и постановка в батч: Запрос из 4000 токенов кода попадает в движок инференса (например, vLLM).
- Префилл (Prefill Phase): GPU загружает матрицы весов и параллельно умножает все 4000 токенов на ядрах Tensor Cores. Вычисляются векторы Q, K, V и инициализируется память KV Cache.
- Эмиссия первого токена (Фиксация TTFT): Первый токен отправляется клиенту через Server-Sent Events. Если промпт кэширован (Prompt Caching), этот этап занимает 50 мс; если нет — от 500 мс до 3 секунд.
- Последовательный цикл декодирования (Decode Loop):
- Для генерации одного токена видеокарта должна прочитать все 70 миллиардов параметров модели из VRAM в кеш кристалла.
- На памяти с пропускной способностью 1000 ГБ/с (RTX 4090) чтение 35 ГБ квантованной модели занимает: $$35 \text{ ГБ} / 1000 \text{ ГБ/с} = 35 \text{ мс на токен} \approx 28 \text{ TPS}$$
- Завершение запроса:
Генерация заканчивается по достижению токена
<|im_end|>или лимита длины, и ресурсы KV Cache освобождаются для других запросов.
4. Практические инженерные сценарии в продакшене
01. Разработка голосового ассистента с живой реакцией (Human-Like Latency)
Человек замечает паузу в разговоре, если ответ задерживается более 500 мс:
- Инженеры выбирают модель Gemini 2.0 Flash или Mistral NeMo с локальным размещением.
- Благодаря оптимизации стека TTFT сокращается до 180 мс, преобразование текста в голос (TTS) занимает еще 120 мс. Суммарное время реакции в 300 мс создает эффект живого диалога.
02. Высокоскоростное автодополнение в IDE (Ghost Text)
Разработчик печатает код в Cursor со скоростью 5 символов в секунду:
- Любая задержка более 150 мс приводит к тому, что подсказка появляется уже после того, как разработчик напечатал новый символ.
- Для таких задач используют специальные легкие модели (3B–7B параметров) или спекулятивные движки, которые выдают первые символы за 40–80 мс.
03. Пакетная обработка больших массивов документов в бэкенде
Ночная обработка 100 000 пользовательских PDF-файлов:
- Отдельный TTFT для каждого файла не имеет значения.
- Сервер оптимизируется под Aggregate Throughput: через непрерывный батчинг (Continuous Batching) в vLLM кластер параллельно обслуживает 256 потоков, достигая суммарной скорости 4 000 токенов в секунду.
5. Подводные камни, типовые ошибки и безопасность
- Падение TPS во время исчерпания KV Cache: Когда видеопамять заполняется на 95%, движок начинает выгружать кеш на SSD или CPU. Скорость генерации мгновенно падает в десятки раз, парализуя систему.
- Слепая гонка за TPS без контроля качества: Модель с высокой скоростью (200 токенов/с), которая генерирует неработающий код с синтаксическими ошибками, лишь увеличивает время разработки на ручные исправления.
- Иллюзия скорости через сетевую буферизацию: Если прокси-сервер (Nginx или Cloudflare) буферизует ответ вместо потоковой передачи (отсутствует заголовок
X-Accel-Buffering: no), клиент не увидит ни одного токена, пока модель не сгенерирует весь текст полностью. - Влияние длины контекста на TTFT: При увеличении входного промпта с 2 000 до 100 000 токенов время префилла без включенного кэширования растет непропорционально, превращая «быструю» модель в медленную.
FAQ: Скорость генерации (TPS / TTFT / Latency)
Связанные термины
Gemini Flash & Pro (Google Gemini)
Семейство мультимодальных моделей от Google DeepMind, объединяющее рекордное контекстное окно (до 2 млн токенов), экстремальную скорость генерации (более 150 токенов/с) и нативное восприятие видео и аудио.
vLLM (Высокопроизводительный движок инференса)
Ведущий открытый серверный движок инференса и обслуживания LLM, который произвел революцию в пропускной способности благодаря алгоритму виртуализации памяти PagedAttention и непрерывному батчингу.
Параметры Семплирования (Температура, Top-p, Min-p)
Математические гиперпараметры стохастического декодирования (Temperature, Top-P, Min-P, Penalties), управляющие распределением вероятностей выбора следующего токена, определяя уровень детерминизма, точности и креативности модели.
MoE (Mixture of Experts - Смесь Экспертов)
Архитектурный подход в глубоком обучении, где тяжелые полносвязные слои трансформера разбиваются на десятки специализированных подсетей («экспертов»), а динамический маршрутизатор активирует лишь небольшую часть из них для каждого отдельного токена.