Prefill обрабатывает известный вход, decode продолжает его выбранными токенами. Их формы работы и зависимость от длины различаются; быстрый decode не доказывает короткое ожидание первого токена.
Почему это важно
Большой вход может задержать начало ответа, даже если дальнейшие токены появляются быстро. Измерение prefill нужно отделять от очереди и доставки, а сравнение — проводить на точной длине входа с указанием, переиспользовался ли уже подготовленный префикс.
Что подтверждено
Prefill можно объяснить как проход причинного декодера по уже известному входу: вычисления нескольких входных позиций могут выполняться совместно. Причинная маска при этом не даёт позиции использовать будущие токены. Известность полного входа не означает, что будущие выходные токены можно выбирать независимо.
Граница применимости: Производное объяснение: Transformer задаёт причинную маску, PagedAttention рассматривает K/V при авторегрессионном обслуживании. Название serving-этапа prefill и его планирование не приписываются статье Transformer. Область — обычный причинный декодер с полным входным проходом.
Если инференс использует KV-кэш, при обработке входа сохраняются представления ключей и значений нужных слоёв и позиций. Decode затем использует их вместо повторного вычисления тех же K/V; при выключенном кэше или другом механизме состояния этот путь меняется.
Граница применимости: Трансформерный декодер с поддержанным use_cache; не универсальное требование хранить все промежуточные тензоры механизма внимания.
Для обычного decoder-only продолжения распределение следующего токена берут из выхода последней позиции обработанного входа. После выбора из этого распределения получается первый новый токен; сам вход на 4096 токенов не является генерацией 4096 токенов ответа.
Граница применимости: Непустой вход, обычная причинная авторегрессионная генерация; речь о модельном токене, а не о первом байте сетевого ответа.
Время prefill описывает вычислительный этап, а время до первого токена зависит от выбранной границы сервиса. До и после prefill могут находиться очередь, токенизация, переносы, выбор токена и доставка; без трассы нельзя присвоить всю начальную задержку одной обработке входа.
Граница применимости: Измерение одного сервиса с заданными начальной/конечной точками; этапы могут перекрываться, поэтому их длительности не всегда складываются механически.
При полном причинном внимании число пар входных позиций растёт квадратично с длиной, а проекции и другие слои дают отдельную работу. Из этой зависимости нельзя вывести точное время prefill или размер рабочих буферов: они зависят от реализации операций, формы матриц и аппаратного исполнения.
Граница применимости: Полное внимание по входу, без оконного или разреженного внимания и повторного использования префикса; асимптотика не является замером конкретной реализации.
Движок с поддержкой совместного использования подготовленного префикса может не пересчитывать уже подходящие K/V. Поэтому холодный запрос и запрос с повторно используемым префиксом — разные условия замера; выигрыш второго нельзя обещать для произвольного нового текста.
Граница применимости: Только точный префикс, модель и условия повторного использования кэша выбранного движка; наличие такой функции у любого сервера не предполагается.
Нельзя безусловно считать prefill ограниченным только вычислительной мощностью: ограничивающий ресурс зависит от длины и пакета запросов, модели, реализации операций, обмена и устройства. При смене этих условий узкое место может измениться, поэтому профиль измеряют отдельно от decode и указывают фактический режим нагрузки.
Граница применимости: Инженерная интерпретация производительности оборудования и сервиса; универсальный коэффициент масштабирования по длине не задаётся.
Не путать
Prefill — этап вычислений. TTFT — интервал между явно названными событиями сервиса, в который могут войти очередь, подготовка и доставка; эти величины нельзя подменять друг другом.
Prefill производит K/V входного префикса при включённом кэше, а KV-кэш — сохраняемое состояние для дальнейших шагов. Наличие места под кэш не доказывает длительность его построения.
Что проверить
- Укажите модель, длину полного входа и действующий токенизатор.
- Проверьте use_cache и какие данные prefill оставляет для decode.
- Отделите модельный первый токен от первого доставленного сетевого фрагмента.
- Зафиксируйте, использовался ли готовый префикс или вход обрабатывался впервые.
- Измерьте очередь и подготовку отдельно от вычислительного этапа.
- Сравните несколько длин и размеров пакета; не объявляйте один ограничивающий ресурс навсегда.
- Проверяйте одновременно память, начальную задержку и качество длинного входа.
Первоисточники
Attention Is All You Need
Ashish Vaswani и соавторы · arXiv:1706.03762, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен.
Открыть первоисточникEfficient Memory Management for Large Language Model Serving with PagedAttention
Woosuk Kwon и соавторы · arXiv:2309.06180, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен.
Открыть первоисточникTransformers 4.44.2: Generation
Hugging Face · документация Hugging Face Transformers v4.44.2, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен.
Открыть первоисточникCUDA C++ Programming Guide
NVIDIA · CUDA C++ Programming Guide, CUDA 12.6, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен.
Открыть первоисточник