Chunked Prefill
Узнай, как поэтапное заполнение улучшает задержку и пропускную способность инференса LLM, разделяя длинные промпты на фрагменты токенов для более стабильного обслуживания при параллельных нагрузках.
Чанкованный префилл — это метод планирования инференса, который разбивает длинный входной промпт на небольшие группы токенов, вместо того чтобы обрабатывать весь промпт за одну непрерывную операцию. Движок инференса может чередовать обработку этих чанков с генерацией токенов для других запросов, не позволяя одному длинному промпту монополизировать GPU. В результате при параллельной обработке запросов обычно повышается плавность задержек, улучшается утилизация оборудования и обеспечивается более предсказуемая работа интерактивных приложений на основе больших языковых моделей.
Как работает чанкованный префилл#
Авторегрессионный инференс Transformer состоит из двух основных фаз:
- Префилл: Модель обрабатывает все входные токены, вычисляет их состояния внимания и заполняет KV-кэш. Префилл обрабатывает множество токенов параллельно и обычно ограничен вычислительной производительностью.
- Декодирование: Модель генерирует выходные данные по одному токену за раз, считывая ранее сохранённые состояния. Декодирование часто ограничено пропускной способностью памяти, а не чистой вычислительной мощностью.
Без разбиения запрос на 20 000 токенов может занимать шаг инференса намного дольше короткого запроса. Из-за этого активная генерация может приостанавливаться, увеличивая задержку между токенами, даже если собственные промпты таких запросов невелики.
При чанкованном префилле планировщик назначает каждой итерации бюджет токенов. Сначала он планирует активные операции декодирования, а затем использует оставшийся бюджет для одного или нескольких чанков промпта. Если промпт не помещается, его оставшиеся токены ожидают следующей итерации. В текущих рекомендациях по оптимизации vLLM этот подход описывается как способ объединить ресурсоёмкую с точки зрения вычислений работу префилла с декодированием, интенсивно использующим память.
Разбиение меняет момент обработки токенов промпта, но не их порядок и смысл. Каждый завершённый чанк расширяет кэшированное состояние внимания запроса, пока не будет готов весь промпт и не начнётся декодирование.
Почему важен чанкованный префилл#
Чанкованный префилл помогает сбалансировать конкурирующие цели производительности в производственной среде обслуживания моделей:
- Задержка между токенами: Приоритет существующих запросов на декодирование помогает потоковым ответам продолжаться без длительных пауз.
- Время до первого токена: Большие чанки позволяют быстрее завершить обработку нового промпта, тогда как очень маленькие чанки могут задержать генерацию его первого токена.
- Пропускная способность: Объединение работы префилла и декодирования может эффективнее использовать вычислительные ресурсы GPU и пропускную способность памяти.
- Справедливость: Длинные промпты с меньшей вероятностью блокируют множество коротких интерактивных запросов.
Таким образом, настройка размера чанка или бюджета токенов представляет собой компромисс. Конфигурация планировщика vLLM предоставляет параметры для ограничения числа токенов в батче, частичного префилла и задания порогов для длинных промптов. Меньшие бюджеты обычно обеспечивают более отзывчивое декодирование, тогда как большие бюджеты ускоряют загрузку промпта.
Разбиение не устраняет все узкие места. Длинные контексты по-прежнему потребляют память кэша, а слишком агрессивный допуск запросов может привести к нехватке места в кэше, вытеснению запросов или повторным вычислениям. Операторам следует измерять медианную и хвостовую задержку инференса, время до первого токена, задержку между токенами, пропускную способность и использование памяти GPU при реалистичном распределении промптов.
Связанные понятия инференса#
Чанкованный префилл тесно связан с несколькими оптимизациями, но выполняет отдельную задачу:
- Непрерывная пакетная обработка: Динамически добавляет и удаляет запросы во время генерации. Чанкованный префилл дополняет её, делая обработку длинных промптов планируемой на границах токенов.
- Кэширование промптов: Повторно использует ранее вычисленные состояния для повторяющегося префикса промпта. Чанкованный префилл планирует новые вычисления, но не пропускает их.
- Управление постраничным KV-кэшем: Организует кэшированные состояния внимания в блоки памяти. В обзоре TensorRT-LLM от NVIDIA постраничное кэширование и пакетная обработка запросов в полёте рассматриваются наряду с оптимизациями обработки промптов.
- Динамическая пакетная обработка: Объединяет отдельные запросы в батчи, как объясняется в руководстве NVIDIA Triton по динамической пакетной обработке. Она не обязательно разделяет отдельный длинный промпт на частичные префиллы.
- Разделение префилла и декодирования: Запускает фазы на отдельных рабочих процессах. В рекомендациях NVIDIA по развёртыванию префилла и декодирования показано, как вместо этого можно независимо масштабировать эти этапы.
Хотя рабочий процесс развёртывания Ultralytics YOLO26 в Triton поддерживает масштабируемый инференс для компьютерного зрения и автоматическую пакетную обработку, стандартное обнаружение объектов YOLO не содержит авторегрессионной текстовой фазы префилла. Чанкованный префилл применяется главным образом к генеративным языковым и мультимодальным моделям.
Практические применения#
-
Помощники по работе с документами: Помощник с дополненной поиском генерацией может одновременно получать длинный отчёт и обслуживать пользователей с короткими вопросами. Разбиение префилла отчёта на чанки позволяет текущим чатам продолжать декодирование, вместо того чтобы зависать до обработки всего контекста.
-
Мультимодальный анализ видео: Модель компьютерного зрения и языка может получать признаки изображений, описания объектов и длинную текстовую инструкцию. Сначала конвейер компьютерного зрения может сформировать обнаружения с помощью предсказаний Ultralytics YOLO, а затем передать структурированный визуальный контекст генеративной модели. Чанкованный префилл помогает планировать полученные визуальные и текстовые токены вместе с другими запросами. В рабочем процессе NVIDIA для мультимодального кодирования, префилла и декодирования показано, почему независимое управление этими этапами может повысить масштабируемость.
Практические рекомендации по развёртыванию#
Включай чанкованный префилл только через движок обслуживания, который официально поддерживает целевую архитектуру. Например, в конфигурации бэкенда TensorRT-LLM описаны параметры управления чанкованным контекстом для поддерживаемых развёртываний.
Проводите бенчмаркинг с реалистичными уровнями параллелизма, длиной входных и выходных данных, а не на основе одного запроса. Начните с рекомендуемого средой выполнения бюджета токенов, затем корректируйте его, отслеживая время до первого токена и задержку между токенами. Наконец, протестируйте смешанные рабочие нагрузки, содержащие как очень длинные, так и очень короткие промпты: именно в таких условиях чанкованный префилл приносит наиболее очевидную операционную пользу.









