Запуск языковой модели на собственном сервере начинается не с выбора фреймворка. Он начинается с одного практического вопроса: хватит ли видеопамяти. Ошибиться здесь легко — модель, которая уверенно отвечала на демо-стенде разработчика, на боевом сервере внезапно упирается в CUDA out of memory. Причина почти всегда одна и та же: объём VRAM для LLM недооценили ещё на этапе планирования инфраструктуры.
В статье разберём, из чего складывается расход видеопамяти при запуске нейросети, как посчитать его заранее для конкретной модели и как выбрать сервер для LLM под разные задачи — от локального чат-бота на 7 миллиардах параметров до продакшен-сервиса на 70B с десятками одновременных запросов.
Что такое VRAM и почему она критична для LLM
VRAM — это видеопамять графического процессора, физически отдельная от оперативной памяти сервера и рассчитанная на высокую пропускную способность. Именно в ней хранятся веса модели и промежуточные данные вычислений: обычная RAM для этой задачи подходит плохо из-за низкой скорости обмена данными с ядрами GPU.
Когда языковая модель обрабатывает запрос, видеокарта выполняет миллионы матричных умножений подряд. Чтобы это происходило быстро, все параметры модели должны находиться в видеопамяти одновременно — иначе GPU будет постоянно ждать подгрузки данных с диска или из RAM, и скорость генерации ответа упадёт в разы. Проще говоря: сколько VRAM для LLM выделено, столько модели и доступно для быстрой работы.
В объём видеопамяти, который расходует запущенная модель, входит несколько компонентов:
- веса модели — сами параметры нейросети, зафиксированные при обучении;
- KV-cache — кэш ключей и значений внимания, который растёт с длиной контекста;
- промежуточные активации — временные тензоры, возникающие при прямом проходе;
- служебные буферы фреймворка — CUDA-контекст, память под батчи и оптимизации рантайма.
Каждый из этих пунктов ведёт себя по-разному в зависимости от размера модели, длины контекста и числа одновременных запросов. Дальше разберём расчёт подробнее.
Как рассчитывается объём видеопамяти для модели
Вес модели и точность вычислений
Базовая величина — количество параметров модели, умноженное на размер одного параметра в байтах. Размер параметра зависит от точности вычислений (precision), в которой загружена модель: в FP32 каждый параметр занимает 4 байта, в FP16 и BF16 — 2 байта, в INT8 — 1 байт, а в INT4-квантовании (GPTQ, AWQ, GGUF Q4) — примерно 0,5 байта с учётом служебных данных квантования. Формула простая: объём VRAM под веса ≈ число параметров × байт на параметр.
Для модели на 7 миллиардов параметров в FP16 получаем примерно 14 ГБ только под веса. В INT4 та же модель займёт около 4 ГБ — разница почти в 3,5 раза при сопоставимом, хотя и не идентичном, качестве ответов.
KV-cache и длина контекста
KV-cache растёт линейно с длиной контекста, числом слоёв трансформера и размером скрытого состояния. Чем длиннее диалог или документ, который обрабатывает модель, тем больше видеопамяти уходит на хранение промежуточных ключей и значений внимания. На практике для модели среднего размера с контекстом в 8–16 тысяч токенов KV-cache добавляет от 10% до 30% к объёму, который занимают веса.
Важно: при работе с очень длинным контекстом — 32K, 128K токенов и выше — KV-cache может сравняться по объёму с весами модели или даже превысить их. Здесь и кроется частая ошибка при первичном расчёте инфраструктуры.
Batch size и параллельные запросы
Сервер, который отвечает одному пользователю, и сервер, который держит десятки параллельных сессий, — две разные задачи по расходу видеопамяти. Каждый одновременный запрос добавляет собственный KV-cache, поэтому для продакшен-нагрузки объём VRAM для LLM рассчитывают по пиковому числу параллельных сессий, с запасом на рост трафика.
Значит ли это, что стоит сразу закладывать двойной запас видеопамяти на всякий случай? Не обязательно — куда важнее точно оценить пиковую нагрузку, чем перестраховываться вслепую. Общее правило для одиночного инференса: суммарный объём видеопамяти обычно составляет 1,2–1,3 от размера весов модели при умеренном контексте.
| Размер модели | Точность | Примерный объём VRAM | Рекомендуемая видеокарта |
|---|---|---|---|
| 7B | FP16 / BF16 | ~14 ГБ | RTX 4090 24 ГБ, NVIDIA A10 24 ГБ |
| 7B | INT4 (GGUF Q4) | ~4–5 ГБ | RTX 3060 12 ГБ, NVIDIA T4 16 ГБ |
| 13B | FP16 / BF16 | ~26 ГБ | NVIDIA A100 40 ГБ |
| 13B | INT4 | ~7–8 ГБ | RTX 4090 24 ГБ |
| 34B | FP16 / BF16 | ~68 ГБ | 2× NVIDIA A100 40 ГБ |
| 34B | INT4 | ~18–20 ГБ | NVIDIA A100 40 ГБ, L40S 48 ГБ |
| 70B | FP16 / BF16 | ~140 ГБ | 4–8× NVIDIA A100/H100 |
| 70B | INT4 | ~35–40 ГБ | 2× NVIDIA A100 40 ГБ, A100 80 ГБ |
Цифры в таблице — ориентир для планирования, а не точная формула под любую архитектуру. Модели с механизмом MoE (Mixture of Experts), например Mixtral 8×7B, ведут себя иначе: в видеопамяти нужно держать все веса экспертов, а вычислительно активна лишь часть из них — поэтому расход VRAM для таких архитектур считают отдельно.
Плюсы и минусы разных подходов к экономии видеопамяти
Если модель не помещается в доступную видеокарту, есть несколько путей — и у каждого свой компромисс между стоимостью, скоростью и качеством ответов.
| Подход | Что даёт | Компромисс |
|---|---|---|
| Квантование (INT8/INT4) | Снижает объём VRAM в 2–4 раза | Небольшая потеря точности ответов, особенно на сложных рассуждениях |
| Tensor parallelism (несколько GPU) | Позволяет запускать модели крупнее одной карты | Выше стоимость сервера, нужна быстрая связь между GPU (NVLink/PCIe) |
| CPU/disk offload (llama.cpp) | Запуск больших моделей на скромной видеокарте | Заметное падение скорости генерации токенов |
| Аренда готового GPU-сервера | Быстрый старт без закупки оборудования | Регулярные расходы вместо разовой покупки |
На практике команды редко выбирают что-то одно: квантование сочетают с арендой сервера подходящей конфигурации, а tensor parallelism применяют только для моделей, которые физически не помещаются в одну карту даже после сжатия.
Для запуска и обслуживания моделей чаще всего используют одну из проверенных сред:
| Инструмент | Особенность |
|---|---|
| llama.cpp | GGUF-квантование, гибкий offload между GPU и CPU |
| vLLM | Высокая пропускная способность за счёт PagedAttention |
| Ollama | Простой локальный запуск и управление моделями |
| TensorRT-LLM | Оптимизация под конкретные GPU NVIDIA в продакшене |
Проверить фактическую загрузку видеопамяти на сервере несложно одной командой:
А запустить квантованную модель через llama.cpp с выгрузкой части слоёв на GPU можно так:
Ограничения и риски нехватки видеопамяти
Нехватка VRAM редко проходит незаметно. Чаще всего это выглядит как жёсткий сбой процесса — CUDA out of memory — или как резкое падение скорости из-за того, что фреймворк начинает выгружать часть данных в оперативную память сервера. Второй сценарий коварнее первого: сервис формально работает, но генерация ответа может занимать в 10–20 раз больше времени.
Симптомы, по которым стоит заподозрить нехватку видеопамяти:
- ошибки CUDA out of memory при старте или в середине обработки запроса;
- резкий рост времени ответа при увеличении длины контекста или числа параллельных пользователей;
- нестабильная работа сервиса под нагрузкой при том, что на тестах всё было в порядке.
Есть и обратная проблема — избыточная экономия. Слишком агрессивное квантование, например переход сразу к INT2 без проверки качества, способно заметно испортить связность и точность ответов модели. Здесь важен баланс: снижать точность вычислений стоит ровно настолько, насколько позволяет требуемое качество генерации.
Отдельный риск — многокарточные конфигурации без быстрой связи между GPU. Если карты соединены через обычный PCIe вместо NVLink, обмен данными между ними при tensor parallelism может стать узким местом и свести на нет выигрыш от дополнительной видеопамяти.
Практические сценарии
Чат-бот поддержки на 7B модели
Для внутреннего чат-бота с короткими диалогами и контекстом до 4–8 тысяч токенов достаточно одной видеокарты на 16–24 ГБ. FP16-версия модели на 7B параметров с запасом под KV-cache комфортно помещается на RTX 4090 или A10, а INT4-квантование позволяет обойтись картой попроще — вплоть до 12 ГБ.
RAG-сервис на 13B модели
Когда модель дополняет ответы данными из базы знаний, контекст растёт за счёт вставленных фрагментов документов — иногда до 16–32 тысяч токенов на запрос. Здесь уже нужна карта на 40 ГБ или квантованная версия модели на 24 ГБ с более скромным запасом по параллельным сессиям.
Fine-tuning модели среднего размера
Дообучение требует значительно больше видеопамяти, чем инференс: помимо весов, в VRAM хранятся градиенты и состояния оптимизатора. Для полного fine-tuning 7B модели в FP16 счёт может идти на 60–80 ГБ. Методы вроде LoRA и QLoRA снижают требование в разы, позволяя дообучать ту же модель на одной карте с 24 ГБ.
Продакшен-инференс 70B модели для нескольких клиентов
Крупная модель под серьёзную нагрузку с десятками параллельных запросов — сценарий, где закупка собственного мультикарточного сервера часто не оправдана экономически, особенно на старте проекта. Аренда готового GPU-сервера для LLM с нужной конфигурацией закрывает эту задачу быстрее: инфраструктура разворачивается за часы, а не недели, которые ушли бы на закупку и настройку оборудования.
Частые ошибки при выборе видеопамяти для LLM
- Расчёт VRAM только под веса модели без учёта KV-cache — на длинном контексте это приводит к внезапной нехватке памяти в продакшене.
- Тестирование на коротких диалогах без проверки поведения при максимальной длине контекста, заявленной для модели.
- Выбор конфигурации без запаса под пиковое число параллельных пользователей, а не под средний трафик.
- Слепое доверие к цифрам «из интернета» без проверки на конкретной версии фреймворка и модели — расход памяти отличается между реализациями.
- Агрессивное квантование ради экономии видеопамяти без контрольной проверки качества ответов на реальных задачах.
Отдельно стоит отметить: самая большая модель не всегда оказывается правильным выбором. Модель на 13B с аккуратным квантованием и достаточным контекстом нередко закрывает задачу не хуже 70B, но обходится в разы дешевле по видеопамяти и инфраструктуре в целом.
В итоге
Расчёт видеопамяти для LLM — задача, которую стоит решать до выбора сервера, а не после первого CUDA out of memory в продакшене. Формула простая на бумаге: параметры модели, умноженные на точность вычислений, плюс KV-cache под нужный контекст и число параллельных запросов. На практике в неё легко забыть один из компонентов, и именно это чаще всего приводит к недооценке нужного объёма VRAM для LLM.
Проще говоря: считайте не только вес модели, но и реальный сценарий использования — длину контекста, число пользователей и запас на рост нагрузки. Тогда сервер для LLM подберётся с первого раза, без дорогостоящих апгрейдов на боевой инфраструктуре.
Частые вопросы
Сколько VRAM нужно для запуска LLaMA 7B?
В FP16 модель на 7 миллиардов параметров занимает около 14 ГБ видеопамяти только под веса, плюс запас под KV-cache — итого комфортно работает на карте от 16–24 ГБ. При INT4-квантовании достаточно 6–8 ГБ.
Можно ли запустить LLM вообще без видеокарты, используя только CPU и RAM?
Технически да, особенно через llama.cpp с полной выгрузкой слоёв на CPU. На практике скорость генерации падает в десятки раз по сравнению с GPU, поэтому такой вариант подходит скорее для тестов и разработки, чем для рабочего сервиса.
Что выгоднее для продакшена — одна мощная видеокарта или несколько послабее?
Зависит от модели и бюджета. Одна карта проще в обслуживании и не требует настройки tensor parallelism. Несколько карт открывают доступ к более крупным моделям, но добавляют сложность конфигурации и требуют быстрой связи между GPU.
Как квантование влияет на качество ответов модели?
Переход с FP16 на INT8 обычно почти незаметен по качеству. INT4 уже даёт небольшую, но измеримую просадку точности на сложных задачах — рассуждениях, коде, математике. Перед продакшеном стоит проверить квантованную версию на реальных примерах из вашего сценария.
Сколько видеопамяти нужно для дообучения модели, а не только инференса?
Значительно больше, чем для инференса той же модели. Полный fine-tuning требует хранения градиентов и состояний оптимизатора, что может увеличить расход VRAM в 4 раза и больше. Методы LoRA и QLoRA снижают эту нагрузку и позволяют дообучать модель среднего размера на одной карте с 24 ГБ.