
Суть: смежный кв-кв для более быстрых, более простых выводов 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-запрос. Партия амортизирует стоимость извлечения
Веса модели из памяти графических процессоров и повышают пропускную способность за счет улучшения использования полосы пропускания памяти [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).
Сегодня 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-кэша, одновременно обеспечивая динамическое распределение физической памяти.
• Мы показываем, что судация способна плавно добавлять динамическую поддержку управления памятью к немодифицированным ядрам внимания во фантастике [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.
Оригинал