Inference

streaming

Поэтапная отправка токенов клиенту по мере генерации, без ожидания полного ответа.

Что такое streaming в инференсе

Стриминг (Server-Sent Events, SSE) — режим, при котором сервер отправляет каждый сгенерированный токен клиенту сразу, не ожидая завершения всего ответа. Именно так работает ChatGPT: пользователь видит, как текст «печатается» в реальном времени.

Без стриминга пользователь ждёт 10–30 секунд до получения первого байта ответа (при длинных ответах). Со стримингом — видит первый токен уже через TTFT (обычно 50–500 мс), что кардинально улучшает воспринимаемое качество сервиса.

Протоколы

  • Server-Sent Events (SSE) — HTTP/1.1, однонаправленный поток; стандарт для OpenAI API (stream: true)
  • WebSocket — двунаправленный, применяется в голосовых приложениях и real-time системах
  • gRPC streaming — для микросервисной архитектуры

Реализация через OpenAI API

from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="token")

stream = client.chat.completions.create(
    model="mistral-7b",
    messages=[{"role": "user", "content": "Объясни трансформеры."}],
    stream=True   # ← включить стриминг
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)
# curl
curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model": "mistral-7b", "messages": [...], "stream": true}'

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

  • TTFT — время до первого стримингового токена
  • TPOT — скорость последующих токенов, определяет плавность стриминга
  • serving — инфраструктура, обеспечивающая стриминг
  • WebSocket — альтернативный протокол для real-time

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

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