ММООЗЗГГ.ru

Словарь ИИ

Что такое KV-кэш

Коротко

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

Языковые модели · KV cache

Михаил МозгПроверено: 1 минута чтения

Ребенку

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

Простыми словами

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

Для бизнеса

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

Для специалиста

При авторегрессионном декодировании каждый новый токен вычисляет внимание ко всем предыдущим. KV-кэш (KV cache) хранит тензоры ключей (keys) и значений (values) всех слоев для уже обработанных позиций, так что на шаге считаются только проекции нового токена. Pope и соавторы (2022) называют так ключи и значения каждого слоя, которые нужно держать в памяти весь период декодирования, и подчеркивают, что в отличие от весов он уникален для каждой последовательности в батче. Объем на последовательность равен 2 × число слоев × число KV-голов × размерность головы × длина × байты на элемент. Сокращают его на уровне архитектуры: multi-query attention (Shazeer, 2019) делит одну пару ключей и значений между всеми головами, grouped-query attention (Ainslie и соавторы, 2023) использует промежуточное число групп. На уровне системы применяют страничное хранение (PagedAttention), квантизацию кэша, вытеснение старых токенов и переиспользование общих префиксов между запросами.

Пример

Компания запускает модель на своем сервере для юристов. Пока документы короткие, все работает. Когда пять юристов одновременно загружают договоры по сотне страниц, KV-кэш заполняет видеопамять, и программа запуска начинает ставить запросы в очередь.

Связанные термины

Вопросы и ответы

Зачем нужен KV-кэш?

Чтобы не пересчитывать на каждом шаге генерации то, что модель уже посчитала для предыдущих токенов. Без него длинные ответы генерировались бы в разы медленнее.

Сколько видеопамяти занимает KV-кэш?

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

Источники

Где это применяют в компании

Не уверены, нужно ли это вашей компании?

Карта ИИ-решений
Написать в Telegram