Skip to main content

KV-кеш (Key-Value Cache)(KV-кеш на пальцях: чому довгий діалог раптово з'їдає всю відеопам'ять)

Оптимізація пам'яті в моделях Transformer, яка зберігає вектори ключів і значень (Keys and Values) уже оброблених токенів у швидкій пам'яті GPU. Дозволяє генерувати кожне наступне слово миттєво, але стрімко росте в розмірі з кожним новим повідомленням у чаті.

1. Огляд концепції та призначення

Коли ви спілкуєтеся з мовною моделлю, ви помічаєте дві речі:

  1. Модель видає слова зі стабільною швидкістю (наприклад, 40 слів за секунду). Вона не сповільнюється до кінця довгої відповіді.
  2. Але якщо діалог триває вже годину і історія повідомлень стала дуже великою, програма раптом видає помилку: «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-кеш.

/ Часті запитанняSchema.org FAQPage

FAQ: KV-кеш (Key-Value Cache)

Швидкість генерації була б катастрофічно низькою: щоб згенерувати 100-те слово, моделі довелося б заново перераховувати увагу для всіх попередніх 99 слів. З кожним новим словом модель друкувала б усе повільніше й повільніше.
/ Внутрішня перелінковка
Всі терміни
Промптинг & RAG

Розмір контекстного вікна (Пам'ять поточної розмови)

Максимальний обсяг тексту (у токенах), який мовна модель здатна одночасно утримувати в пам'яті під час поточної бесіди. Визначає, яку довжину документів можна завантажити за один раз без втрати змісту.

Читати термін
Моделі & Інференс

Відеопам'ять (VRAM) для ШІ

Відеопам'ять графічного процесора (Video RAM), у яку завантажуються ваги нейромережі та контекстне вікно. Головне апаратне вузьке місце: якщо модель не поміщається у VRAM, вона або не запуститься, або працюватиме в десятки разів повільніше на звичайному процесорі.

Читати термін
VPS & DevOps

Стрімінг тексту через SSE (Ефект друкарської машинки)

Технологія передачі згенерованих токенів у браузер у реальному часі через протокол Server-Sent Events (SSE). Створює ефект друкарської машинки, усуваючи неприємне очікування завершення повної відповіді.

Читати термін