Infrastructure

latency

Время между отправкой запроса и получением ответа — ключевая метрика качества сервиса.

Что такое latency

Latency (задержка) — время от отправки запроса клиентом до получения первого (или полного) ответа. Для LLM-сервисов различают:

  • TTFT — Time to First Token: время до первого токена (важно для стриминга)
  • End-to-end latency — полное время генерации ответа
  • p50/p95/p99 — медианная, 95-й и 99-й перцентили задержки при нагрузке

Компоненты latency LLM-сервиса

Total latency = network_in + queue_wait + prefill + decode × output_tokens + network_out
  • network: 1–50 мс (зависит от локации)
  • queue_wait: 0 — ∞ (зависит от нагрузки)
  • prefill: пропорционально длине входного промпта
  • decode: TPOT × число выходных токенов

SLA targets для чат-приложений

Метрика Хорошо Приемлемо Плохо
TTFT p95 < 500 мс < 2 с > 5 с
TPOT < 30 мс < 80 мс > 150 мс
End-to-end (100 токенов) < 5 с < 15 с > 30 с

Latency vs throughput компромисс

Высокий throughput (суммарный TPS) требует batching — что увеличивает latency для отдельного запроса. Нужен баланс:

  • Чат-сервис: приоритет latency, умеренный batching
  • Batch-генерация: приоритет throughput, максимальный batching

Измерение latency

# Простое измерение через OpenAI API
import time
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="token")

start = time.time()
stream = client.chat.completions.create(
    model="mistral-7b",
    messages=[{"role": "user", "content": "Привет!"}],
    stream=True
)
first_token_time = None
for chunk in stream:
    if first_token_time is None:
        first_token_time = time.time()
        print(f"TTFT: {first_token_time - start:.3f}s")
print(f"End-to-end: {time.time() - start:.3f}s")

Связанные термины

  • TTFT — компонент latency до первого токена
  • TPOT — скорость генерации после первого токена
  • throughput — обратный компромисс
  • serving — контекст оптимизации latency

Готовы запустить GPU-задачу?

Запустить GPU-сервер