Исследователи NVIDIA представили конвейер кодирования KVTC для сжатия кэшей «ключ-значение» в 20 раз для эффективного обслуживания больших языковых моделей

Проблема обслуживания больших языковых моделей (LLM)

Масштабное обслуживание больших языковых моделей — это сложная инженерная задача из-за управления кэшами «ключ-значение» (KV). По мере увеличения размера моделей и их способности к рассуждениям объём кэша KV растёт и становится основным узким местом для пропускной способности и задержки. Для современных трансформеров этот кэш может занимать несколько гигабайт.

Исследователи NVIDIA представили KVTC (KV Cache Transform Coding) — лёгкий трансформ-кодер, который сжимает кэши KV для компактного хранения на GPU и вне GPU. Он обеспечивает сжатие до 20 раз при сохранении точности рассуждений и длинного контекста. В конкретных случаях использования он может достигать 40 раз и более.

Дилемма памяти при выводе LLM

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

* Сохранить кэш: занимает память, необходимую другим пользователям.
* Удалить кэш: влечёт за собой высокие затраты на перевычисление.
* Выгрузить кэш: перемещает данные в оперативную память CPU или на SSD, что приводит к дополнительным накладным расходам на передачу данных.

KVTC в значительной степени смягчает эту дилемму, снижая стоимость хранения данных на кристалле и уменьшая пропускную способность, необходимую для выгрузки.

Как работает конвейер KVTC?

Метод основан на классической компрессии мультимедиа. Он применяет изученное ортогональное преобразование, за которым следуют адаптивное квантование и энтропийное кодирование.

1. Декорреляция признаков (PCA). Разные головы внимания часто демонстрируют схожие паттерны и высокую степень корреляции. KVTC использует анализ главных компонент (PCA) для линейной декорреляции признаков. В отличие от других методов, которые рассчитывают отдельное разложение для каждого запроса, KVTC вычисляет матрицу базиса PCA V один раз на калибровочном наборе данных. Эта матрица затем повторно используется для всех будущих кэшей во время вывода.

2. Адаптивное квантование. Система использует порядок PCA для распределения фиксированного битового бюджета между координатами. Компоненты с высокой дисперсией получают больше бит, а другие — меньше. KVTC использует алгоритм динамического программирования (DP) для поиска оптимального распределения бит, которое минимизирует ошибку реконструкции. Важно отметить, что DP часто присваивает 0 бит конечным главным компонентам, что позволяет сократить размерность и ускорить работу.

3. Энтропийное кодирование. Квантованные символы упаковываются и сжимаются с помощью алгоритма DEFLATE. Чтобы сохранить скорость, KVTC использует библиотеку nvCOMP, которая обеспечивает параллельное сжатие и распаковку непосредственно на GPU.

Защита критических токенов

Не все токены сжимаются одинаково. KVTC избегает сжатия двух конкретных типов токенов, поскольку они непропорционально влияют на точность внимания:

* Токины-приёмники внимания (Attention Sinks): 4 самых старых токена в последовательности.
* Скользящее окно (Sliding Window): 128 самых последних токенов.

Исследования показывают, что сжатие этих конкретных токенов может значительно снизить или даже свести к нулю точность при высоких коэффициентах сжатия.

Тесты и эффективность

Исследовательская группа протестировала KVTC с такими моделями, как Llama-3.1, Mistral-NeMo и R1-Qwen-2.5.

* Точность: при 16-кратном сжатии (примерно 20 раз после DEFLATE) модель стабильно поддерживает результаты в пределах 1 балла от стандартных моделей.
* Сокращение TTFT: для контекста длиной 8K kvtc может сократить время до первого токена (TTFT) до 8 раз по сравнению с полным перевычислением.
* Скорость: калибровка выполняется быстро; для модели объёмом 12 миллиардов токенов она может быть завершена в течение 10 минут на NVIDIA H100 GPU.
* Накладные расходы на хранение: дополнительные данные, хранящиеся для каждой модели, невелики, составляя всего 2,4% от параметров модели для Llama-3.3-70B.

KVTC — это практичный строительный блок для обслуживания LLM с эффективным использованием памяти. Он не модифицирует веса модели и напрямую совместим с другими методами вытеснения токенов.

Ключевые выводы

* Высокое сжатие с низкой потерей точности: KVTC обеспечивает стандартное сжатие в 20 раз, сохраняя результаты в пределах 1 балла от стандартных (несжатых) моделей в большинстве тестов на рассуждения и длинный контекст.
* Конвейер трансформационного кодирования: метод использует конвейер, вдохновлённый классической компрессией мультимедиа, сочетая декорреляцию признаков на основе PCA, адаптивное квантование с помощью динамического программирования и энтропийное кодирование без потерь (DEFLATE).
* Защита критических токенов: для поддержания производительности модели KVTC избегает сжатия 4 самых старых токенов-приёмников внимания и скользящего окна из 128 самых последних токенов.
* Операционная эффективность: система не требует настройки, требуя лишь краткой начальной калибровки (менее 10 минут для модели объёмом 12 миллиардов токенов), которая оставляет параметры модели неизменными и добавляет минимальные накладные расходы на хранение — всего 2,4% для модели объёмом 70 миллиардов токенов.
* Значительное сокращение задержек: за счёт уменьшения объёма хранимых и передаваемых данных KVTC может сократить время до первого токена (TTFT) до 8 раз по сравнению с полным перевычислением кэшей KV для длинных контекстов.

1. Какие проблемы решает технология KVTC в контексте обслуживания больших языковых моделей?

Технология KVTC решает проблему обслуживания больших языковых моделей (LLM) путём сжатия кэшей «ключ-значение» (KV). Это позволяет эффективно управлять памятью и снижать задержки при обработке данных.

2. Какие методы использует KVTC для сжатия кэшей KV?

KVTC использует три метода для сжатия кэшей KV:
* декорреляция признаков (PCA) для линейной декорреляции признаков;
* адаптивное квантование для распределения фиксированного битового бюджета между координатами;
* энтропийное кодирование для упаковки и сжатия квантованных символов.

3. Какие типы токенов KVTC избегает сжимать и почему?

KVTC избегает сжатия двух типов токенов:
* токены-приёмники внимания (Attention Sinks) — 4 самых старых токена в последовательности;
* скользящее окно (Sliding Window) — 128 самых последних токенов.

Исследования показывают, что сжатие этих токенов может значительно снизить или даже свести к нулю точность при высоких коэффициентах сжатия.

4. Какие результаты были получены при тестировании KVTC с различными моделями?

При тестировании KVTC с моделями Llama-3.1, Mistral-NeMo и R1-Qwen-2.5 были получены следующие результаты:
* точность: при 16-кратном сжатии модель стабильно поддерживает результаты в пределах 1 балла от стандартных моделей;
* сокращение TTFT: для контекста длиной 8K kvtc может сократить время до первого токена (TTFT) до 8 раз по сравнению с полным перевычислением;
* скорость: калибровка выполняется быстро; для модели объёмом 12 миллиардов токенов она может быть завершена в течение 10 минут на NVIDIA H100 GPU;
* накладные расходы на хранение: дополнительные данные, хранящиеся для каждой модели, невелики, составляя всего 2,4% от параметров модели для Llama-3.3-70B.

5. Какие преимущества предоставляет KVTC для обслуживания LLM?

KVTC предоставляет следующие преимущества для обслуживания LLM:
* высокое сжатие с низкой потерей точности;
* операционная эффективность;
* значительное сокращение задержек;
* совместимость с другими методами вытеснения токенов.

Источник