KV-кеш (Key-Value Cache)(KV-кеш на пальцях: чому довгий діалог раптово з'їдає всю відеопам'ять)
Оптимізація пам'яті в моделях Transformer, яка зберігає вектори ключів і значень (Keys and Values) уже оброблених токенів у швидкій пам'яті GPU. Дозволяє генерувати кожне наступне слово миттєво, але стрімко росте в розмірі з кожним новим повідомленням у чаті.
1. Огляд концепції та призначення
Коли ви спілкуєтеся з мовною моделлю, ви помічаєте дві речі:
- Модель видає слова зі стабільною швидкістю (наприклад, 40 слів за секунду). Вона не сповільнюється до кінця довгої відповіді.
- Але якщо діалог триває вже годину і історія повідомлень стала дуже великою, програма раптом видає помилку: «Out of Memory» (закінчилася пам'ять відеокарти).
За обидва ці явища відповідає один механізм — KV-кеш (Key-Value Cache).
З практичної точки зору це короткостроковий зошит пам'яті ШІ: щоб не перечитувати всю попередню розмову з нуля заради кожного нового слова, модель зберігає математичні результати вже прочитаних слів у надшвидкому буфері відеопам'яті.
2. Як KV-кеш рятує швидкість генерації
БЕЗ KV-КЕШУ (Катастрофічне сповільнення):
Генерація слова 1 ➔ Рахуємо слово 1 (1 дія)
Генерація слова 2 ➔ Перераховуємо слова 1, 2 (2 дії)
Генерація слова 100➔ Перераховуємо всі 100 слів заново (100 дій!)
... Швидкість падає майже до нуля!
─────────────────────────────────────────────────────────────
З KV-КЕШЕМ (Постійна блискавична швидкість):
Слова 1..99 вже прораховані й лежать у KV-кеші відеопам'яті!
Генерація слова 100 ➔ Розрахунок лише ОДНОГО нового токена!
⚡ Швидкість залишається однаково високою від першого до останнього слова.
3. Чому тане вільна пам'ять GPU
Багато користувачів дивуються:
- «Модель важить 5 ГБ, моя відеокарта має 8 ГБ. Чому вона вилітає після великого PDF-файлу?»
Тому що ці 3 ГБ запасу миттєво займає KV-кеш:
- Кожен токен у контексті вимагає збереження векторів Key та Value у кожному шарі трансформера.
- Якщо у вас довгий документ на 32 000 токенів, розмір цієї таблиці в пам'яті може перевищити вагу самої моделі!
4. Практичний висновок
Якщо ваша програма для локального чату вилітає через брак пам'яті, вам не обов'язково міняти модель на слабшу: достатньо обмежити розмір контекстного вікна (наприклад, з 32k до 8k токенів) або очистити історію старого чату, звільнивши тим самим KV-кеш.
FAQ: KV-кеш (Key-Value Cache)
Пов'язані терміни
Розмір контекстного вікна (Пам'ять поточної розмови)
Максимальний обсяг тексту (у токенах), який мовна модель здатна одночасно утримувати в пам'яті під час поточної бесіди. Визначає, яку довжину документів можна завантажити за один раз без втрати змісту.
Відеопам'ять (VRAM) для ШІ
Відеопам'ять графічного процесора (Video RAM), у яку завантажуються ваги нейромережі та контекстне вікно. Головне апаратне вузьке місце: якщо модель не поміщається у VRAM, вона або не запуститься, або працюватиме в десятки разів повільніше на звичайному процесорі.
Стрімінг тексту через SSE (Ефект друкарської машинки)
Технологія передачі згенерованих токенів у браузер у реальному часі через протокол Server-Sent Events (SSE). Створює ефект друкарської машинки, усуваючи неприємне очікування завершення повної відповіді.