Модель на 7 миллиардов параметров занимает 14 ГБ в fp16 или 4 ГБ в 4-битной квантизации — разница в 3.5 раза при одинаковом наборе весов. Купить GPU-сервер, не посчитав VRAM заранее, — частая ошибка: карта либо простаивает наполовину, либо модель не влезает и падает с CUDA out of memory. Разберём, как посчитать нужный объём точно, а не на глаз.
Зачем считать VRAM заранее
Видеопамять — это единственный ресурс GPU, который нельзя расширить на лету, в отличие от оперативной памяти или диска. Если модель весит больше, чем есть VRAM, инференс либо не запустится, либо драйвер начнёт выгружать слои в системную RAM через --gpu-memory-utilization или аналог, и скорость упадёт в разы. Расчёт до покупки сервера экономит и деньги, и время на пересборку конфигурации.
Правило простое: считать нужно не только веса модели, но и контекст, батч и служебные буферы CUDA. Иногда именно контекст «съедает» половину карты на длинных диалогах.
Формула расчёта VRAM для инференса
Базовая оценка объёма памяти под веса:
VRAM_GB = (params_billion * bytes_per_param) * 1.2
Коэффициент 1.2 — запас на активации, KV-кэш и фрагментацию памяти. bytes_per_param зависит от точности: 2 байта для fp16/bf16, 1 байт для int8, 0.5 байта для int4. Для модели на 13 млрд параметров в fp16 получаем 13 * 2 * 1.2 ≈ 31.2 ГБ — уже не влезет в одну карту с 24 ГБ VRAM.
Отдельно добавьте KV-кэш: он растёт линейно с длиной контекста и числом одновременных запросов. Для 7B-модели с контекстом 8192 токена и одним диалогом кэш занимает примерно 1-2 ГБ, а при десяти параллельных сессиях — уже 10-20 ГБ.
Как квантизация меняет требования к памяти
Квантизация уменьшает точность весов, но резко снижает объём VRAM и почти не портит качество ответов при 8 и 4 битах. Ниже — ориентир для модели на 7 млрд параметров.
| Точность | Байт на параметр | VRAM под веса | Потеря качества |
|---|---|---|---|
| fp16 / bf16 | 2 | ~14 ГБ | нет |
| int8 | 1 | ~7 ГБ | минимальная |
| int4 (GGUF Q4) | 0.5 | ~3.5 ГБ | заметна на сложных задачах |
| int2 | 0.25 | ~1.8 ГБ | ощутимая |
Для запуска на CPU без GPU вообще стоит посмотреть квантизацию GGUF в llama.cpp — там та же формула работает уже для оперативной памяти, а не видеопамяти.
VRAM для дообучения отличается от инференса
Fine-tuning требует в 3-4 раза больше памяти, чем простой инференс той же модели, потому что нужно хранить градиенты и состояние оптимизатора. Полное дообучение 7B-модели в fp16 занимает около 60-70 ГБ VRAM — это уже несколько GPU. Метод LoRA снимает эту проблему: обучаются только небольшие адаптерные матрицы, а базовые веса остаются замороженными в 4-битной квантизации.
С LoRA и квантизацией QLoRA дообучение той же 7B-модели укладывается в 10-12 ГБ VRAM — доступно на одной карте среднего класса вместо кластера.
Сколько VRAM нужно популярным моделям
| Модель | fp16, инференс | int4, инференс |
|---|---|---|
| 7B (Mistral, Llama 3 8B) | 16 ГБ | 5 ГБ |
| 13-14B | 28 ГБ | 8 ГБ |
| 34B | 68 ГБ | 20 ГБ |
| 70B | 140 ГБ | 40 ГБ |
Значения включают запас на контекст 4096 токенов при одном пользователе; при росте нагрузки закладывайте дополнительно 10-20% на каждый параллельный поток запросов.
Какой GPU выбрать под бюджет
Для 7B-модели в 4-битной квантизации хватает карты с 8 ГБ VRAM — задача для Ollama на VDS с одной потребительской видеокартой. Для 13B в fp16 или чат-сервиса с несколькими одновременными пользователями нужна карта с 24 ГБ VRAM. Для 70B без квантизации разумной альтернативы кластеру из нескольких GPU нет — берите int4-версию и одну карту с 48 ГБ или разносите слои по двум картам через vLLM с tensor parallelism.
- До 8 ГБ VRAM — модели 7B в int4, личные и небольшие проекты.
- 16-24 ГБ VRAM — 7-13B в fp16 или 34B в int4.
- 48 ГБ и выше — 70B в int4 или fine-tuning средних моделей.
- Несколько GPU — 70B в fp16 или обучение с нуля.
Итог: как не ошибиться с расчётом
Перед заказом сервера посчитайте память по формуле, добавьте KV-кэш под реальную длину контекста и число параллельных запросов, а затем накиньте 15-20% запаса на фрагментацию. Дешевле взять карту с запасом по VRAM один раз, чем потом переносить модель и терять время на миграцию весов.
- Определите число параметров модели и целевую точность (fp16, int8, int4).
- Посчитайте базовый объём по формуле и добавьте KV-кэш под контекст.
- Для дообучения закладывайте в 3-4 раза больше памяти, чем для инференса, или используйте LoRA.
- Берите GPU с запасом 15-20% сверх расчёта — на фрагментацию и рост нагрузки.