GPU, ускорители и инфраструктура LLM · проверено по источникам

KV-кэш языковой модели

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

Также ищут: KV cache · key-value cache · KV-кеш · кэш ключей и значений attention · кеш внимания LLM

Практический смысл

Почему это важно

Даже после размещения весов длинный контекст и несколько запросов могут исчерпать память KV. Оценка требует числа именно голов K/V, геометрии слоёв, фактически сохраняемых токенов и типа данных; деление результата на число GPU допустимо лишь по доказанной схеме размещения.

Доказательная часть

Что подтверждено

  1. Для продолжения причинный трансформер сохраняет необходимые представления ключей и значений прежних позиций по слоям. Они зависят от модели и префикса; кэш не является общим словарём ключей к готовым ответам и не заменяет вычисление новой позиции.

    Граница применимости: Обычное внимание декодера с KV-кэшем; рекуррентные модели и модели пространства состояний, состояние кодировщика и нестандартное сжатое представление здесь не описываются.

  2. Для одинаковой геометрии слоёв и равной длины последовательностей плотные данные K+V занимают M=2×L×Hkv×D×T×s×B байт. Здесь L — число слоёв, Hkv — число голов K/V, D — размер головы, T — сохраняемые токены каждой последовательности, s — байты одного значения, B — число последовательностей; множитель 2 учитывает K и V.

    Граница применимости: Декодер с полным вниманием, одинаковыми размерами и типами K/V; без общих префиксов, заполнения, выравнивания, квантовочных шкал, метаданных и рабочих буферов. Формула общих логических данных до выгрузки и распределения; не точный расход выделенной памяти.

  3. При 32 слоях, 8 головах K/V, размере головы 128, 4096 сохраняемых токенах, двух байтах на значение и четырёх независимых последовательностях K+V занимает 2 147 483 648 байт, ровно 2 GiB. Для одной такой последовательности это 512 MiB, без весов и служебной памяти.

    Граница применимости: 2×32×8×128×4096×2×4; FP16/BF16, полный одинаковый кэш без общих префиксов, заполнения, метаданных, рабочих буферов и распределения по устройствам.

  4. В GQA несколько голов запросов Q используют общие головы ключей и значений K/V, поэтому для размера KV берут Hkv, не число голов Q. При 32 головах Q и 8 головах K/V подстановка 32 вместо 8 завышает этот объём данных в четыре раза при остальных одинаковых параметрах.

    Граница применимости: Сравнение геометрии сохраняемого K/V; не обещание неизменного качества, полной VRAM или скорости при преобразовании MHA в GQA.

  5. Для последовательностей разной длины без выравнивания и общих префиксов вклад токенов считают по сумме их сохраняемых длин. Дополнение до общей длины может увеличить физический расход, общие страницы префикса — уменьшить дублирование; нельзя молча заменить эти режимы одним Tmax×B.

    Граница применимости: Одинаковая геометрия полного KV; совместное использование и размещение подтверждают для движка. Оконное внимание и сжатое состояние вне этой модели и требуют отдельного контракта хранения.

  6. Тип данных KV и представление квантованных весов — разные настройки. Метка AWQ или «4 бита» на весах не позволяет поставить 0,5 байта в формулу KV: сначала подтверждают фактический формат кэша, а для его квантования отдельно учитывают шкалы и размещение.

    Граница применимости: Метод преобразования только весов не меняет автоматически KV; конкретная поддержка квантованного кэша этим тезисом не заявляется.

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

    Граница применимости: Совместное использование точного префикса выбранным движком; произвольное межпользовательское переиспользование и политика изоляции здесь не разрешаются.

  8. Полный логический KV нельзя автоматически разделить на число GPU и получить расход каждой. Слои и головы K/V могут распределяться или реплицироваться по-разному, часть данных — выгружаться; для каждого устройства проверяют реальную схему и служебные затраты выбранного режима параллелизма.

    Граница применимости: Модель распределения конкретного движка; формула общей геометрии не доказывает равномерное разбиение при тензорном параллелизме или объединённую VRAM.

Граница терминов

Не путать

Веса языковой модели

Веса — параметры модели, KV — состояние обработанных префиксов. Число параметров может быть неизменным, пока увеличение длины и активных последовательностей существенно увеличивает KV.

Контекстное окно языковой модели

Контекстное окно ограничивает допустимый сценарий токенов, KV описывает его сохранённое вычислительное состояние. Геометрия голов и тип данных делают память разных моделей несопоставимой по одному числу токенов контекста.

Квантование модели

Квантование весов и кэша относится к разным тензорам. Экономия первой области не доказывает меньший KV: для него нужны собственные тип данных, шкалы и размещение.

Перед спецификацией

Что проверить

  1. Получите точные число слоёв, число голов K/V и размер головы из конфигурации модели.
  2. Не подставляйте число голов Q в расчёт кэша GQA.
  3. Запишите фактический тип данных KV и число байтов, включая метаданные квантования при его наличии.
  4. Считайте реально сохраняемые длины активных последовательностей, а не только число запросов.
  5. Явно укажите общие префиксы, дополнение до общей длины, выравнивание страниц и оконную политику, если они есть.
  6. Добавьте веса, рабочие буферы, служебные затраты выделения памяти и резерв к данным K+V.
  7. Проверьте размещение и репликацию по каждой GPU вместо деления на их число.
  8. Сверьте расчёт с измеренным пиком и проверьте отказ при исчерпании KV-бюджета.
Открытые основания

Первоисточники

  • Первичная публикация

    Attention Is All You Need

    Ashish Vaswani и соавторы · arXiv:1706.03762, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен.

    Открыть первоисточник
  • Первичная публикация

    Efficient Memory Management for Large Language Model Serving with PagedAttention

    Woosuk Kwon и соавторы · arXiv:2309.06180, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен.

    Открыть первоисточник
  • Первичная публикация

    GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints

    Joshua Ainslie и соавторы · arXiv:2305.13245, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен.

    Открыть первоисточник
  • Официальная документация

    Cloud TPU: bfloat16

    Google Cloud · документация Google Cloud TPU, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен.

    Открыть первоисточник
  • Первичная публикация

    AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration

    Ji Lin и соавторы · arXiv:2306.00978, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен.

    Открыть первоисточник
  • Официальная документация

    Transformers 4.44.2: Generation

    Hugging Face · документация Hugging Face Transformers v4.44.2, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен.

    Открыть первоисточник
  • Официальная документация

    CUDA C++ Programming Guide

    NVIDIA · CUDA C++ Programming Guide, CUDA 12.6, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен.

    Открыть первоисточник
Сообщить об ошибке

Опишите проблему — постараемся исправить как можно скорее.

Спасибо!

Получили ваше сообщение.
Подтвердите действие