Chunked Prefill
Узнай, как пакетный префилл (chunked prefill) улучшает задержку и пропускную способность инференса LLM, разделяя длинные промпты на фрагменты токенов для более плавного обслуживания при параллельных нагрузках.
Фрагментированный префилл — это метод планирования инференса, который делит длинный входной промпт на более мелкие группы токенов вместо обработки всего промпта за одну непрерывную операцию. Механизм инференса может чередовать эти фрагменты с генерацией токенов для других запросов, не позволяя одному длинному промпту монополизировать GPU. Результатом обычно являются более плавная задержка при одновременных рабочих нагрузках, лучшее использование аппаратного обеспечения и более предсказуемый сервис для интерактивных приложений больших языковых моделей.
Как работает фрагментированный префилл#
Авторегрессионный инференс Transformer имеет две основные фазы:
- Префилл: Модель обрабатывает все входные токены, вычисляет их состояния внимания и заполняет кэш KV. Префилл оценивает множество токенов параллельно и обычно ограничен производительностью вычислений.
- Декодирование: Модель генерирует вывод по одному токену за раз, читая ранее закэшированные состояния. Декодирование часто ограничивается пропускной способностью памяти, а не скоростью вычислений.
Без фрагментации запрос на 20 000 токенов может занимать шаг инференса гораздо дольше, чем короткий запрос. Активные генерации могут испытывать паузы, увеличивая задержку между токенами, даже если их собственные промпты малы.
При фрагментированном префилле планировщик назначает каждой итерации бюджет токенов. Сначала он планирует операции активного декодирования, а затем использует оставшийся бюджет для одного или нескольких фрагментов промпта. Если промпт не помещается, его оставшиеся токены ждут следующей итерации. Текущее руководство по оптимизации vLLM описывает этот подход как способ объединить ресурсоемкую работу по префиллу с декодированием, требующим много памяти.
Фрагментация меняет время обработки токенов промпта, а не их порядок или смысл. Каждый завершенный фрагмент расширяет закэшированное состояние внимания запроса до тех пор, пока полный промпт не будет готов и не сможет начаться декодирование.
Почему важен фрагментированный префилл#
Фрагментированный префилл решает конкурирующие задачи производительности в продакшене сервиса моделей:
- Задержка между токенами: Приоритет существующих запросов декодирования помогает потоковым ответам продолжаться без долгих пауз.
- Время до первого токена: Большие фрагменты быстрее завершают новый промпт, в то время как очень маленькие фрагменты могут задерживать его первый сгенерированный токен.
- Пропускная способность: Совмещение работы префилла и декодирования позволяет более эффективно использовать вычисления GPU и пропускную способность памяти.
- Справедливость: Длинные промпты с меньшей вероятностью будут блокировать множество коротких интерактивных запросов.
Таким образом, настройка фрагмента или бюджета токенов является компромиссом. Конфигурация планировщика vLLM предоставляет элементы управления для лимитов пакетных токенов, частичных префиллов и порогов для длинных промптов. Меньшие бюджеты обычно благоприятствуют отзывчивому декодированию, в то время как большие бюджеты благоприятствуют более быстрому поступлению промптов.
Фрагментация не устраняет все узкие места. Длинные контексты по-прежнему потребляют память кэша, а излишне агрессивный прием может вызвать нагрузку на кэш, вытеснение запросов или повторную работу. Операторы должны измерять медианную и хвостовские задержки инференса, время до первого токена, задержку между токенами, пропускную способность и использование памяти GPU при реалистичных распределениях промптов.
Связанные концепции инференса#
Фрагментированный префилл тесно связан с несколькими оптимизациями, но служит для определенной цели:
- Непрерывный батчинг: Динамически добавляет и удаляет запросы во время генерации. Фрагментированный префилл дополняет его, делая обработку длинных промптов планируемой на границах токенов.
- Кэширование промптов: Повторно использует ранее вычисленные состояния для повторяющегося префикса промпта. Фрагментированный префилл планирует новые вычисления, он не пропускает их.
- Управление постраничным кэшем KV: Организует закэшированные состояния внимания в блоки памяти. Обзор TensorRT-LLM от NVIDIA включает постраничное кэширование и батчинг на лету наряду с оптимизациями обработки промптов.
- Динамический батчинг: Объединяет отдельные запросы в батчи, как описано в руководстве по динамическому батчингу NVIDIA Triton. Он не обязательно делит отдельный длинный промпт на частичные префиллы.
- Раздельные префилл и декодирование: Запускает фазы на отдельных воркерах. Руководство по развертыванию префилла и декодирования от NVIDIA показывает, как этапы могут масштабироваться независимо.
Although the Ultralytics YOLO26 Triton deployment workflow supports scalable computer vision inference and automatic batching, standard YOLO object detection does not have an autoregressive text-prefill phase. Chunked prefill applies primarily to generative language and multimodal models.
Реальные приложения#
-
Ассистенты документов: Ассистент с дополненной генерацией (RAG) может получить длинный отчет и одновременно обслуживать пользователей с короткими вопросами. Фрагментирование префилла отчета позволяет текущим чатам продолжать декодирование, вместо того чтобы зависать до обработки всего контекста.
-
Мультимодальный видеоанализ: Зрительно-языковая модель может получить признаки изображения, описания объектов и длинную текстовую инструкцию. Конвейер зрения может сначала создавать детектирования с помощью предсказания Ultralytics YOLO, а затем отправлять структурированный визуальный контекст в генеративную модель. Фрагментированный префилл помогает планировать полученные визуальные и текстовые токены наряду с другими запросами. Мультимодальный рабочий процесс кодирования-префилла-декодирования от NVIDIA иллюстрирует, почему независимое управление этими этапами может улучшить масштабируемость.
Практическое руководство по развертыванию#
Включайте фрагментированный префилл только через движок обслуживания, который официально поддерживает целевую архитектуру. Например, конфигурация бэкенда TensorRT-LLM документирует элементы управления фрагментированным контекстом для поддерживаемых развертываний.
Проводите бенчмаркинг с реалистичной степенью параллелизма, длиной входных и выходных данных, вместо того чтобы полагаться на один запрос. Начните с рекомендованного средой бюджета токенов, затем отрегулируйте его, следя за временем до первого токена и задержкой между токенами. Наконец, протестируйте смешанные рабочие нагрузки, содержащие как очень длинные, так и очень короткие промпты; именно здесь фрагментированный префилл обеспечивает свою наиболее очевидную эксплуатационную ценность.






