Словарь ИИ
Что такое 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-кэш?
Источники
Где это применяют в компании
Не уверены, нужно ли это вашей компании?
Карта ИИ-решений