Сколько видеопамяти нужно для LLM: расчёт под GPU
Все статьи
AI / LLM 5 мин чтения

Сколько видеопамяти нужно для LLM: расчёт под GPU

Формулы расчёта видеопамяти для LLM: вес модели при разном квантовании, KV-кэш контекста, память на обучение. Разбор на примере Llama 3.3 70B и Qwen3.6-27B.

Формулы расчёта видеопамяти для LLM: вес модели при разном квантовании, KV-кэш контекста, память на обучение. Разбор на примере Llama 3.3 70B и Qwen3.6-27B.

Коротко

Видеопамять при запуске языковой модели уходит на три вещи:

  1. Веса модели. Зависят от числа параметров и формата хранения.
  2. KV-кэш. Память под контекст, растёт с длиной диалога и числом одновременных запросов.
  3. Служебные буферы движка инференса. Под них оставляют запас.

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

1. Веса модели

Формула простая:

память под веса ≈ число параметров × байт на параметр

Формат Байт на параметр 27B-модель 70B-модель
FP16 / BF16 2 ≈ 54 ГБ ≈ 140 ГБ
8 бит (INT8, FP8, Q8_0) ≈ 1 ≈ 27 ГБ ≈ 70 ГБ
4 бита (Q4, AWQ, GPTQ) ≈ 0,5 + служебные данные ≈ 15–18 ГБ ≈ 35–43 ГБ

4-битные форматы на практике занимают чуть больше 0,5 байта на параметр: вместе с весами хранятся масштабы квантования, а часть слоёв часто оставляют в большей точности. Поэтому точнее всего ориентироваться на размер файла модели. Например, в библиотеке Ollama llama3.3:70b весит 43 ГБ, а qwen3.6:27b — 18 ГБ.

2. KV-кэш: память под контекст

Когда модель обрабатывает текст, для каждого токена на каждом слое внимания она сохраняет ключи (K) и значения (V). Это и есть KV-кэш. Формула:

KV-кэш на токен = 2 × число слоёв с вниманием × число KV-голов × размер головы × байт на значение

Все числа берутся из файла config.json модели на Hugging Face: num_hidden_layers, num_key_value_heads, head_dim.

Пример 1: Llama 3.3 70B. В конфигурации 80 слоёв, 8 KV-голов, размер головы 128. В FP16:

2 × 80 × 8 × 128 × 2 байта = 327 680 байт ≈ 0,31 МБ на токен.

Длина контекста KV-кэш (FP16)
8 192 токена ≈ 2,5 ГБ
32 768 токенов ≈ 10 ГБ
131 072 токена (максимум модели) ≈ 40 ГБ

Полный контекст Llama 3.3 требует под кэш почти столько же памяти, сколько сама модель в 4 битах.

Пример 2: Qwen3.6-27B. Эта модель гибридная: из 64 слоёв только 16 используют классическое полное внимание, а остальные 48 — линейное, которое не хранит кэш на каждый токен. Считаем только по 16 слоям: 4 KV-головы, размер головы 256.

2 × 16 × 4 × 256 × 2 байта = 65 536 байт = 64 КБ на токен, то есть в 5 раз меньше, чем у Llama 3.3 70B. Контекст в 32 768 токенов займёт около 2 ГБ.

Отсюда практический вывод: у современных моделей память под контекст может отличаться в разы при похожем размере. Считайте по конфигурации конкретной модели, а не «на глаз».

Параллельные запросы. KV-кэш нужен каждому одновременному запросу. Если сервер обслуживает 4 запроса с контекстом 8 000 токенов, памяти под кэш нужно столько же, сколько одному запросу на 32 000 токенов.

3. Как сэкономить память на инференсе

  • Квантование весов. 4 бита вместо 16 уменьшают веса примерно в 3–4 раза. Для большинства задач потеря качества невелика, но проверяйте на своих данных.
  • Квантование KV-кэша. В Ollama переменная OLLAMA_KV_CACHE_TYPE=q8_0 уменьшает кэш примерно вдвое по сравнению с f16. По документации Ollama, потеря точности при этом очень небольшая. В vLLM есть FP8-кэш.
  • Ограничение контекста. Если задачам хватает 8–16 тысяч токенов, не выставляйте максимум модели. В vLLM это параметр --max-model-len, в Ollama — num_ctx.
  • Выгрузка в оперативную память. Ollama и llama.cpp умеют держать часть слоёв в RAM. Модель поместится, но будет работать медленнее.
  • Несколько видеокарт. Модель делится между картами, память суммируется, но часть скорости уходит на обмен данными. Пример с двумя RTX 4090 разобран в отдельной статье.

Запас. Движку инференса нужна память под служебные буферы и промежуточные вычисления. Их объём зависит от движка и настроек, поэтому не планируйте загрузку видеокарты под 100%, оставляйте запас.

4. Обучение и дообучение

При полном обучении памяти нужно намного больше, чем при запуске. В работе о ZeRO (Rajbhandari и соавт., Microsoft) посчитано: при обучении со смешанной точностью и оптимизатором Adam на каждый параметр приходится 16 байт:

  • 2 байта — веса в FP16;
  • 2 байта — градиенты в FP16;
  • 12 байт — состояния оптимизатора в FP32 (копия весов, первый и второй моменты).

Для 7B-модели это около 112 ГБ без учёта активаций, то есть больше, чем есть на одной видеокарте. Поэтому полное обучение даже небольших моделей делают на нескольких GPU с распределением состояний (ZeRO, FSDP).

Дообучение через адаптеры (LoRA, QLoRA) требует гораздо меньше памяти: обучается только небольшое число дополнительных параметров, а основная модель заморожена. В QLoRA основную модель вдобавок хранят в 4 битах. Авторы QLoRA показали дообучение 65B-модели на одной видеокарте с 48 ГБ памяти.

Быстрая шпаргалка

  1. Веса: число параметров × байт на параметр, или просто размер файла модели.
  2. Кэш: формула выше × длина контекста × число параллельных запросов.
  3. Сложите и добавьте запас под буферы движка.
  4. Не помещается — квантуйте веса и кэш, ограничьте контекст или добавьте видеокарту.

Какие модели для кода помещаются в 8, 12, 16 и 24 ГБ, мы разбирали в статье о лучших локальных LLM для программирования. Если нужна приватная LLM на своей инфраструктуре под задачи компании, посмотрите, как мы внедряем ИИ.

Читайте также. Какие модели помещаются в 6, 8, 12–16, 24 и 48+ ГБ — в подборке «Модели для Ollama и LM Studio»; какая версия DeepSeek влезет в вашу видеокарту — в статье «DeepSeek на ПК».

Вопросы и ответы

Сколько видеопамяти нужно, чтобы запустить Llama 3.3 70B? В 4 битах веса занимают около 35–43 ГБ, плюс KV-кэш: около 2,5 ГБ на 8 192 токена контекста в FP16. На полный контекст в 131 072 токена кэшу нужно около 40 ГБ.

Как посчитать память под контекст? KV-кэш на токен = 2 × число слоёв с вниманием × число KV-голов × размер головы × байт на значение. Числа берутся из config.json модели на Hugging Face; результат умножается на длину контекста и число параллельных запросов.

Как уменьшить расход видеопамяти без новой видеокарты? Квантовать веса до 4 бит, квантовать KV-кэш (в Ollama — OLLAMA_KV_CACHE_TYPE=q8_0), ограничить длину контекста или выгрузить часть слоёв в оперативную память ценой скорости.

Сколько памяти нужно для дообучения модели? Полное обучение с Adam требует около 16 байт на параметр — для 7B-модели это около 112 ГБ без активаций. Дообучение через LoRA и QLoRA требует во много раз меньше, потому что основная модель заморожена.

Источники

#LLM#GPU#VRAM#KV-КЭШ#КВАНТОВАНИЕ
АП
Автор
Антон Правкин, основатель ITOQ

Внедряет ИИ и LLM в процессы компаний, разрабатывает платформы и чат-ботов. LinkedIn

Калькулятор

Сколько видеопамяти нужно вашей модели

Веса
≈ 33–42 ГБ
KV-кэш (320 КБ на токен)
≈ 2,5 ГБ
Итого без буферов движка
≈ 35–45 ГБ
Сколько останется на буферы движка:
8 ГБ12 ГБ16 ГБ24 ГБ32 ГБ48 ГБ · +3,180 ГБ · +3596 ГБ · +51

Объём служебных буферов зависит от движка и настроек, поэтому не планируйте загрузку видеокарты под 100%. Не помещается — квантуйте веса и кэш, сократите контекст или выгрузите часть слоёв в оперативную память ценой скорости. Формулы и примеры — в статье «Сколько видеопамяти нужно для LLM», отдельная страница калькулятора — здесь.

ТемаВсе материалы про локальные LLM
Делаем это для бизнеса

Внедрение ИИ и разработка чат-ботов для бизнеса

Внедряем LLM в процессы компании: AI-агенты, Telegram-боты, автоматизация на n8n, облачные и локальные модели на своей инфраструктуре.

от 60 000 ₽ · от 2 недель

Подробнее об услуге и стоимости
CTA

Похожая задача в вашем бизнесе?

Расскажите коротко — предложим путь от аудита до запуска. Можно без формальностей.

Читать дальше