ДалееСледующее руководство
Оптимизация KV-кэша
Технический
РУКОВОДСТВО ПО ЯЗЫКУ ИИ
В кэше KV хранятся векторы ключей и значений, которые преобразователь уже вычислил для предыдущих токенов, поэтому ему не нужно пересчитывать их для каждого нового генерируемого слова.
Прослушайте это руководствоОзвучено ИИ · ~2 min
Это единственная главная причина, по которой генерация текста происходит быстро, и главная причина, по которой расходуется память вашего графического процессора во время долгих разговоров.
Преобразователи генерируют текст по одному токену за раз, и уровень внимания каждого нового токена должен сравниваться с каждым предыдущим токеном. Механизм внимания превращает каждый токен в вектор запроса, ключа и значения. Без кэширования создание токена номер 1000 означало бы перерасчет ключей и значений для всех 999 более ранних токенов на каждом этапе — квадратичная, расточительная работа. Кэш KV сохраняет эти векторы ключей и значений после их первого вычисления и повторно использует их, поэтому каждый новый шаг вычисляет векторы только для одного новейшего токена и обрабатывает сохраненный кеш. Это сокращает стоимость токена от масштабирования в зависимости от длины последовательности до примерно постоянной. Компромиссом является память: кеш растет линейно с длиной контекста, количеством слоев и головкой внимания, часто становясь доминирующим потребителем памяти при обслуживании длительного контекста.
Ускорение ответов чат-бота за счет повторного использования кэшированных ключей/значений из истории разговоров вместо их повторной обработки каждый ход.
Кэширование префиксов, которое совместно использует кеш для длительного системного запроса для многих пользователей, что снижает затраты и задержки.
PagedAttention от vLLM управляет кэшем KV блоками для эффективного обслуживания множества одновременных запросов на одном графическом процессоре.
Квантование KV-кэша для снижения точности для размещения более длинных контекстов в ограниченной памяти графического процессора.
Поскольку контекстные окна расширяются до сотен тысяч токенов, кэш KV становится центральным узким местом, поэтому инновации становятся жестокими: квантование кэша до 8 или 4 бит, политики вытеснения, которые удаляют токены с низкой важностью, совместное использование префиксов перекрестных запросов и разгрузка на ЦП или диск. Архитектурные сдвиги, такие как скрытое внимание нескольких голов, сжимают сам кэш. Ожидайте продолжения совместной разработки вариантов внимания и систем памяти, направленных на дешевое обслуживание очень длинных контекстов и с высокой пропускной способностью.
Бесплатная рассылка
Три проверенных AI-истории каждое утро буднего дня, написанные простым английским. Бесплатно навсегда, без рекламы.
Одно электронное письмо каждый будний день. Отписаться в один клик. Мы никогда не продаем и не передаем ваш адрес.
Проверьте себя
Мгновенная обратная связь по каждому ответу и общий сертификат с проверяемым идентификатором после прохождения курса.
Поддержите бесплатное образование в области искусственного интеллекта. AI Understanding — это некоммерческая организация 501(c)(3). Никакой рекламы и платного доступа. Сделать пожертвование
В кэше KV хранятся векторы ключей и значений, которые преобразователь уже вычислил для предыдущих токенов, поэтому ему не нужно пересчитывать их для каждого нового генерируемого слова. Это единственная главная причина, по которой генерация текста происходит быстро, и главная причина, по которой расходуется память вашего графического процессора во время долгих разговоров.
Кэш KV хранит векторы ключей и значений из более ранних токенов, поэтому внимание может повторно использовать их вместо повторных вычислений.
The cache reuses keys and values computed for earlier tokens instead of rebuilding them at every decode step. The new query still attends over cached positions, so attention work and cache memory continue to grow with context length.
Кэш растет с увеличением длины последовательности, слоев и головок, часто становясь доминирующим потребителем памяти графического процессора при обслуживании длительного контекста.
Групповые запросы и внимание к нескольким запросам позволяют нескольким головкам запросов использовать меньшее количество наборов ключей/значений, что существенно сокращает кэш.
Предварительное заполнение заполняет кеш K/V приглашения; decode добавляет один новый K/V токена на каждом шаге и повторно посещает кеш.
Продолжайте учиться
Другие руководства, выбранные по этой теме
ДалееСледующее руководство
Оптимизация KV-кэша
Технический