Як Dual-QK стискає KV-кеш до 2 біт, зберігаючи точність на контексті 128K?

Новий метод Dual-QK змінює спосіб, яким мовні моделі зберігають робочу пам'ять під час довгих діалогів. Він націлений на ключово-значеннявий кеш, що зростає з кожним згенерованим токеном. Підхід обіцяє стиснення 6.8× при контексті 128K.

Природа вузького місця в кеші

Довгі вхідні дані та розширена генерація підвищують витрати на зберігання та доступ до ключово-значеннявого кешу. Кожен токен додає нові ключі та значення, необхідні для майбутніх кроків уваги. Обсяг кешу зростає лінійно з довжиною послідовності. Низькобітове квантування скорочує пам'ять і трафік. Вибірковість каналів запиту дозволяє ще більше зменшити читання ключового кешу. Обернене квантування перерозподіляє енергію викидів ключів по каналах. Для збереження обчислювальної інваріантності той самий ортогональний перетворення застосовується до запитів. Це фіксує скалярні добутки запит-ключ. Але обертання розсіює енергію запиту. Розділення між кількома великими компонентами для збереження та багатьма малими для прибирання ослаблює. Прибирання стає менш ефективним. Кеш залишається великим.

Конфлікт є фундаментальним.

Парні перетворення замість спільного обертання

Dual-QK використовує парні неортогональні перетворення запиту та ключу. Метод поєднує часткове вибілювання ключа з базисом, вирівняним до запиту. Калібровані статистики запиту та ключу керують проєктуванням. Це балансує масштаби ключів для INT2-квантування. Також концентрує енергію запиту для динамічної вибірковості каналів. Захист каналу-0 та відносна RoPE по сегментах підтримують точність низьких бітів на довгих контекстах. Перетворення не є ортогональними. Їм не потрібно бути оберненими. Кожне з них виконує свою роль. Перетворення ключа вирівнює розподіл для квантування. Перетворення запиту гострить розподіл для прибирання. Конфлікт, що створює обертання, зникає.

Результати на контексті 128K

Експерименти проведено на чотирьох моделях. Покрито п'ять генеративних бенчмарків. Тестували завдання довгоконтекстового пошуку. Точність покращилася порівняно з OSCAR на більшості задач при 40% вибірковості каналів запиту. При контексті 128K Dual-QK дає стиснення KV-кешу 6.8×. Оцінюване скорочення обсягу читань KV — 8.3× відносно невибіркового BF16. Стаття не каже, скільки токенів генерувалося за запит. Не повідомляє використання пам'яті в гігабайтах. Не порівнює з методами витіснення KV-кешу.

Пропускна здатність на SGLang

Реалізація SGLang досягає до 3.75× декодінгової пропускної здатності невибіркового BF16. Стаття не вказує апаратне забезпечення для вимірювання. Не наводить перцентилі затримок. Не показує пропускну здатність при різних розмірах батчу. Прискорення йде від зменшення трафіку пам'яті та обчислень. Прибирання вилучає 40% каналів ключів з читань. Квантування скорочує зберігання до 2 біт на значення. Оба ефекти сумуються.

Джерела, за якими написано статтю

  • "arXiv:2610.09827v1
    https://arxiv.org/abs/2610.09827v1"

Читайте також