Локальная нейросеть: память под контекст, которую забывают посчитать
Память под локальную модель складывается из двух частей, и вторую почти всегда оценивают на глаз — «добавьте 10–20 % на контекст». Мы посчитали её по характеристикам, снятым с карточек десяти открытых моделей 26 августа 2026 года: доля вышла от 1 % до 118 % от веса самой модели, и ни одна из десяти не попала в это правило. Разбираем, из чего вторая часть складывается и почему она меняет класс карты, а не проценты.
Сравнительная таблица
| Модель | Параметров | Внимание | Веса INT4 | Кэш при 32k, один запрос | Итого | Кэш к весам |
|---|---|---|---|---|---|---|
| Qwen3-8B | 8,2 млрд | GQA | 4,1 ГБ | 4,8 ГБ | 9,7 ГБ | 118 % |
| YandexGPT 5 Lite 8B | 8,0 млрд | GQA | 4,0 ГБ | 4,3 ГБ | 9,1 ГБ | 107 % |
| Vikhr-Nemo-12B | 12,2 млрд | GQA | 6,1 ГБ | 5,4 ГБ | 12,7 ГБ | 88 % |
| Qwen3-32B | 32,8 млрд | GQA | 16,4 ГБ | 8,6 ГБ | 28,2 ГБ | 52 % |
| T-pro-it-1.0 | 32,8 млрд | GQA | 16,4 ГБ | 8,6 ГБ | 28,2 ГБ | 52 % |
| T-lite-it-1.0 | 7,6 млрд | GQA | 3,8 ГБ | 1,9 ГБ | 6,4 ГБ | 49 % |
| Mistral Small 3.1 24B | 24,0 млрд | GQA | 12,0 ГБ | 5,4 ГБ | 19,8 ГБ | 45 % |
| GigaChat-20B-A3B | 20,6 млрд | GQA | 10,3 ГБ | 3,8 ГБ | 16,1 ГБ | 37 % |
| Qwen2.5-72B-Instruct | 72,7 млрд | GQA | 36,4 ГБ | 10,7 ГБ | 54,4 ГБ | 30 % |
| DeepSeek-V3 | 684,5 млрд | MLA | 342,3 ГБ | 2,3 ГБ | 413,0 ГБ | 1 % |
| Llama 3.3 70B Instruct | 70,6 млрд | конфигурация закрыта | 35,3 ГБ | нет данных | нет данных | нет данных |
| Gemma 3 27B Instruct | 27,4 млрд | конфигурация закрыта | 13,7 ГБ | нет данных | нет данных | нет данных |
Память состоит из двух частей, и вторая считается по архитектуре
Первая часть — веса. Она считается в одну строку: число параметров умножается на число байт, в которых параметр хранится. В 16-битном формате это два байта, в 4-битном квантовании — половина байта. Отсюда и берутся ходовые прикидки вроде «70 миллиардов в INT4 — примерно 35 гигабайт». Как разрядность меняет выбор карты, разобрано отдельно в материале про квантование.
Вторая часть — KV-кэш. Модель хранит промежуточное представление каждого токена, который уже прошёл через неё: и вопроса, и всего, что она успела ответить. Этот кэш растёт с длиной диалога и с числом запросов, обслуживаемых одновременно, и живёт в памяти рядом с весами.
У кэша есть свойство, которое ломает интуицию: он не квантуется вместе с весами. Даже когда веса ужаты в 4 бита, кэш почти всегда остаётся 16-битным. То есть сжатие модели вчетверо уменьшает первую часть и не трогает вторую — и чем сильнее сжаты веса, тем большую долю занимает то, что не сжалось.
Поверх этих двух частей идёт надбавка рантайма — активации, буферы, фрагментация памяти. В расчётах на сайте она принята коэффициентом 1,2 и одинакова для калькулятора и для страниц моделей: две надбавки на одной странице дали бы два разных ответа на один вопрос. Это ориентир для планирования закупки, а не показание профилировщика.
Правило «плюс 10–20 % на контекст» не попало ни в один из десяти случаев
В таблице выше — десять моделей каталога, у которых конфигурация опубликована, при одинаковых условиях: веса в INT4, контекст 32 тысячи токенов, один запрос за раз. Правый столбец — отношение кэша к весам, то есть ровно та «добавка на контекст», которую обычно берут на глаз.
Разброс — от 1 % до 118 %. В диапазон 10–20 % не попала ни одна модель: девять оказались выше, одна — сильно ниже. Правило не то чтобы неточное, оно попадает мимо в обе стороны и на порядок.
Зависимость к тому же обратная той, которую подсказывает здравый смысл. У двух восьмимиллиардных моделей — Qwen3-8B и YandexGPT 5 Lite 8B — кэш при 32 тысячах токенов больше весов: 4,8 ГБ против 4,1 ГБ и 4,3 ГБ против 4,0 ГБ. У Qwen2.5-72B, которая в девять раз крупнее, доля падает до 30 %.
Причина в том, что кэш считается не от общего числа параметров, а от числа слоёв, числа KV-голов и размера головы. Эти три величины у маленькой модели меньше, но не в девять раз — а веса меньше именно в девять. Отсюда и переворот: чем компактнее модель, тем большую долю её памяти занимает контекст.
Три архитектуры внимания дают три разные формулы, а не один коэффициент
Способ, которым модель хранит ключи и значения, — это три разные конструкции. При полном внимании (MHA) у каждой головы свои ключи и значения. При групповом (GQA) они общие на группу голов, и кэш меньше в разы. При сжатом (MLA) кэшируются не ключи и значения, а их компактное представление, и множителя «два» в формуле нет вовсе.
Самое наглядное следствие — в нижней строке таблицы. DeepSeek-V3 на 684,5 миллиарда параметров кэширует один токен в 0,070 МБ. Qwen3-8B, которая меньше по числу параметров в 83 раза, — в 0,147 МБ, то есть вдвое дороже. Модель, которой нужен целый сервер под веса, обходится с контекстом экономнее, чем модель, помещающаяся в одну карту.
⚠️ Это же место, где ошибались мы сами, и дважды. Сначала кэш считался по MHA там, где везде GQA, — завышение в 7,9 раза; потом по GQA там, где MLA, — в 21 раз. Оба случая лежат в публичном журнале исправлений. Занижение при этом опаснее завышения: оно советует купить меньше карт, чем нужно, и обнаруживается уже в эксплуатации.
Практический вывод простой: способ внимания читается из конфигурации модели, а не подставляется коэффициентом по размеру. На каждой карточке в каталоге моделей он назван прямо — вместе со слоями, KV-головами и длиной контекста, из которых и складывается число.
Второй множитель меняет класс карты, а не проценты
Кэш умножается на два числа сразу: на длину контекста и на количество запросов, обслуживаемых в один момент. Значит 32 тысячи токенов у десяти сотрудников стоят ровно столько же памяти, сколько 320 тысяч токенов у одного, — это один и тот же множитель, и путать «длинный контекст» с «многопользовательской нагрузкой» не нужно, они складываются в произведение.
Что это даёт в железе. Qwen3-8B при одном запросе требует 9,7 ГБ — помещается в потребительскую карту на 24 ГБ с большим запасом. При десяти одновременных запросах ей нужно 53,2 ГБ, то есть карта другого класса, на 80 ГБ. Модель та же, квантование то же, изменилось только число людей за экраном.
У Qwen2.5-72B тот же переход выглядит как 54,4 ГБ против 151,0 ГБ: одна карта на 80 ГБ против конфигурации на 192 ГБ. А у DeepSeek-V3 итог растёт с 413,0 ГБ всего до 433,7 ГБ — прибавка около 5 %, потому что при сжатом внимании кэш почти не замечает параллельности, и ограничением остаются веса.
Отсюда практическое различие, которое стоит проводить до сметы: «одно рабочее место» и «отдел из десяти человек» — это разные закупки при одной и той же модели. Число одновременных запросов входит в расчёт наравне с выбором модели, а не уточняет его.
Заявленный контекст и доступный контекст — разные числа
Длина контекста в карточке модели — это верхняя граница, которую разрешает архитектура, а не то, что получится развернуть. Память под неё нужно купить отдельно.
Крайний случай в нашем каталоге — Vikhr-Nemo-12B: заявлен контекст в 1 024 000 токенов. Веса в INT4 занимают 6,1 ГБ, и на этом основании модель выглядит как «влезает в потребительскую карту». На полном заявленном контексте кэш составляет 167,8 ГБ, итого 175,1 ГБ — то есть в 27 раз больше весов, и это уже серверная конфигурация, а не карта.
Случаи помягче считаются так же. Mistral Small 3.1 24B на своих 131 072 токенах: 21,5 ГБ кэша, итого 35,9 ГБ против 19,8 ГБ на контексте в 32 тысячи токенов. GigaChat-20B-A3B на том же контексте — 15,0 ГБ кэша, итого 27,4 ГБ.
Формулировка, которая из этого следует: длина контекста — это статья расходов памяти, а не характеристика модели. Сравнивать две модели по заявленному контексту без пересчёта в гигабайты бессмысленно.
Две модели из двенадцати посчитать нельзя, и это тоже ответ
Llama 3.3 70B и Gemma 3 27B стоят в таблице с прочерками. Их веса выдаются после принятия условий и одобрения автором, конфигурация закрыта — значит числа слоёв и KV-голов у нас нет, и посчитать кэш не из чего.
Вес весов при этом известен: 35,3 ГБ и 13,7 ГБ в INT4. Соблазн дописать «плюс 15 % на контекст» и выдать итог здесь максимальный, и именно этого мы не делаем: пустое место честнее уверенного числа, а число, в котором отсутствует память под контекст, занижает ответ ровно там, где обещана точность.
Для предприятия ворота у весов — это к тому же отдельный шаг закупочной процедуры: аккаунт, принятые условия, иногда ожидание решения человека. На карточке каждой модели это сказано прямо, наравне с лицензией: возможность скачать веса и право использовать их в компании — разные вопросы, и разобраны они отдельно.
Как посчитать свой случай
Чтобы получить число, нужно знать пять величин: количество параметров, разрядность весов, длину контекста, число одновременных запросов и способ внимания. Первые четыре задаёт задача, пятую даёт конфигурация модели. Расчёт под свои условия — в калькуляторе памяти, готовые числа по каждой модели каталога — на её странице в разделе моделей.
Что в этот расчёт не входит и считается отдельно: скорость генерации (она упирается в пропускную способность памяти, а не в её объём), запас на пики нагрузки, память под вторую модель рядом — эмбеддер или распознавание, — и дообучение, где к весам нужен множитель три-четыре, а не 1,2.
И отдельно стоит сказать то, что из таблицы не видно. Проверить сценарий на модели можно до всякой закупки: те же открытые модели раздаются через доступ по API, и что это стоит сегодня, видно в наблюдаемых ценах за миллион токенов. Порог, за которым своё железо перестаёт проигрывать аренде и API, считается там же, где и остальное, — в разборе трёх способов запуска.