К тренажеру
ВопросMediumllm-servingРеальный собес

Что такое prefill и decode стадии в LLM inference

Что такое prefill и decode стадии при генерации LLM и почему их важно различать при оптимизации inference?

Короткий ответ

Prefill обрабатывает весь prompt и заполняет KV cache; decode генерирует новые токены по одному, переиспользуя KV cache. Prefill обычно compute-heavy, decode часто memory-bandwidth/latency sensitive.

Полный разбор

Prefill - это первый проход по входному prompt. Модель обрабатывает все prompt tokens, считает hidden states и складывает K/V для каждого слоя в KV cache. Эта стадия зависит от длины входного контекста и хорошо параллелится по токенам.

Decode - это autoregressive генерация следующих токенов. На каждом шаге добавляется один новый токен, query текущего токена attends к уже сохраненным K/V из cache, затем выбирается следующий token. Decode плохо параллелится по time dimension и часто упирается в memory bandwidth и scheduler.

Разделение важно для оптимизации: long prompt бьет по TTFT через prefill, long generation бьет по tokens/sec через decode. Continuous batching должен уметь смешивать запросы в разных стадиях.

Теория

KV cache связывает prefill и decode: expensive K/V для прошлого контекста считаются один раз, а затем используются на каждом decode-step.

Типичные ошибки

  • Считать, что вся генерация одинаково обрабатывает весь контекст заново.
  • Не связать prefill с TTFT.
  • Не связать decode с autoregressive one-token-at-a-time loop.

Как отвечать на собеседовании

  • Используй термины TTFT и tokens/sec.
  • Скажи, что prefill parallel по prompt tokens, decode sequential по generated tokens.