← На главную

Глоссарий

Prefill: что это и почему он решает время первого токена

Коротко: Prefill - фаза обработки промпта в LLM-инференсе: модель читает все входные токены (системный промпт, историю, выводы инструментов) и строит KV-кэш до генерации первого токена ответа. В отличие от decode, prefill считается через тензорные ядра и упирается в вычисления, а не в пропускную способность памяти, поэтому на длинных промптах именно он определяет время до первого токена (TTFT). В агентных сценариях, где вход в десятки раз больше выхода, prefill - главная статья времени ответа. Ускоряется faster-железом, анлоком тензорных ядер и спекулятивным prefill (PFlash), но не спекулятивным декодированием.

Prefill и decode - две фазы инференса с разными узкими местами. Prefill обрабатывает весь промпт параллельно: N входных токенов проходят через модель за один-несколько проходов, и на выходе получается KV-кэш, из которого потом растёт генерация. Это матричные умножения на больших батчах - работа для тензорных ядер, поэтому prefill упирается в FLOPs.

Decode - авторегрессионная генерация по одному токену за проход. Каждый токен требует прочитать все веса модели из памяти, поэтому decode упирается в пропускную способность памяти, а не в вычисления.

Почему это важно знать до любого "ускорения"

Любое заявление об ускорении GPU проверяется на то, какой из путей оно трогает. Анлок тензорных ядер даёт +25-55% на prefill и ноль на decode. Спекулятивное декодирование наоборот: экономит decode-проходы, prefill не трогает. Квантованные INT8/INT4-пути часто идут мимо FP32-аккумуляции тензорных ядер и не получают ничего от их ускорения. Без деления на фазы цифры из разных источников несравнимы.

На агентном профиле (большой вход, короткий выход) prefill доминирует во времени ответа: модель "молчит, пока читает". Снижение TTFT там важнее декод-скорости.