После выполнения этой инструкции вы сможете подбирать локальную модель под свою видеокарту не по слухам, а по воспроизводимой схеме: сначала измерять реальную доступную VRAM, затем учитывать веса, KV cache, activations и накладные расходы runtime, а после этого проверять фактическую загрузку на вашей машине.
Короткий вывод: безопасный выбор модели начинается не с названия и не с числа параметров, а с вопроса: помещаются ли веса модели, KV cache и контекст, activations и runtime overhead в вашу VRAM при вашем сценарии работы. Если считать только веса, модель может загрузиться и всё равно упасть по OOM на длинном контексте, большом batch size или при параллельных запросах.
- ⏱️ Время: зависит от уже установленного runtime; в официальных источниках точная оценка не указана.
- 🎯 Сложность: средний.
- 💰 Стоимость: зависит от выбранного runtime и вашего железа; единой официальной цены в источниках нет.
- 🛠️ Что потребуется: доступ к машине с GPU; терминал; для NVIDIA —
nvidia-smi; установленный или выбранный runtime: Ollama, llama.cpp, vLLM, Text Generation Inference либо Transformers + Accelerate. - 📌 Актуальность: инструкция опирается на официальные документы NVIDIA, Hugging Face, Ollama, llama.cpp, vLLM и TGI, сверенные по состоянию на 2026-08-14. Единой версии продукта здесь нет, потому что это общий workflow подбора модели под VRAM для разных runtime.
Редакционное ограничение: в официальных источниках нет универсальной таблицы вида «8 GB VRAM = такая-то модель» или «24 GB VRAM = такой-то размер модели». Итоговый fit зависит от архитектуры модели, precision и quantization, длины контекста, batch size, параллельных запросов, KV-cache и накладных расходов конкретного runtime. Поэтому ниже — не таблица-угадайка, а практический способ проверить совместимость на вашей карте.
Что именно занимает VRAM
| Компонент | Почему важен | Что делать на практике |
|---|---|---|
| Веса модели | Это первый обязательный слой расчёта: модель должна хотя бы загрузиться. | Сначала оценивайте, помещаются ли веса, а уже потом считайте остальную память. |
| KV cache и контекст | Официальные источники сходятся в том, что после весов нужно закладывать память под KV cache и длину контекста. | Если памяти мало, уменьшайте контекст или выбирайте runtime с явным контролем KV cache. |
| Activations | В Transformers память активаций зависит от batch size и sequence length. Модель может помещаться по весам и всё равно падать по OOM. |
Не проверяйте fit только на коротком тесте. Сразу учитывайте реальную длину запроса и batch. |
| Накладные расходы runtime | По документации Accelerate первая CUDA-аллоцкация обычно забирает около 1–2 GB под kernels, поэтому полезная VRAM меньше паспортной. | Оставляйте консервативный запас и не считайте весь номинальный объём памяти доступным под модель. |
| Параллельность | В Ollama параллельные запросы увеличивают эффективный context и потребление памяти. | Если модель держится только на одном запросе, не считайте это подтверждением fit для многопользовательского сценария. |
Какой runtime выбирать, если памяти впритык
| Runtime | Когда выбирать | Чем управлять | Главное ограничение |
|---|---|---|---|
| Ollama | Если вам нужен самый простой локальный старт без глубокого тюнинга. | Выбирайте только такую модель, которая полностью помещается в VRAM для GPU inference; при необходимости сразу выгружайте её командой ollama stop. |
Для GPU inference модель должна полностью помещаться в VRAM; параллельные запросы и context увеличивают память. |
| llama.cpp | Если нужен явный контроль над тем, сколько слоёв держать в VRAM. | Используйте --n-gpu-layers; для автоподгонки unset-аргументов под память устройства доступен --fit. |
Нужен совместимый формат модели; реальный fit зависит от контекста, batch, KV cache и backend overhead. |
| vLLM | Если вы поднимаете серверный inference и хотите отдельно управлять KV cache, quantization и offload. | Уменьшайте memory footprint через поддерживаемые схемы quantization; при необходимости задавайте kv_cache_memory_bytes и kv_offloading_size. |
Совместимость конкретных quantization-режимов зависит от версии и модели; это нужно проверять в официальных docs. |
| Text Generation Inference (TGI) | Если нужен Hugging Face-совместимый serving с шардированием и несколькими вариантами quantization. | Используйте tensor parallelism, sharding и поддерживаемые режимы quantization. | Поддержка режимов зависит от модели и окружения; для CUDA и ROCm нужны соответствующие контейнеры и драйверы. |
| Transformers + Accelerate | Если вы строите кастомный Python-пайплайн и хотите точный контроль над загрузкой модели и лимитами по памяти. | Создавайте модель через init_empty_weights() и ограничивайте память по GPU через max_memory. |
Даже при аккуратной загрузке длинный контекст или большой batch всё равно могут вызвать OOM. |
Пошагово: как подобрать модель под свою видеокарту (VRAM)
-
Шаг 1. Измерьте базовую загрузку вашей GPU.
На NVIDIA-закарте начните с
nvidia-smi. Документация показывает отчёт по frame-buffer memory usage и рекомендует идентифицировать GPU по UUID или PCI bus ID, потому что порядок устройств может меняться после перезагрузки.nvidia-smiОжидаемый результат: вы видите, какая именно карта будет использоваться, и сколько памяти уже занято до загрузки модели.
-
Шаг 2. Сразу вычтите служебный запас из паспортной VRAM.
Не планируйте модель впритык к номинальному объёму памяти. По документации Hugging Face Accelerate первая CUDA-аллоцкация обычно забирает около 1–2 GB под kernels, поэтому фактическая полезная VRAM меньше, чем кажется по характеристикам карты.
Ожидаемый результат: у вас появляется консервативный бюджет памяти, а не заведомо оптимистичная оценка.
-
Шаг 3. Оцените fit сначала по весам, а не по контексту.
Официальные документы сходятся на одном правиле: сначала должны поместиться веса модели, затем вы закладываете память под KV cache, activations и runtime overhead. Это важнее, чем искать готовую таблицу соответствий по гигабайтам.
Если модель уже на уровне весов выглядит пограничной, заранее планируйте один из обходных путей: quantization, частичное размещение слоёв в VRAM, шардирование или offload.
Ожидаемый результат: вы понимаете, помещается ли модель хотя бы в базовом виде или сразу нужен режим экономии памяти.
-
Шаг 4. Зафиксируйте реальный сценарий инференса: контекст, batch и параллельность.
В документации Transformers указано, что activations зависят от
batch sizeиsequence length. В документации Ollama отмечено, что параллельные запросы увеличивают эффективный context и потребление памяти. Поэтому проверять fit на коротком одиночном промпте недостаточно.Если вы планируете длинный контекст или несколько одновременных запросов, считайте именно этот сценарий целевым, а не минимальный тест «модель ответила один раз».
Ожидаемый результат: у вас есть реальный профиль нагрузки, под который нужно подбирать модель.
-
Шаг 5. Выберите стратегию размещения для своего runtime.
Если вам нужен простой локальный запуск, в Ollama берите только ту модель, которая целиком помещается в VRAM для GPU inference. Если модель чуть не влезает и нужен более ручной контроль, в llama.cpp server используйте
--n-gpu-layersи, при необходимости,--fit.Для серверного inference в vLLM уменьшайте memory footprint через поддерживаемое quantization и при необходимости задавайте
kv_cache_memory_bytes; это значение переопределяетgpu_memory_utilization. Если KV cache нужно частично выносить, для этого естьkv_offloading_size. В TGI используйте tensor parallelism, sharding и поддерживаемые режимы quantization. В кастомных Python-сценариях с Transformers + Accelerate создавайте модель черезinit_empty_weights()и задавайте per-GPU лимит черезmax_memory.Ожидаемый результат: вы выбираете не «любую модель», а конкретный способ уложить её в память вашего runtime.
-
Шаг 6. Загрузите модель и подтвердите fit фактическим мониторингом.
После выбора quantization, offload или числа GPU-слоёв загружайте модель на целевой машине и снова проверяйте VRAM. На NVIDIA это удобно делать через
nvidia-smi, а для других ускорителей — через аналогичный мониторинг. Смотрите не только на момент загрузки, но и на запросы с тем контекстом и той параллельностью, которые вы реально будете использовать.Ожидаемый результат: модель загружается, отвечает на тестовый и рабочий запросы и не падает по OOM на вашей карте.
Как проверить, что всё работает
-
Запустите выбранный runtime и загрузите модель на целевой GPU.
-
В отдельном терминале откройте
nvidia-smiи сверяйте карту по UUID или PCI bus ID, а не по случайному порядку устройств. -
Сначала отправьте короткий тестовый запрос, чтобы убедиться, что веса действительно загрузились.
-
Затем повторите запрос с тем реальным контекстом, который вы планируете использовать в работе.
-
Если у вас будет параллельная нагрузка, проверьте и её: в Ollama параллельные запросы увеличивают эффективный context и расход памяти.
-
Считайте fit подтверждённым только если модель не падает по OOM, а потребление памяти остаётся в пределах вашей VRAM и не требует аварийной выгрузки.
Для чистого повторного теста в Ollama можно выгрузить модель сразу, не дожидаясь стандартного периода удержания в памяти, командой ollama stop. По FAQ модель по умолчанию удерживается в памяти 5 минут.
Частые ошибки и исправления
-
❌ Ошибка: вы ориентируетесь только на «объём VRAM на коробке».
✅ Решение: сначала смотрите фактическую загрузку через
nvidia-smi. Учитывайте, что первая CUDA-аллоцкация обычно забирает около 1–2 GB под kernels, поэтому полезной памяти меньше паспортной. -
❌ Ошибка: модель загружается, но падает на длинном контексте.
✅ Решение: проблема может быть не в весах, а в activations и KV cache. В Transformers память активаций зависит от
batch sizeиsequence length, поэтому уменьшайте контекст или batch и проверяйте повторно. -
❌ Ошибка: в Ollama всё было нормально на одном запросе, но начались OOM при параллельной работе.
✅ Решение: учитывайте, что параллельные запросы увеличивают эффективный context и потребление памяти. Для GPU inference модель должна полностью помещаться в VRAM, а саму параллельность нужно тестировать отдельно.
-
❌ Ошибка: вы потеряли нужную GPU после перезагрузки и смотрите не на тот адаптер.
✅ Решение: идентифицируйте карту по UUID или PCI bus ID. Документация NVIDIA прямо рекомендует это, потому что порядок устройств может меняться.
-
❌ Ошибка: вы ищете универсальную таблицу «N GB VRAM = строго такой-то размер модели».
✅ Решение: такой официальной таблицы нет. Подбирайте модель только через измерение на целевой машине и с учётом выбранного runtime, quantization, контекста, batch и KV cache.
Безопасность и ограничения
- Нет универсальной таблицы совместимости. Это не недостаток статьи, а ограничение официальных данных: итоговый fit зависит от архитектуры модели, precision или quantization, контекста, batch size, параллельных запросов, KV-cache dtype и runtime overhead.
- Фактическая VRAM может отличаться от номинальной. В источниках отдельно отмечены драйверные и runtime-накладные расходы; дополнительно на расхождение могут влиять ECC, MIG, ОС и особенности отчётности.
- Поддержка quantization меняется по версиям. Для vLLM и TGI проверяйте актуальные docs и release notes выбранного runtime перед развёртыванием.
- Для TGI важна совместимость окружения. В официальном репозитории указаны отдельные замечания для CUDA-сборки, NVIDIA Container Toolkit и ROCm-образа для AMD.
- Практический вердикт: если модель влезает только «в теории» и без запаса, считайте, что она не подходит. Для рабочей системы безопаснее сразу брать quantization, offload, меньше контекст или другой runtime с явным управлением памятью.
Что делать дальше
- Если вы ещё уточняете, какая именно генеративная модель нужна под задачу, сначала определите формат входа и допустимый контекст, а уже потом считайте VRAM.
- Если вам нужен не только текст, но и мультимодальная модель, закладывайте память ещё консервативнее и перепроверяйте fit после загрузки на том же runtime.
- Когда модель уже стабильно помещается в память, переходите к следующему этапу: как файн-тюнить модель: с чего начать.
- Если локальный запуск не обязателен, сравните лучшие бесплатные аналоги ChatGPT и проверьте, не проще ли решить задачу без собственной GPU-инфраструктуры.
Источники
- nvidia-smi Documentation
- Loading big models into memory – Hugging Face
- Model memory anatomy – Hugging Face
- FAQ – Ollama
- llama.cpp/tools/server/README.md at master · ggml-org/llama.cpp · GitHub
- Quantization – vLLM
- Cache – vLLM
- GitHub – huggingface/text-generation-inference: Large Language Model Text Generation Inference
Вопросы и ответы
Можно ли выбирать модель только по объёму VRAM в характеристиках видеокарты?
Нет. Полезная память меньше номинальной из-за накладных расходов runtime, а итоговый fit зависит не только от весов, но и от KV cache, activations, контекста, batch и параллельности.
Почему модель загружается, но падает на длинном запросе?
Потому что fit по весам не гарантирует fit по activations и KV cache. Документация Transformers отдельно указывает зависимость памяти от batch size и sequence length.
Что делать, если модель чуть-чуть не помещается в VRAM?
Не увеличивайте карту вслепую. Сначала попробуйте quantization, ограничение KV cache, offload, шардирование или частичное размещение слоёв в VRAM, в зависимости от runtime.
Подходит ли Ollama для пограничных сценариев по памяти?
Только если модель полностью помещается в VRAM для GPU inference. Если вам нужен более тонкий контроль памяти, удобнее смотреть на llama.cpp, vLLM, TGI или Transformers + Accelerate.
Как понять, что модель действительно подходит под мою карту?
Только по фактической проверке на целевой машине: загрузите модель, следите за VRAM через nvidia-smi или аналогичный мониторинг и прогоните именно тот контекст и ту параллельность, которые будут в работе.