Сколько RAM и VRAM нужно для нейросети
Память для текстового инференса складывается из весов, KV-кеша и рабочих расходов. По одному числу параметров нельзя точно определить требуемый объём RAM или VRAM.
Обновлено Редакция GAW
Объём памяти LLM — бюджет конкретного запуска: одна и та же модель с разным контекстом и числом одновременных запросов требует разного количества памяти. Ниже оценивается инференс уже обученной текстовой модели, без обучения и состояния оптимизатора.
Коротко
- Миллиард параметров — 109, а GiB — 230 байт.
- Квантование весов и формат KV-кеша задаются независимо.
- В простом full-attention кеше память линейно растёт с выделенным контекстом.
- GQA использует число KV-heads, а не общее число голов внимания.
- Результат расчёта нужно сопоставлять со свободной памятью и логами движка.
Веса: параметры и эффективная разрядность
Здесь P — число параметров в миллиардах, b — эффективное число бит на параметр, результат — байты. Для условных 8 млрд параметров при 4,5 бит это 4 500 000 000 байт, около 4,19 GiB. При 16 бит — 16 000 000 000 байт, около 14,90 GiB. Это расчёт заданных условий, не характеристика конкретной модели.
Эффективная разрядность включает относящиеся к весам накладные данные. Если известен только ярлык квантования, сравните оценку с размером тензоров выбранного файла; не называйте её точным расходом. Для MoE учитываются все хранимые веса, а не только параметры активных экспертов.
KV-кеш: когда применима простая формула
Для одинаковых full-attention слоёв MHA/GQA, одинаковой размерности K и V и неквантованного кеша:
L — слои; HKV — KV-heads; D — размерность головы; C — выделенные токены на последовательность; S — одновременные последовательности; B — байты элемента. Множитель 2 учитывает ключи и значения. FP16/BF16 здесь дают 2 байта, FP32 — 4. Число последовательностей не следует путать с размером пакета токенов при обработке промпта.
| Учебная архитектура | Слои / KV-heads / размерность | Контекст / последовательности / формат | KV-кеш |
|---|---|---|---|
| GQA, 32 головы внимания | 32 / 8 / 128 | 4096 / 1 / FP16 | 0,50 GiB |
| MHA, 32 головы внимания | 32 / 32 / 128 | 4096 / 1 / FP16 | 2,00 GiB |
| Та же GQA, два диалога | 32 / 8 / 128 | 8192 / 2 / FP16 | 2,00 GiB |
В vLLM описаны разные схемы выделения кеша для full attention, sliding window и гибридных моделей. Поэтому переносить таблицу на MLA, Mamba, смешанные слои или кеш с квантованием нельзя. Неизвестную часть бюджета нужно оставить неизвестной.
Рабочий запас и пример суммы
Для первого сравнения можно задать, а затем проверить экспериментом запас в процентах от весов. Это пользовательское допущение, не универсальная норма движка. Буферы вычислений, графы и поведение аллокатора зависят от настроек и могут не масштабироваться пропорционально весам.
При весах 4,5 млрд байт, заданном запасе 20 % и первом GQA-сценарии сумма равна примерно 4,19 + 0,84 + 0,50 = 5,53 GiB. В расчёте промежуточные байты не округляются. Память ОС, видеовывод и соседние программы сюда не входят. Проверьте сценарий в калькуляторе памяти LLM.
Как сверять с RAM и VRAM
- Запишите конфигурацию модели и фактический формат весов.
- Задайте контекст и параллельность явно; не полагайтесь на плавающие значения по умолчанию.
- Запустите короткий запрос и проверьте размещение. В Ollama для этого используется
ollama ps. - Сравните свободную память до запуска и после, сохранив условия. При CPU/GPU-разделении исследуйте обе области памяти.
Если модель работает на CPU вопреки ожиданиям, переходите к диагностике GPU. Если ещё не выбран способ запуска — к первому маршруту. Таблица выше не обещает, что конкретная видеокарта вместит модель или даст определённое число токенов в секунду.
Частые вопросы
Размер файла модели равен расходу VRAM?
Нет. Помимо весов нужны кеш и рабочие буферы. Часть данных может находиться в RAM, а VRAM занята также другими приложениями. Сравнивать файл с полной ёмкостью видеокарты недостаточно.
Можно ли сложить RAM и VRAM?
Для дискретной GPU это разные области памяти. Движок может делить модель между ними, но сумма объёмов не гарантирует размещение и скорость. В системах с общей памятью нельзя считать один физический объём дважды.
Почему Q4 не всегда означает ровно четыре бита на параметр?
Блоки квантования содержат служебные коэффициенты, а отдельные тензоры могут храниться с другой точностью. Для предварительного бюджета нужна эффективная разрядность конкретного представления, а не только имя схемы.
Источники
- llama.cpp: выделение KV-кеша — Прочитано 08.11.2026; размеры K/V и типы тензоров, ветка master
- vLLM: Hybrid KV Cache Manager — Прочитано 08.11.2026; full attention, sliding window и гибриды
- Ollama: Context length — Прочитано 08.11.2026; контекст и проверка размещения
Нашли ошибку? ·