Материал подготовлен автоматически по первоисточникам: ссылки на них — в конце статьи.
Для декодирования LLM научились заранее определять, когда выгоднее пропускать веса, а когда — части KV-кэша, и когда оба подхода стоит включать вместе. В препринте Jungseob Lee и коллег, который не прошёл рецензирование и содержит замеры самих авторов, совместный режим оказался на 14–26% быстрее лучшего одиночного при одинаковом бюджете качества. Для инфраструктурной команды выбор разреженности теперь сводится не к общему правилу о длинном контексте, а к расчёту для конкретной модели, GPU и ядра внимания.
Как нашли точку, где меняется выгодный подход
При генерации одного токена модель каждый раз читает два крупных массива данных. Объём весов проекций остаётся постоянным, а KV-кэш хранит ключи и значения всех предыдущих токенов и растёт вместе с контекстом.
Разреженность активаций сокращает первый поток: модель определяет малозначимые каналы и не читает связанные с ними веса. Разреженность KV-кэша действует на второй поток: внимание использует только выбранную часть прежних ключей и значений, хотя полный кэш может оставаться в памяти.
Авторы ввели байтовую точку пересечения — длину контекста, при которой оба способа убирают одинаковый объём чтения из памяти. До неё больше экономит пропуск весов, после неё — сокращённое чтение кэша. Порог рассчитывается по размерам слоёв модели и долям данных, которые сохраняет каждый способ; обучать отдельную модель для этого не нужно.
Сравнивать подходы только при одинаковых долях сохранённых данных недостаточно: они по-разному влияют на ответы. Когда авторы выровняли допустимый рост перплексии — показателя, который растёт, если модель хуже предсказывает следующий токен, — точка пересечения оказалась в диапазоне 35,7–57,8 тысячи токенов. Значит, требования к качеству могут сдвинуть выбор в пользу KV-кэша заметно раньше, чем показывает чистый подсчёт байтов.
Почему один и тот же способ даёт разное ускорение
Скорость проверяли после плотной обработки реального текста, на контекстах от 2 до 128 тысяч токенов. Основные опыты провели на двух моделях Llama и GPU A100 и RTX A6000, с половинной точностью и пакетом из одной последовательности. Плотный и разреженный режимы читали кэш через одно и то же ядро split-K, поэтому сравнение не подменяло экономию данных сменой реализации внимания.
Выбор базового ядра оказался критичен. Для одной и той же политики KV-кэша заявленное ускорение менялось с 1,29 до 6,92 раза, если плотный режим запускали через более медленное маскированное внимание вместо split-K. Метод при этом не менялся: рос только разрыв с неудачно выбранной базой.
Подсчёт байтов хорошо показывал направление эффекта, но не точную задержку. Разреженные ядра добавляют постоянные расходы на запуск и обработку индексов. После учёта этих расходов расчёт предсказал измеренные точки пересечения с ошибкой не более 4,1 тысячи токенов на проверенных сочетаниях моделей, долей сохранения и GPU.
Проверка качества тоже не сводилась к перплексии. Простое окно из последних записей могло сохранить этот показатель и при этом потерять факт из начала документа. Отбор по оценкам внимания, напротив, повторял результаты плотного режима в тестах на поиск одного и нескольких ключей вплоть до контекста 127 тысяч токенов.
Как это меняет планы системных команд
Работа не предлагает универсально заменить один способ разреженности другим. Она даёт процедуру выбора: сначала посчитать байтовый порог для своей архитектуры и допустимого качества, затем измерить постоянные расходы ядер на целевой GPU и после этого проверить совместный режим.
Для сервиса с одиночными запросами и коротким контекстом разумным первым кандидатом остаётся разреженность активаций. По мере роста контекста начинает доминировать чтение KV-кэша, а сочетание методов выигрывает там, где бюджет качества допускает оба. Однократный отбор записей кэша тоже нужно включать в задержку запроса: в опыте его стоимость окупалась после 146 сгенерированных токенов, поэтому на коротких ответах итог может отличаться.
Для пакетного обслуживания граница сдвигается в сторону более короткого контекста. Последовательности в пакете активируют разные каналы, поэтому совокупно модель вынуждена читать больше весов и разреженность активаций помогает меньше. Квантизация весов действует сходным образом: уменьшает постоянный поток данных и раньше делает оптимизацию KV-кэша более выгодной.
Практический вывод касается и закупки инфраструктуры. Перенос измеренной границы между GPU без повторного замера рискован: постоянная стоимость разреженного ядра зависит от оборудования. Команде достаточно нескольких контрольных длин контекста, но плотный и разреженный режимы должны использовать сопоставимый путь внимания, иначе тест измерит качество базовой реализации, а не пользу метода.
Источники
Похоже на вашу задачу?
Расскажите, что собираете. За полчаса разложим на этапы и назовём сроки — это бесплатно и ни к чему не обязывает.



