Yolo Vision Shenzhen
Шэньчжэнь
Присоединиться сейчас
Глоссарий

КВ-кэш

Узнайте, как KV Cache оптимизирует модели Transformer, такие как LLM. Узнайте, как эта техника сокращает задержку вывода и повышает эффективность Ultralytics .

KV Cache (кеш ключей-значений) — важная техника оптимизации, используемая в основном в больших языковых моделях (LLM) и других архитектурах на основе трансформеров для ускорения задержки вывода и снижения вычислительных затрат. По сути, кэш KV хранит матрицы ключей и значений, сгенерированные механизмом внимания для предыдущих токенов в последовательности. За счет сохранения этих промежуточных вычислений модель избегает пересчета состояний внимания для всей истории разговора каждый раз, когда она генерирует новый токен. Этот процесс преобразует рабочий процесс генерации текста из квадратичной сложности в линейную, что делает взаимодействие с чат-ботами и ИИ-агентами .

Механизм и преимущества

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

  • Увеличение скорости: благодаря извлечению заранее вычисленных ключей и значений из памяти система значительно ускоряет движка вывода. Это важно для приложений, требующих низкой задержки, таких как вывод в реальном времени в ботах обслуживания клиентов.
  • Эффективность использования ресурсов: хотя это увеличивает использование памяти (VRAM), оно значительно снижает вычислительную мощность (FLOP), необходимую для каждого токена. Этот компромисс часто регулируется с помощью таких методов, как квантование модели или пейджингом, подобно тому, как операционные системы управляют RAM.
  • Расширенный контекст: Эффективное управление кэшем KV позволяет моделям обрабатывать более крупные контекстом, что позволяет им обрабатывать длинные документы или поддерживать связные разговоры в течение длительных периодов времени.

Применение в реальном мире

Кэш KV является фундаментальным компонентом при внедрении современного генеративного ИИ, но его принципы также распространяются на компьютерного зрения (CV).

  1. Генеративные чат-боты: такие сервисы, как ChatGPT или Claude в значительной степени полагаются на кэширование KV. Когда пользователь задает дополнительный вопрос, модель не перечитывает всю историю чата с нуля. Вместо этого она добавляет новый ввод к кэшированным состояниям предыдущего хода, что позволяет получать практически мгновенные ответы.
  2. Понимание видео: в задачах понимания видео задачах модели последовательно обрабатывают кадры. Подобно текстовым токенам, визуальные особенности из прошлых кадров могут быть кэшированы, чтобы помочь модели track или распознавать действия без повторной обработки всей истории видео. Это особенно актуально для распознаванию действий , где временной контекст имеет решающее значение

Эффективное управление памятью

По мере увеличения размера моделей размер кэша KV может стать узким местом, потребляя гигабайты GPU . Недавние достижения сосредоточены на оптимизации этого хранилища.

  • PagedAttention: Вдохновленный виртуальной памятью в операционных системах, PagedAttention (введенный vLLM) позволяет хранить кэш KV в несоседних блоках памяти. Это снижает фрагментацию и позволяет использовать более крупные пакеты при обслуживания модели.
  • Квантование кэша KV: чтобы сэкономить место, разработчики часто применяют смешанную точность или int8 квантование специально для кэшированных значений. Это уменьшает объем занимаемой памяти, позволяя устройствам с ограниченным объемом ОЗУ запускать модели.
  • Кэширование подсказок: связанная с этим техника, при которой состояния KV статической системы подсказок (например, «Вы — полезный помощник по кодированию») вычисляются один раз и повторно используются во многих различных сессиях пользователей. Это основная функция для оптимизации разработки подсказок рабочих процессов в масштабе.

Различение смежных понятий

Полезно отличать KV Cache от других терминов, связанных с кэшированием и оптимизацией:

  • Кэш KV и кэширование подсказок: Кэш KV обычно относится к динамической памяти, используемой для хранения токенов во время одного потока генерации. Кэширование подсказок особенно относится к хранению обработанного состояния фиксированной входной инструкции для повторного использования в нескольких независимых вызовах инференса.
  • KV-кэш против вложений: вложения — это векторные представления входных данных (текста или изображений), которые отражают семантическое значение. KV-кэш хранит активации (ключи и значения), полученные из этих вложений в слоях внимания, специально для целей генерации последовательностей.
  • Кэш KV против весов модели: Веса модели — это статические, обученные параметры нейронной сети. Кэш KV состоит из динамических временных данных , генерируемых во время прямого прохождения определенной последовательности входных данных.

Пример: контекст в моделях видения

Хотя кэширование KV наиболее известно в области NLP, концепция поддержания состояния применима к передовым моделям зрения. В примере ниже мы моделируем идею передачи состояния (контекста) в сценарии отслеживания видео с использованием Ultralytics . Здесь трекер сохраняет идентичность объектов между кадрами, что концептуально похоже на то, как кэш сохраняет контекст между токенами.

from ultralytics import YOLO

# Load the Ultralytics YOLO26 model
model = YOLO("yolo26n.pt")

# Track objects in a video, maintaining identity state across frames
# The 'track' mode effectively caches object features to link detections
results = model.track(source="https://ultralytics.com/images/bus.jpg", show=False)

# Print the ID of the tracked objects
if results[0].boxes.id is not None:
    print(f"Tracked IDs: {results[0].boxes.id.numpy()}")

Разработчики, которые хотят управлять наборами данных и развертывать оптимизированные модели, могут использовать Ultralytics , которая упрощает процесс от аннотирования данных до эффективного развертыванию моделей. Для тех, кто интересуется более глубокими механизмами внимания, существуют такие библиотеки, как PyTorch предоставляют базовые блоки, в которых реализованы эти механизмы кэширования.

Присоединяйтесь к сообществу Ultralytics

Присоединяйтесь к будущему ИИ. Общайтесь, сотрудничайте и развивайтесь вместе с мировыми новаторами

Присоединиться сейчас