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}'
Связанные термины
Готовы запустить GPU-задачу?
Запустить GPU-сервер