Суть: смежный кв-кв для более быстрых, более простых выводов LLM

Суть: смежный кв-кв для более быстрых, более простых выводов LLM

11 июня 2025 г.

Аннотация и 1 введение

2 фон

2.1 Модели больших языков

2.2 Фрагментация и Pagegataturation

3 проблемы с моделью Pagegatatturetion и 3.1 требуют переписывания ядра внимания

3.2 Добавляет избыточность в рамки порции и 3,3 накладных расходов

4 понимания систем обслуживания LLM

5 Vattument: проектирование системы и 5.1 Обзор дизайна

5.2 Использование поддержки CUDA низкого уровня

5.3 Служение LLMS с ваттенцией

6 -й ваттиция: оптимизация и 6,1 смягчения внутренней фрагментации

6.2 Скрытие задержки распределения памяти

7 Оценка

7.1 Портативность и производительность для предпочтений

7.2 Портативность и производительность для декодов

7.3 Эффективность распределения физической памяти

7.4 Анализ фрагментации памяти

8 Связанная работа

9 Заключение и ссылки

Абстрактный

Эффективное использование памяти графического процессора имеет важное значение для высокой пропускной способности LLM. Предыдущие системы зарезервировали память для KV-Cache заранее, что приводит к потраченной впустую емкости из-за внутренней фрагментации. Вдохновленный системами виртуальной памяти на основе ОС, VLLM предложил Pagegatattument, чтобы обеспечить динамическое распределение памяти для KV-Cache. Этот подход устраняет фрагментацию, что позволяет высокопроизводительному обслуживанию LLM с большими размерами партий. Однако, чтобы иметь возможность динамически распределять физическую память, Pagegatattention изменяет макет KV-кэша от смежной виртуальной памяти в нерегинной виртуальной памяти. Это изменение требует, чтобы ядра внимания были переписаны, чтобы поддержать пейджин и рамки обслуживания для реализации менеджера памяти. Таким образом, модель PAGGETATTIANTION приводит к сложности программного обеспечения, вопросам портативности, избыточности и неэффективности

В этой статье мы предлагаем ваттицию для динамического управления памятью KVCache. В отличие от Pagegatatention, Vattument сохраняет KV-кэш в смежной виртуальной памяти и использует поддержку системы низкого уровня для подготовки спроса, которая уже существует, чтобы обеспечить распределение физической памяти по требованию. Таким образом, Vattument развевает разработчика ядра внимания от необходимости явно поддерживать пейджинг и избегать переопределения управления памятью в рамках обслуживания. Мы показываем, что судация обеспечивает беспрепятственное управление динамической памятью для неизменных реализаций различных ядер внимания. Слива также генерирует токены до 1,97 × быстрее, чем VLLM, в то время как обрабатывает входные подразделения до 3,92 × и 1,45 × быстрее, чем варианты PAGEDATATUTION во вспышке и FlashInfer.

1 Введение

Большие языковые модели (LLMS) развертываются в широком спектре приложений, например, ботов в чате, поисковых систем и помощников по кодированию [1–3, 5–7, 32, 40]. Таким образом, оптимизация вывода LLM стал важным [26, 36, 38, 39, 41, 47, 49]. Одним из ключевых методов, используемых для повышения пропускной способности LLM, является пакетная пропускная способность [25, 39, 41, 47]. Из двух этапов вывода LLM, а именно, префиллы и декодирования-фаза декодирования связана с памятью, поскольку он обрабатывает один токен AT-At-Atime PER-запрос. Партия амортизирует стоимость извлечения

Table 1. The PagedAttention model requires an application to explicitly manage dynamically allocated physical memory. These examples highlight the complexity, performance and maintenance challenges associated with this approach.

Веса модели из памяти графических процессоров и повышают пропускную способность за счет улучшения использования полосы пропускания памяти [26].

Эффективный вывод также требует тщательного распределения памяти графических процессоров. Для каждого запроса LLM поддерживает состояние в памяти, известное как KV-кэш, и повторно использует его в каждой итерации для жизни запроса [26, 41, 47]. Достижение высокого использования емкости памяти во время вывода является сложной задачей по двум причинам: 1) для каждого отрицательного квэша растет медленно, то есть один токен на итерацию (несколько 10 с миллисекундов) и 2) количество сгенерированных токенов, и, следовательно, общий размер KV-кв-крика запроса, как правило, неизвестно.

Предыдущие системы, такие как Orca [47] и Feartransformer [18], выделяют смежный кусок виртуальной памяти (поддержанный предварительной физической памятью) для KV-кэша. Распределенный размер соответствовал максимальной поддерживаемой длине последовательности модели, например, 32K. Поскольку модели часто генерируют гораздо меньше жетонов, чем максимальный предел, значительная память графического процессора была потрачена впустую из -за внутренней фрагментации. Следовательно, эти системы демонстрируют плохую пропускную способность, поскольку они не могут поддерживать большие размеры партии.

Вдохновленный подготовкой спроса в системах виртуальной памяти на основе ОС, VLLM представила Pagegataturation [39], чтобы смягчить фрагментацию памяти, связанную с KV-кэшем. Вместо того, чтобы оставить максимальную длину последовательности памяти к кв-кэшу в преддверии времени, VLLM выделяет небольшие блоки виртуальной памяти (поддержанную физической памятью) по требованию, то есть, когда ранее выделенные блоки полностью используются, и модель продолжает генерировать больше токенов. Тем не менее, динамически выделенные блоки не гарантируют смеж в виртуальной памяти (система могла выделить их по другим запросам). Таким образом, Pagegatattunition соглашается с тем, что распределение KV-Cache будет несмежным и реализует блок-столы, чтобы сшивать эти несвязанные ассигнования (§3.2).

Table 2. Dynamic memory management in various systems. TensorRT-LLM [14], LightLLM [12] and FlashAttention [33] also adopt vLLM-style PagedAttention model. FlashInfer uses a compressed representation and prefetching to limit the overhead of paging. We introduce various LLM-specific optimizations to hide the impact of high allocation latency in vAttention.

Сегодня Pagegatattureation стал де-факто стандартом динамического распределения памяти в системах обслуживания LLM, например, в Tensorrt-Llm [14], Hurgingface TGI [8], Flashinfer [46], Lightllm [12] и т. Д.виртуальныйпамять, чтобы иметь возможность распределятьфизическийПамять динамически. Хотя этот подход обеспечивает адекватное решение для фрагментации квэша, мы утверждаем, что он имеет несколько ловушек (см. Таблицу 1 для эмпирических доказательств и реальных опытов):

1. Требуется переписывать ядро ​​внимания (код графического процессора).Элементы практически смежного объекта можно получить с помощью поиска на основе индекса, который является одновременно простым и эффективным [1]. Хранив KV-кэш в непосредственной виртуальной памяти, Pagegatattention требует переписывания кода графического процессора, чтобы ядро ​​внимания могло отменить все элементы KV-кэша. Необходимость переписать код является основным препятствием для использования новых оптимизаций внимания в производственных настройках.

2. Добавляет сложность и избыточность программного обеспечения (код процессора). Pagegatattureation также заставляет разработчиков реализовать диспетчер памяти в рамках обслуживания, что делает его ответственным за (DE) распределение KV-кэш и отслеживание местоположения динамически распределенных блоков KV-кэша. Этот подход по сути переводится на переосмысление подготовки спроса, которое является функцией OS-в коде пользователя.

3. вводит накладные расходы на производительность.Pagegatattureation может добавить накладные расходы во время выполнения в критическом пути исполнения двумя способами. Во-первых, это требует, чтобы ядра графического процессора выполняли дополнительный код, связанный с получением KV-Cache из бессвязных блоков памяти. Мы показываем, что это может замедлить расчет внимания более чем на 10% во многих случаях. Во -вторых, диспетчер памяти пользователя может добавить накладные расходы на процессоров, что составляет еще 10% затрат (§3.3).

В этой статье мы утверждаем, что сохранение смежности виртуальной памяти KV-кэша имеет решающее значение для снижения сложности программного обеспечения и избыточности в развертываниях LLM. Вместо того, чтобы переопределять пейджинг на уровне пользователя, мы утверждаем, что существующие абстракции виртуальной памяти в ОС могут быть переоценены для динамического управления памятью с помощью KV-кэша, что приводит к упрощенным развертываниям, а также более высокой производительности.

Чтобы продемонстрировать это, мы предлагаем ваттенцию-систему, которая хранит KV-кэш в смежной виртуальной памяти, не совершая физическую память заранее. Мы достигаем этого, используя поддержку CUDA низкоуровневых API виртуальной памяти, которые обнажают различные интерфейсы для распределения виртуальной и физической памяти (§5). Vattument обнаруживает набор простых API с использованием того, что структура порции оставляет за собой смежное виртуальное пространство для кв-кэша и выделяет физическую память по требованию. Этот подход придает несколько преимуществ, как указано в таблице 2. Vattention также улучшает мобильность, позволяя бесшовному повторному использованию легкодоступных ядер графических процессоров, одновременно устраняя необходимость реализации менеджера памяти в системе обслуживания.

Проблемы и оптимизации:Vattention решает две ключевые проблемы в обеспечении эффективного управления динамической памятью без Pagegatatention (§6). Во -первых, минимальная гранулярность распределения физической памяти, поддерживаемое API CUDA, составляет 2 МБ. Этот размер может привести к значительной потраченной впустую мощности в зависимости от модели и характеристик рабочей нагрузки (Таблица 8). Чтобы решить эту проблему, мы изменяем драйвер виртуальной памяти с открытым исходным кодом CUDA, чтобы добавить поддержку более тонкозернистого распределения физической памяти от 64 КБ до 256 КБ. Во-вторых, распределение памяти с использованием API CUDA вызывает высокую задержку, потому что каждое распределение включает в себя поездку в обратном пути к ядру. Чтобы скрыть задержку распределения памяти от конечных пользователей, мы вводим несколько специфических для LLM оптимизации, таких как перекрытие распределения памяти с вычислением, выполнение некоторых операций заранее и откладывание мелиорации памяти. Мы показываем, что наши оптимизации делают VATTUITION эффективным менеджером памяти к KV-Cache.

В целом, мы вносим следующие вклад в эту статью:

• Мы представляем ваттенцию, систему, которая сохраняет виртуальную смелость kv-кэша, одновременно обеспечивая динамическое распределение физической памяти.

Figure 1. Illustration of memory waste due to internal fragmentation. Orca (top) reserves memory for the KV-cache ahead-oftime. vLLM (bottom) mitigates fragmentation with dynamic memory allocation. Shaded boxes represent memory occupied by the KV tokens whereas the white boxes represent allocated but unused memory.

• Мы показываем, что судация способна плавно добавлять динамическую поддержку управления памятью к немодифицированным ядрам внимания во фантастике [9] и FlashInfer [11], а также производительность.

• Мы оцениваем графические процессоры Yi-6B, Llama-3-8B и YI-34B на 1-2 A100 и показываем, что использование оригинального ядра FlashAttention, Vattuente Overforms VLLM до 1,97 ×, одновременно уменьшая вариант во время первого тара (TTFT) до 1,45 × по сравнению с капюзиатом.

Эта статья естьДоступно на ArxivПод CC по лицензии 4.0.


[1] Популярный пример этого - массивы и связанные списки.

Авторы:

(1) Рамья Прабху, Microsoft Research India;

(2) Аджай Наяк, Индийский институт науки и участвовал в этой работе в качестве стажера в Microsoft Research India;

(3) Джаяшри Мохан, Microsoft Research India;

(4) Рамачандран Рамджи, Microsoft Research India;

(5) Ашиш Панвар, Microsoft Research India.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE