КВ-кэш
В кэше KV хранятся векторы ключей и значений, которые преобразователь уже вычислил для предыдущих токенов, поэтому ему не нужно пересчитывать их для каждого нового генерируемого слова.
Обзор
It is the single biggest reason text generation is fast — and the main thing eating your GPU memory during long conversations.
Глубокое погружение
Преобразователи генерируют текст по одному токену за раз, и уровень внимания каждого нового токена должен сравниваться с каждым предыдущим токеном. Механизм внимания превращает каждый токен в вектор запроса, ключа и значения. Без кэширования создание токена номер 1000 означало бы перерасчет ключей и значений для всех 999 более ранних токенов на каждом этапе — квадратичная, расточительная работа. Кэш KV сохраняет эти векторы ключей и значений после их первого вычисления и повторно использует их, поэтому каждый новый шаг вычисляет векторы только для одного новейшего токена и обрабатывает сохраненный кеш. Это сокращает стоимость токена от масштабирования в зависимости от длины последовательности до примерно постоянной. Компромиссом является память: кеш растет линейно с длиной контекста, количеством слоев и головкой внимания, часто становясь доминирующим потребителем памяти при обслуживании длительного контекста.
Техническая информация
На этапе «предварительного заполнения» модель обрабатывает все приглашение и заполняет кеш; во время «декодирования» он добавляет K/V одного токена за шаг и повторно посещает. Размер кэша масштабируется как 2 (K и V) × слои × головки × head_dim × последовательность_длина × пакет с выбранной точностью. Чтобы справиться с этим, современные модели используют внимание к групповым или множественным запросам для распределения ключей/значений по головкам, а обслуживающие системы, такие как vLLM, используют PagedAttention для распределения кэша в несмежных блоках, сокращая фрагментацию и потери.
Стратегическое воздействие
Скорость и масштаб
Языковые рабочие процессы могут развиваться быстрее, не жертвуя при этом согласованностью.
Доступ и охват
Это расширяет доступ к различным языкам и стилям общения.
Более четкие решения
Команды могут тратить больше времени на принятие решений, в то время как автоматизация занимается повторением.
Будущее KV-кеша
Поскольку контекстные окна расширяются до сотен тысяч токенов, кэш KV становится центральным узким местом, поэтому инновации становятся жестокими: квантование кэша до 8 или 4 бит, политики вытеснения, которые удаляют токены с низкой важностью, совместное использование префиксов перекрестных запросов и разгрузка на ЦП или диск. Архитектурные сдвиги, такие как скрытое внимание нескольких голов, сжимают сам кэш. Ожидайте продолжения совместной разработки вариантов внимания и систем памяти, направленных на дешевое обслуживание очень длинных контекстов и с высокой пропускной способностью.
Реальная реализация
Ускорение ответов чат-бота за счет повторного использования кэшированных ключей/значений из истории разговоров вместо их повторной обработки каждый ход.
Кэширование префиксов, которое совместно использует кеш для длительного системного запроса для многих пользователей, что снижает затраты и задержки.
PagedAttention от vLLM управляет кэшем KV блоками для эффективного обслуживания множества одновременных запросов на одном графическом процессоре.
Квантование KV-кэша для снижения точности для размещения более длинных контекстов в ограниченной памяти графического процессора.
Риски и ограничения
Галлюцинированные факты могут незаметно войти в отчеты, потоки поддержки или результаты исследований.
Незамедлительная чувствительность может привести к противоречивым результатам по схожим запросам.
Конфиденциальные текстовые данные могут быть раскрыты, если контроль доступа слабый.
Дорожная карта реализации
Перед развертыванием определите выходной формат, тон и стандарты качества.
Наземные ответы с помощью надежных источников, когда точность имеет значение.
Обеспечьте контрольную точку человеческого контроля для получения важных результатов.
Отслеживайте закономерности сбоев и регулярно обновляйте подсказки или рабочие процессы.
Продолжайте исследовать
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the KV Cache quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
Следующее руководство
Оптимизация KV-кэша
Часто задаваемые вопросы
What is KV Cache?
В кэше KV хранятся векторы ключей и значений, которые преобразователь уже вычислил для предыдущих токенов, поэтому ему не нужно пересчитывать их для каждого нового генерируемого слова. Это единственная главная причина, по которой генерация текста происходит быстро, и главная причина, по которой расходуется память вашего графического процессора во время долгих разговоров.
Что хранит кэш KV?
Кэш KV хранит векторы ключей и значений из более ранних токенов, поэтому внимание может повторно использовать их вместо повторных вычислений.
Какую проблему в первую очередь решает KV-кэш?
Без кэширования каждый новый токен потребовал бы пересчета K/V для каждого предыдущего токена, что является расточительством; кэш делает стоимость токена примерно постоянной.
Каков основной недостаток кэша KV?
Кэш растет с увеличением длины последовательности, слоев и головок, часто становясь доминирующим потребителем памяти графического процессора при обслуживании длительного контекста.
Какой метод уменьшает размер кэша KV за счет совместного использования ключей и значений по всем головкам внимания?
Групповые запросы и внимание к нескольким запросам позволяют нескольким головкам запросов использовать меньшее количество наборов ключей/значений, что существенно сокращает кэш.
Каковы две фазы вывода трансформатора относительно кэша KV?
Предварительное заполнение заполняет кеш K/V приглашения; decode добавляет один новый K/V токена на каждом шаге и повторно посещает кеш.