Запуск LLM: выбор и установка фреймворка
На этой странице — четыре способа запустить большую языковую модель на машине с GPU: от самого быстрого старта до продакшн-развёртывания. Примеры даны для профиля RTX PRO 6000 Blackwell на 96 ГБ, но подходят и для других карт — меняются только размеры моделей, которые в них помещаются.
Перед началом убедитесь, что драйвер работает и лицензия получена:
nvidia-smi
nvidia-smi -q | grep -i licen
Если что-то из этого не отвечает — см. подготовку виртуальной машины и решение проблем.
Что выбрать
| Фреймворк | Для чего | Сложность запуска |
|---|---|---|
| Ollama | Попробовать модель, локальная разработка, единичные запросы | Минимальная |
| llama.cpp | Квантованные модели, экономия видеопамяти, полный контроль | Средняя |
| vLLM | Продакшн-инференс, много параллельных запросов, OpenAI-совместимый API | Средняя |
| NVIDIA Triton | Несколько моделей и разных бэкендов в одном сервисе, метрики, масштабирование | Высокая |
Практическое правило: начинайте с Ollama, чтобы убедиться, что модель делает то, что нужно. Переходите на vLLM, когда появляются параллельные пользователи — он даёт кратно большую пропускную способность за счёт непрерывной пакетной обработки запросов. llama.cpp берите, когда модель не помещается в видеопамять в исходной точности. Triton — когда моделей несколько и их нужно обслуживать как единый сервис.
Что помещается в 96 ГБ
| Модель | Точность | Примерно нужно видеопамяти |
|---|---|---|
| 7–8 млрд параметров | FP16 | 16–18 ГБ |
| 32 млрд параметров | FP16 | 65–70 ГБ |
| 70 млрд параметров | FP16 | не помещается |
| 70 млрд параметров | 8 бит | 70–75 ГБ |
| 70 млрд параметров | 4 бита | 40–45 ГБ |
| 120 млрд параметров | 4 бита | 65–70 ГБ |
Оценка грубая: к весам модели добавляется кэш контекста, который растёт с длиной запроса и числом одновременных сессий. Закладывайте запас в 10–20 % сверх размера весов, а для длинного контекста — больше.
Подготовка: Docker и доступ к GPU из контейнеров
Три из четырёх вариантов удобнее запускать в контейнерах. Чтобы контейнер увидел карту, нужен NVIDIA Container Toolkit.
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
| gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
| sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
| tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
apt update && apt install -y nvidia-container-toolkit
nvidia-ctk runtime configure --runtime=docker
systemctl restart docker
Проверка — команда должна показать ту же карту, что и на хосте:
docker run --rm --gpus all nvidia/cuda:12.8.0-base-ubuntu22.04 nvidia-smi
Карты Blackwell, включая RTX PRO 6000, требуют сборок под CUDA 12.8 и новее.
Образы и колёса PyTorch, собранные под более старые версии CUDA, на них
не запустятся — ошибка выглядит как «no kernel image is available for execution
on the device». При установке PyTorch вручную берите вариант cu128 или свежее.
Ollama
Самый короткий путь: установка одной командой, модели скачиваются по имени.
curl -fsSL https://ollama.com/install.sh | sh
ollama run llama3.1:70b
Сервис поднимается на порту 11434 и предоставляет HTTP API. Модели хранятся
в /usr/share/ollama/.ollama/models — вынесите этот каталог на отдельный диск,
если планируете держать несколько крупных моделей.
Проверка, что модель действительно считает на карте:
nvidia-smi
В списке процессов должен быть ollama, а занятая память — соответствовать
размеру модели.
llama.cpp
Даёт максимальный контроль над квантизацией и работает с моделями в формате GGUF. Сборка с поддержкой CUDA:
apt install -y build-essential cmake git
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release -j $(nproc)
Запуск сервера с OpenAI-совместимым API:
./build/bin/llama-server \
-m /models/model-q4_k_m.gguf \
--n-gpu-layers 999 \
--ctx-size 8192 \
--host 0.0.0.0 --port 8080
Ключевые параметры:
--n-gpu-layers— сколько слоёв модели выгрузить на карту. Значение с запасом означает «всё, что поместится»; если видеопамяти не хватает, часть слоёв уйдёт на процессор и скорость упадёт кратно;--ctx-size— длина контекста. Прямо влияет на потребление памяти;- квантизация выбирается файлом модели:
q8_0ближе к исходному качеству,q4_k_m— разумный компромисс между качеством и объёмом.
vLLM
Рассчитан на поток запросов: непрерывная пакетная обработка и управление кэшем контекста дают кратно большую пропускную способность, чем последовательные вызовы.
Запуск в контейнере:
docker run --gpus all --rm -p 8000:8000 \
-v /models:/models \
vllm/vllm-openai:latest \
--model /models/<модель> \
--gpu-memory-utilization 0.90 \
--max-model-len 8192
Сервис отдаёт OpenAI-совместимый API на порту 8000 — приложения, написанные под такой интерфейс, работают без изменений.
Параметры, на которые стоит обратить внимание:
--gpu-memory-utilization— какую долю видеопамяти отдать под модель и кэш. Значение 0.90 разумно для выделенного профиля; снижайте, если на карте работает что-то ещё;--max-model-len— максимальная длина контекста. Завышенное значение съедает память, которой не хватит под параллельные запросы;--tensor-parallel-size— разнесение модели на несколько карт. Имеет смысл, когда карты связаны мостом NVLink: в GPU Cloud это связка из двух карт H200, на выделенном сервере — до восьми. Без моста обмен идёт через PCIe и становится узким местом. Подробнее — объединение карт через NVLink.
Если запуск на Blackwell завершается зависанием, попробуйте --enforce-eager —
он отключает граф CUDA ценой части производительности.
NVIDIA Triton Inference Server
Подходит, когда моделей несколько, они разных типов, и всё это нужно обслуживать как один сервис с метриками и управлением версиями.
Модели складываются в репозиторий с фиксированной структурой:
/models
└── my-model
├── config.pbtxt
└── 1
└── model.onnx
Запуск:
docker run --gpus all --rm \
-p 8000:8000 -p 8001:8001 -p 8002:8002 \
-v /models:/models \
nvcr.io/nvidia/tritonserver:<версия>-py3 \
tritonserver --model-repository=/models
Порты: 8000 — HTTP, 8001 — gRPC, 8002 — метрики в формате Prometheus.
Версию образа подбирайте по матрице совместимости NVIDIA: она должна соответствовать версии драйвера и CUDA. Для карт Blackwell берите выпуски, собранные под CUDA 12.8 и новее.
Проверка производительности
Убедиться, что нагрузка действительно легла на карту, помогает наблюдение в реальном времени:
nvidia-smi -l 1
Смотрите на две величины: GPU-Util — насколько загружены вычислительные блоки,
и Memory-Usage — сколько видеопамяти занято. Низкая загрузка при высоком
потреблении памяти обычно означает, что узкое место не в карте, а в подготовке
данных или в сети.
Сравнить профиль с ожидаемым уровнем можно бенчмарком PyTorch.
Что учесть при промышленном использовании
- Модели занимают много места на диске. Планируйте дисковое пространство заранее: одна модель на 70 млрд параметров в 4-битной квантизации — это порядка 40 ГБ.
- Первый запуск долгий. Загрузка весов в видеопамять занимает от десятков секунд до нескольких минут. Не перезапускайте сервис без необходимости.
- Не открывайте API в интернет напрямую. У Ollama, llama.cpp и vLLM аутентификации по умолчанию нет — закрывайте доступ правилами firewall на Edge Gateway или обратным прокси с авторизацией.
- Обновление ядра ломает драйвер. Перед обновлением системы перечитайте решение проблем.