Streaming токены: инференс начал выдавать слова до завершения модели
Обычный инференс работает так: модель генерирует все токены, а затем их декодируют в слова. При больших входных последовательностях или при размещении вычислений на нескольких GPU это может занять заметное время. Streaming меняет подход: логит каждого следующего токена вычисляется и отправляется клиенту сразу, не дожидаясь остальных.
Эффект заметен в интерактивных приложениях: пользователь видит, что ответ начинается писаться, а не ждёт пустого экрана несколько секунд. На практике это улучшает восприятие задержки, хотя общее время до завершения ответа остаётся прежним.
Реализация в фреймворках
Реализация требует переделки инференс-движка: вместо единого вызова нужен итератор или асинхронный генератор, который выдаёт токены по одному. vLLM, llama.cpp и другие фреймворки добавили встроенную поддержку streaming в последних версиях.
На стороне клиента это усложняет обработку ответа — нужна буферизация и обработка потока данных. WebSocket, Server-Sent Events или NDJSON используются чаще всего, в зависимости от архитектуры сервиса.
Сейчас streaming стал стандартом для всех коммерческих API, и ожидание от локального инференса того же уровня удобства растёт.