← На главную

Глоссарий

KV-кэш: память, которую съедает контекст

Коротко: KV-кэш - хранилище ключей и значений внимания для всех обработанных токенов. Чтобы сгенерировать следующий токен, модель не перечитывает весь промпт заново - она берёт ключи и значения из кэша. Цена: на каждый токен контекста кэш тратит байты, пропорциональные числу слоёв и размеру скрытого состояния, поэтому на длинных контекстах кэш занимает гигабайты и становится вторым потребителем VRAM после весов. Квантизация KV-кэша (fp8, int8) уменьшает его в 2-4 раза почти без потери качества. Prefill строит кэш за один проход, decode его расширяет по токену за шаг.

KV-кэш - это память о прочитанном. Каждый слой трансформера для каждого токена сохраняет ключ и значение внимания; при генерации модель обращается к этому хранилищу вместо перечитывания контекста. Без кэша каждый следующий токен стоил бы полный проход по всему промпту.

Почему кэш определяет потолок контекста

Размер кэша растёт линейно с длиной контекста и для больших моделей на длинных промптах обгоняет сами веса. Отсюда все компромиссы длинного контекста: квантизация кэша, offload в RAM, гибридные архитектуры с линейным вниманием, где кэш вместо роста с длиной остаётся фиксированного размера (recurrent state).

Практическое следствие для замеров: карта "влезла в 24 ГБ" на 32K контекста не значит, что влезет на 128K - сначала переполнится кэш, а не веса. Any benchmark длинного контекста обязан фиксировать точность кэша рядом с длиной контекста.