Калькулятор VRAM для локальных LLM
Модель 7B в 4 битах требует около 3,3 ГиБ на веса, а модель класса Llama 3.1 8B добавляет около 1 ГиБ KV-кэша на каждые 8 192 токена контекста.
Как пользоваться
- Выберите готовую модель, чтобы заполнить параметры, слои, KV-головы и размерность головы, либо выберите «Свои значения» и введите числа из config.json модели.
- Задайте битность квантования весов (4 для Q4, 16 для FP16) и точность KV-кэша.
- Введите длину контекста в токенах и размер батча, то есть сколько последовательностей обрабатывается одновременно.
- Посмотрите итог и разбивку на веса, KV-кэш и накладные расходы. Таблица покажет, на какие распространённые GPU модель помещается.
Как считается
Память весов = параметры × биты ÷ 8 байт. Модель на 7 миллиардов параметров в 4 битах занимает 7 000 000 000 × 0,5 = 3,5 ГБ, то есть 3,26 ГиБ. В 16 битах это 14 ГБ, что совпадает с правилом 2 ГБ на миллиард параметров в bfloat16 из руководства Hugging Face «Optimizing LLMs for Speed and Memory».
KV-кэш = 2 × слои × KV-головы × размерность головы × длина контекста × размер батча × байт на значение. Двойка означает ключи и значения. Hugging Face приводит формулу на токен, 2 × 2 × слои × KV-головы × размерность головы для 16-битных значений, в статье «Unlocking Longer Generation with Key-Value Cache Quantization».
Накладные расходы вводятся в процентах от суммы весов и KV-кэша. Они заменяют контекст CUDA, буферы активаций и фрагментацию памяти. Значение по умолчанию, 10 процентов, это допущение, а не измерение.
Все результаты в ГиБ (1 ГиБ = 1 073 741 824 байта). Производители GPU пишут «24 ГБ» для карты на 24 ГиБ, поэтому таблица сравнивает итог напрямую с 8, 12, 16, 24, 48 и 80. Это оценка. Реальное потребление зависит от фреймворка (llama.cpp, vLLM, Ollama, Transformers), ядер и способа выделения кэша.
Что занимает VRAM
Доминируют две вещи. Веса фиксированы, как только выбраны модель и квантование. KV-кэш растёт с каждым токеном контекста и с каждой последовательностью в батче, поэтому при длинном контексте или многих параллельных пользователях модель, которая «влезала», вдруг перестаёт помещаться.
Модели с групповым вниманием (GQA) имеют меньше KV-голов, чем голов внимания, и кэш уменьшается в несколько раз. Поэтому поле KV-голов важнее числа голов внимания. Смотрите num_key_value_heads в config.json модели.
Размер весов на миллиард параметров
| Бит на вес | ГиБ на 1 млрд параметров | Пример: модель 8B |
|---|---|---|
| 16 (FP16 / BF16) | 1,86 | 14,90 GiB |
| 8 (INT8 / Q8) | 0,93 | 7,45 GiB |
| 6 (Q6) | 0,70 | 5,59 GiB |
| 5 (Q5) | 0,58 | 4,66 GiB |
| 4 (Q4) | 0,47 | 3,73 GiB |
| 3 (Q3) | 0,35 | 2,79 GiB |
| 2 (Q2) | 0,23 | 1,86 GiB |
Источники готовых моделей
- config.json каждого репозитория: huggingface.co/Qwen/Qwen2.5-{7B,14B,32B,72B}, huggingface.co/Qwen/Qwen3-{8B,32B}, huggingface.co/mistralai/Mistral-7B-v0.3, huggingface.co/mistralai/Mistral-Nemo-Base-2407, huggingface.co/microsoft/phi-4.
- Llama 3.1 8B и 70B: config.json от Meta на Hugging Face закрыт по запросу доступа, поэтому значения взяты из таблицы 3 статьи Meta «The Llama 3 Herd of Models» (arXiv 2407.21783). Gemma 2 9B и 27B: таблица 1 отчёта Google «Gemma 2» (arXiv 2408.00118).
- Число параметров это сумма safetensors, которую показывает API Hugging Face для каждого репозитория. Если в config.json нет head_dim, используется hidden_size ÷ число голов внимания.
Частые вопросы
Сколько VRAM нужно модели 7B в 4 битах?
Около 3,3 ГиБ только на веса. При контексте 8 192 токена у модели класса Llama 3.1 8B KV-кэш добавляет около 1 ГиБ, с накладными расходами выходит порядка 5 ГиБ. Карта на 8 ГБ справится, и останется запас под более длинный контекст.
Запустится ли модель 32B на карте с 24 ГБ?
В 4 битах да. У Qwen2.5 32B около 32,76 миллиарда параметров, веса занимают примерно 15,3 ГиБ. При контексте 8 192 токена KV-кэш весит 2 ГиБ, а с 10 процентами накладных расходов итог около 19 ГиБ.
Почему реальное потребление отличается от оценки?
У фреймворков разные накладные расходы. vLLM заранее резервирует большую часть GPU под KV-кэш и вытесняет запросы, когда место кончается, llama.cpp сразу выделяет кэш под весь контекст, а K-кванты GGUF хранят дополнительные масштабы, поэтому их эффективная битность выше номинальной. При ошибках нехватки памяти увеличьте биты или накладные расходы.
Подходит ли это для моделей со смесью экспертов?
Веса всё равно должны поместиться в память, поэтому вводите общее число параметров, а не активных. KV-кэш зависит только от слоёв внимания, поэтому берите слои и KV-головы из config. Готовые модели здесь плотные.
Gemma 2 использует скользящее окно. Оценка должна быть ниже?
Gemma 2 чередует локальные слои с окном 4 096 токенов и глобальные слои. Инструмент считает полный контекст во всех слоях, поэтому для Gemma 2 это верхняя граница, если контекст длиннее окна.