Математика VRAM
Каждый вопрос «запустится ли это на моей карте» — арифметика, а не фольклор. Общий VRAM — это веса, плюс KV-кэш, плюс фиксированный кусок активаций и накладных расходов движка. Если вы умеете умножать параметры на биты, вы можете рассчитать машину, ничего на неё не тратя. Эта страница даёт формулу, таблицы и разбор для 16 GB, который можно скопировать для любой карты.
Формула
итоговый VRAM = веса + KV-кэш + накладные расходы
веса (GB) = параметры (B) × бит на вес ÷ 8
KV-кэш = байт на токен × длина контекста (см. [KV-кэш](/guide/kv-cache))
накладные ≈ 1–2 GB (активации, контекст драйвера, буферы, фрагментация)
Эффективные биты на вес для распространённых квантов GGUF: Q4_K_M ≈ 4.8, Q5_K_M ≈ 5.7, Q6_K ≈ 6.6, Q8_0 ≈ 8.5. Умножьте параметры на это, поделите на 8 — и вы в пределах нескольких процентов от размера файла на диске.
Правила, которые стоит запомнить, в GB на миллиард параметров:
- Q4_K_M ≈ 0.6 GB — повседневная рабочая лошадка
- Q5_K_M ≈ 0.7 GB
- Q6_K ≈ 0.8 GB — почти без потерь на глаз
- Q8_0 ≈ 1.1 GB — прозрачно, примерно вдвое дороже Q4
- fp16/bf16 = 2.0 GB — территория обучения и серьёзного дообучения
Разборы
Размер KV-кэша зависит от архитектуры. Современные GQA-модели дают примерно 128–256 KB на токен при fp16 KV для классов 8B–32B и около 320 KB для класса 70B. Точная формула — на странице KV-кэш; здесь мы просто прибавляем. Накладные расходы заложены в 1.5 GB на строку.
Q4_K_M (~4.8 бита на вес):
| Модель | Веса | KV @ 8k | KV @ 32k | Итого @ 8k | Итого @ 32k |
|---|---|---|---|---|---|
| 8B | 4.8 GB | 1.0 GB | 4.2 GB | 7.3 GB | 10.5 GB |
| 14B | 8.4 GB | 1.6 GB | 6.4 GB | 11.5 GB | 16.3 GB |
| 32B | 19.2 GB | 2.1 GB | 8.4 GB | 22.8 GB | 29.1 GB |
| 70B | 42.0 GB | 2.6 GB | 10.5 GB | 46.1 GB | 54.0 GB |
Q6_K (~6.6 бита на вес):
| Модель | Веса | KV @ 8k | KV @ 32k | Итого @ 8k | Итого @ 32k |
|---|---|---|---|---|---|
| 8B | 6.6 GB | 1.0 GB | 4.2 GB | 9.1 GB | 12.3 GB |
| 14B | 11.6 GB | 1.6 GB | 6.4 GB | 14.7 GB | 19.5 GB |
| 32B | 26.4 GB | 2.1 GB | 8.4 GB | 30.0 GB | 36.3 GB |
| 70B | 57.8 GB | 2.6 GB | 10.5 GB | 61.9 GB | 69.8 GB |
Два паттерна стоит усвоить. Q6_K стоит ~35–40% дороже Q4_K_M — часто это разница между одним уровнем GPU и следующим. И KV при 32k контекста — не ошибка округления: на маленьких моделях он соперничает с самими весами. Старые MHA-дизайны (эпоха Llama-2) таскали KV-кэши в 4–8 раз больше — вот почему 32k контекста раньше требовали экзотического железа, а GQA-модели — нет.
OOM при загрузке против OOM посреди генерации
- При загрузке: одни веса превышают свободный VRAM. Движок отказывается стартовать или выгружает слои на CPU и ползёт. Честно, сразу, легко диагностируется.
- Посреди генерации: веса влезли, но KV-кэш растёт токен за токеном. Свежая сессия работает прекрасно; сорок реплик спустя, после выгрузки RAG или вставленного файла, кэш съедает ваш запас, и процесс умирает посреди ответа. Это коварный случай — всегда рассчитывайте под контекст, которого реально достигнете, а не под первый промпт.
Посмотрите, как это происходит, вживую:
watch -n1 nvidia-smi --query-gpu=memory.used,memory.total --format=csv
Рабочий лист: разбор для 16 GB
- Доступный бюджет: 16 GB × 0.85 ≈ 13.6 GB. Десктоп, браузер и драйвер уже резервируют 0.5–1 GB; запас 10–20% — правило, а не роскошь.
- Мечта: 32B Q4_K_M — 19.2 GB одних весов. Мертворождено.
- Реалистично: 14B Q4_K_M при 8k контекста: 8.4 + 1.6 + 1.5 = 11.5 GB. Влезает с ~15% запаса. В путь.
- Теперь хочется 32k контекста: 8.4 + 6.4 + 1.5 = 16.3 GB. За бюджетом.
- Три фикса — выберите один или скомбинируйте:
- Квантуйте KV-кэш в q8_0: 6.4 → 3.2 GB, итого 13.1 GB. Влезает.
- Опустите веса до Q4_K_S или IQ4_XS — ещё ~0.5–1 GB экономии.
- Перейдите на 8B Q6_K: 6.6 + 4.2 + 1.5 = 12.3 GB, просторно.
Те же пять шагов работают для карты на 8 GB, 24 GB или бокса с двумя GPU на 48 GB. Бюджет, мечта, вычитание, корректировка.
Всегда оставляйте запас
Движки выделяют скретч-буферы на каждый слот батча, фрагментация накапливается за время долгоживущего сервера, а параллелизм умножает KV на каждый активный запрос. Конфиг, который «только-только влезает» в одноразовом бенче, упадёт с OOM в продакшене. 10–20% свободных — налог за стабильность. Что реально влезает на каждом уровне карт — см. классы GPU; почему биты кванта такие, какие есть — см. квантизация.
Связанные разделы: квантизация · KV-кэш · классы GPU