Пакет — текущая совместно обрабатываемая порция последовательностей, непрерывное формирование пакетов — способ обновлять её состав во время обслуживания. Размер порции не описывает момент приёма новых запросов и освобождения завершённых.
Почему это важно
Больший пакет может увеличить общую производительность и одновременно ухудшить задержку отдельного запроса или исчерпать KV-память. Поэтому лимит активных последовательностей выбирают вместе с токеновым бюджетом, качеством и требованиями к выдаче.
Что подтверждено
Нужно различать число запросов и число одновременно обрабатываемых последовательностей. Запрос может создавать несколько гипотез или вариантов продолжения, поэтому число одновременных запросов не всегда равно B в оценке кэша; реальный состав задаёт режим генерации и планировщик.
Граница применимости: Пакеты инференса, в том числе несколько возвращаемых вариантов и лучевых гипотез; фактическое совместное использование данных между ними учитывают отдельно.
Последовательности разной длины могут дополняться до общей длины или обрабатываться с учётом отдельных длин. Дополнение, маски и выделение KV меняют физическую работу и память; без знания размещения нельзя выбрать между суммой длин и произведением максимальной длины на размер пакета.
Граница применимости: Конкретные плотные, страничные и переменные по длине реализации; эффективная обработка разных длин без дополнения у любого движка не предполагается.
Совместная обработка последовательностей позволяет использовать одни веса для большей порции работы и может улучшить загрузку операций. Выигрыш зависит от формы матриц, реализации операций и ограничивающего ресурса; увеличение пакета не гарантирует пропорциональный рост пропускной способности или сокращение времени каждого запроса.
Граница применимости: Один экземпляр модели и поддержанное пакетное исполнение; не закон масштабирования для любой GPU и длины.
Для одинаковой геометрии полного KV четыре независимые последовательности по 8192 сохраняемых токена требуют в восемь раз больше данных K+V, чем четыре по 1024. Размер пакета не изменился; различается длина. Из этого не следует восьмикратный рост весов или всей памяти процесса.
Граница применимости: Одинаковые L, Hkv, D и тип данных; без общих префиксов, дополнения и оконного удаления KV. При L=32, Hkv=8, D=128 и двух байтах получаются 4 GiB и 0,5 GiB K+V соответственно.
Ожидание накопления пакета может добавить время до начала обработки отдельного запроса. Поэтому режим, дающий больше токенов в секунду суммарно, принимают только вместе с измерением индивидуальной начальной и межтокенной задержки на той же поступающей нагрузке.
Граница применимости: Планировщик, который ждёт подходящий состав пакета, и отдельные целевые показатели сервиса; такое ожидание не объявляется обязательным у всех движков.
При равной сохраняемой длине и независимом плотном KV объём его данных растёт линейно с числом последовательностей. Рабочие буферы и политика выделения добавляют свои затраты, поэтому безопасный предел пакета устанавливают по полному пику памяти, а не по тому, что один запрос успешно выполнился.
Граница применимости: Один экземпляр модели без общих или выгружаемых данных кэша; фактические правила приёма запросов и реакцию на исчерпание памяти проверяют у выбранного движка.
Фиксированный пакет формируют как набор для совместного запуска, тогда как непрерывное формирование пакетов позволяет планировщику менять состав активных последовательностей по мере продвижения работы. Эти режимы различаются обслуживанием коротких и длинных запросов; одно число элементов не описывает всю политику.
Граница применимости: Различение фиксированного состава и планирования на уровне итераций; поддержка конкретного режима определяется движком и его версией, не одной моделью.
Не путать
Пакет описывает состав работы, пропускная способность — выполненную работу за время при заданном профиле нагрузки. Большее число последовательностей не является самостоятельным результатом измерения производительности.
Пакет влияет на число и длины одновременно нужных KV-состояний, а KV-кэш определяет соответствующую область памяти. Для её оценки нужны реальные длины и совместно используемые данные, а не только количество заявок.
Что проверить
- Различайте поступающие запросы, активные последовательности и гипотезы генерации.
- Укажите распределение входных и выходных длин рядом с размером пакета.
- Сверьте дополнение до общей длины, маски, размещение кэша и реализацию операций.
- Рассчитайте токеновый KV-бюджет и измерьте полный пик памяти.
- Проверьте ожидание набора пакета и правила приёма новых последовательностей.
- Измерьте пропускную способность вместе с TTFT и межтокенной задержкой на одной нагрузке.
- Проверьте короткие и длинные запросы, ограничение нагрузки и отказ при заполнении бюджета.
Первоисточники
Transformers 4.44.2: Generation
Hugging Face · документация Hugging Face Transformers v4.44.2, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен.
Открыть первоисточникEfficient Memory Management for Large Language Model Serving with PagedAttention
Woosuk Kwon и соавторы · arXiv:2309.06180, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен.
Открыть первоисточникAttention Is All You Need
Ashish Vaswani и соавторы · arXiv:1706.03762, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен.
Открыть первоисточникCUDA C++ Programming Guide
NVIDIA · CUDA C++ Programming Guide, CUDA 12.6, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен.
Открыть первоисточникGQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints
Joshua Ainslie и соавторы · arXiv:2305.13245, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен.
Открыть первоисточник