Бен Диксон

Исследователи Nvidia представили новую методику, которая значительно сокращает объем памяти, необходимый большим языковым моделям для отслеживания истории разговора — до 20 раз — без изменения самой модели. Метод, называемый KVCache Transform Coding (KVTC), использует идеи из форматов сжатия мультимедиа, таких как JPEG, для уменьшения размера кэша ключ-значение в многоходовых системах искусственного интеллекта, снижая требования к памяти графического процессора и ускоряя время получения первого токена до 8 раз.
Для корпоративных приложений искусственного интеллекта, использующих агентов и длительные контексты, это приводит к снижению затрат на память графического процессора, более эффективному повторному использованию подсказок и сокращению задержки до 8 раз за счет исключения необходимости пересчета потерянных значений кэша ключ-значение.
Для масштабируемой обработки больших языковых моделей требуется управление огромными объемами данных, особенно в случае многоходовых диалогов и длительных сессий программирования. Каждый раз, когда пользователь добавляет что-либо к подсказке, система использует сохраненную память, чтобы избежать пересчета всей истории диалога с нуля.
Однако объем используемой памяти быстро растет, создавая серьезное узкое место, влияющее на задержку и затраты на инфраструктуру.
Почему кэш ключ-значение становится узким местом в масштабах предприятия
Для работы многошаговых приложений искусственного интеллекта, таких как помощники по программированию или чат-приложения, большие языковые модели используют механизм, известный как кэш ключ-значение (KV) . Этот кэш хранит скрытые числовые представления для каждого предыдущего токена в диалоге. Поскольку модель запоминает прошлый диалог, ей не нужно повторно обрабатывать всю историю чата каждый раз, когда пользователь отправляет новый запрос.
Однако для приложений ИИ с задачами, требующими длительного контекстного анализа, этот кэш может легко разрастись до нескольких гигабайт. По мере масштабирования моделей и генерации все более длинных цепочек рассуждений, кэш ключ-значение становится критическим узким местом для пропускной способности системы и задержки.

Это создает серьезную проблему для производственных сред. Поскольку LLM-модели сильно зависят от памяти во время выполнения инференции, одновременное обслуживание нескольких пользователей ограничивается исчерпанием памяти GPU, а не временем вычислений. «Эффективное управление кэшем ключ-значение становится критически важным, поскольку неиспользуемые кэши должны быстро выгружаться из памяти GPU для размещения других пользователей и быстро восстанавливаться для возобновления разговоров», — сказал VentureBeat Адриан Ланкуцки, старший инженер по глубокому обучению в Nvidia. «Эти инфраструктурные затраты теперь отражены в коммерческих ценах (например, как «быстрое кэширование») с дополнительной платой за кэширование».
Даже компромиссные решения, такие как перенос кэша на хранилища более низкого уровня, например, в память процессора или на SSD-накопители, приводят к значительным накладным расходам на передачу данных, которые могут перегрузить пропускную способность сети и создать узкие места.
Одно из распространенных решений — сжатие кэша ключ-значение (KV-кэш) для уменьшения объема занимаемой памяти. Однако существующие решения часто не справляются с проблемой комплексно. Инструменты, предназначенные для сжатия кэшей при передаче по сети, обеспечивают низкую степень сжатия. Другие методы сжатия требуют ресурсоемких вычислений в режиме реального времени для каждого запроса пользователя. Между тем, популярные методы, такие как квантование или разреживание, могут приводить к снижению задержки и точности или требовать внесения постоянных изменений в веса модели, что ограничивает их практическое применение.
В своей статье исследователи Nvidia отмечают, что существующие подходы «редко используют сильную низкоранговую структуру тензоров ключ-значение». Это означает, что, несмотря на огромное количество измерений и размер в гигабайтах, фактическая информация в кэше ключ-значение сильно коррелирована и может быть точно представлена с использованием гораздо меньшего количества переменных. Именно на использовании этой характеристики и сосредоточен KVTC.
Заимствование приемов из медиакодеков
В общих чертах, KVTC решает проблему узкого места в памяти ИИ, заимствуя проверенную концепцию из классической области медиа: трансляционное кодирование — методологию, лежащую в основе распространенных форматов сжатия изображений и видео, таких как JPEG. Фреймворк уменьшает объем кэша за счет быстрого многоэтапного процесса, который выполняется между фазами вывода, чтобы избежать замедления фактической генерации токенов. «Этот подход к «сжатию медиаконтента» выгоден для корпоративного развертывания, поскольку он неинтрузичен: он не требует изменений в весах модели или коде и работает в непосредственной близости от транспортного уровня», — сказал Ланкуцки.
Во-первых, KVTC использует анализ главных компонентов (PCA) для выравнивания признаков данных кэша ключ-значение на основе их важности. PCA — это статистический метод, часто используемый в машинном обучении для повышения эффективности моделей путем выделения наиболее важных признаков данных и удаления избыточности. Эта часть процесса выполняется только один раз на этапе начальной калибровки для каждой модели. Поскольку матрица выравнивания PCA вычисляется в автономном режиме и используется повторно, она не замедляет процесс сжатия во время вывода для отдельных запросов пользователей.

Далее система использует алгоритм динамического программирования для автоматического распределения объема памяти, необходимого для каждого конкретного измерения данных. Наиболее важные главные компоненты получают высокую точность, в то время как второстепенные, менее важные компоненты получают меньше битов или им присваиваются нулевые биты, и они полностью отбрасываются.
Наконец, конвейер обрабатывает эти оптимизированные, квантованные данные, упаковывает их в массив байтов и пропускает через энтропийный кодер DEFLATE. Поскольку этот шаг выполняется параллельно непосредственно на графическом процессоре с использованием библиотеки nvCOMP от Nvidia, он работает на очень высоких скоростях.
Для декомпрессии данных при возвращении пользователя KVTC просто выполняет вычисления в обратном порядке. Для ускорения процесса он выполняет основную работу по декомпрессии по частям, слой за слоем. Это позволяет модели ИИ начать вычисление следующего ответа раньше, используя первый декомпрессированный фрагмент, в то время как последующие фрагменты декомпрессируются в фоновом режиме.

20-кратное сжатие, снижение точности менее чем на 1%.
Исследователи Nvidia протестировали KVTC на разнообразном наборе моделей с количеством параметров от 1,5 до 70 миллиардов, включая семейство Llama 3, Mistral NeMo и ресурсоемкие модели Qwen 2.5, созданные на основе алгоритма R1. Они оценили эти модели на различных бенчмарках, включая сложные математические и программные задачи, такие как MATH-500 и LiveCodeBench, а также ресурсоемкие задачи поиска в длинном контексте, такие как «Иголка в стоге сена» и поиск ключ-значение.
Они сравнили KVTC с несколькими популярными базовыми методами: методами вытеснения токенов (например, H2O и TOVA), методами интенсивного квантования (например, KIVI и GEAR) и xKV (методом сжатия мгновенных данных, основанным на сингулярном разложении ).
При эффективном коэффициенте сжатия 20x, KVTC стабильно демонстрировал снижение точности менее чем на один процентный пункт по сравнению с исходными, несжатыми моделями без сжатия в большинстве задач. Когда исследователи довели систему до экстремальных пределов сжатия до 32x и 64x, KVTC показал себя на удивление хорошо.
Напротив, популярные базовые алгоритмы, такие как KIVI и GEAR, начали демонстрировать значительное снижение точности уже при пятикратном сжатии, особенно в задачах с длинным контекстом. Стандартные методы вытеснения данных из кэша, такие как H2O и TOVA, оказались совершенно неэффективными в качестве универсальных компрессоров, фактически переставая работать при попытке извлечения глубокой контекстной информации.

Рассмотрим развертывание более компактной модели логического мышления, такой как Qwen 2.5 1.5B, для системы автоматического программирования. Обычно эта модель требует 29 КБ памяти на каждый токен. Используя 8-кратное сжатие, KVTC уменьшила этот объем примерно до 3,2 КБ на токен, при этом снижение точности программирования составило незначительные 0,3 процентных пункта.
Для корпоративных архитекторов решение о том, когда применять этот метод, во многом зависит от конкретного сценария использования. «KVTC оптимизирован для сценариев с длинным контекстом и несколькими циклами», — сказал Ланкуцки. Он указал на помощников по кодированию, итеративные рабочие процессы агентного рассуждения — особенно при ожидании результатов работы инструментов с высокой задержкой — и итеративный RAG как на идеальные приложения. «Однако пользователям следует избегать KVTC для коротких разговоров», — добавил он, поскольку несжатое скользящее окно новейших токенов доминирует в последовательности в коротких взаимодействиях, препятствуя достижению значимых коэффициентов сжатия.
KVTC обладает высокой портативностью, и в скором времени оптимизированная реализация будет интегрирована в KV Block Manager (KVBM) в рамках платформы Dynamo, что сделает её совместимой с популярными механизмами вывода с открытым исходным кодом, такими как vLLM.
Что наиболее важно для удобства пользователя, KVTC значительно сокращает время до получения первого токена (TTFT), то есть задержку между отправкой запроса и генерацией моделью первого ответного токена. При запросе на 8000 токенов стандартной 12-битной модели, работающей на графическом процессоре Nvidia H100, требуется примерно 3 секунды для пересчета истории с нуля. При этом система может распаковать кэш KVTC всего за 380 миллисекунд, обеспечивая сокращение времени генерации первого токена до 8 раз.
Поскольку KVTC не изменяет способ обработки токенов моделью, теоретически он совместим с методами удаления токенов, такими как динамическое разреживание памяти (DMS), еще одним передовым методом сжатия. DMS — это авторегрессивный метод удаления токенов, который оптимизирует память, выявляя и полностью удаляя из контекстного окна наименее важные токены.
«В принципе, KVTC дополняет DMS», — заявил Ланкуцки. «В то время как DMS удаляет отдельные токены вдоль временной оси, KVTC сжимает данные в каждой позиции отдельно». Однако он предостерег, что, хотя они нацелены на разные измерения, «еще предстоит проверить, каких коэффициентов сжатия можно достичь с помощью KVTC на разреженных кэшах».
Поскольку модели продолжают масштабироваться до контекстных окон, содержащих миллионы токенов, потребность в надежном управлении памятью будет только расти. «Учитывая структурное сходство и повторяющиеся закономерности в кэшах ключ-значение в различных архитектурах моделей, появление выделенного стандартизированного слоя сжатия весьма вероятно», — сказал Ланкуцки. Благодаря аппаратным усовершенствованиям, инфраструктура ИИ вскоре сможет рассматривать сжатие кэша ключ-значение как невидимый стандартизированный слой, подобно тому, как сегодня сжатие видео используется для потоковой передачи.
Подпишитесь, чтобы получать самые свежие новости!
Подробные аналитические данные для руководителей предприятий в области искусственного интеллекта, данных и безопасности.
Отправляя свой адрес электронной почты, вы соглашаетесь с нашими Условиями использования и Политикой конфиденциальности.
Получайте обновления ! Вы подписаны! Наши последние новости скоро поступят на вашу электронную почту.
Источник: venturebeat.com





















