Top.Mail.Ru
Гайд по запуску llama.cpp и VLLM в консоли, и тест-сравнение на AI PRO R9700 и AMD Instinct MI100 32GB | Блог Serverflow Скачать
прайс-лист
Бесплатная
доставка по РФ
Бонус за
обратную связь
Интернет-магазин
Серверного оборудования
8 (800) 222-70-01 Консультация IT-специалиста Сравнение

Гайд по запуску llama.cpp и VLLM в консоли, и тест-сравнение на AI PRO R9700 и AMD Instinct MI100 32GB

~ 20 мин
78
Простой
Гайды
Гайд по запуску llama.cpp и VLLM в консоли, и тест-сравнение на AI PRO R9700 и AMD Instinct MI100 32GB

llama.cpp и vLLM: два движка для разных задач

llama.cpp и vLLM решают единую задачу – запуск больших языковых моделей, но подходят к ней с противоположных сторон. Понимание этой разницы поможет не тратить время на инструмент, который не подходит под ваш сценарий.

Философия и архитектура

llama.cpp – это движок на C/C++, изначально созданный для запуска моделей на обычном железе: ноутбуках, десктопах, даже телефонах. Его главная идея – максимальная портативность и эффективность на ограниченных ресурсах. Модели загружаются в формате GGUF, который поддерживает агрессивное квантование от 2 до 8 бит и работает через memory mapping: файл модели отображается в память напрямую, без лишних копирований. llama.cpp умеет распределять слои между CPU и GPU, что позволяет запускать модели, которые не влезают в видеопамять целиком.

vLLM – это Python-фреймворк, спроектированный для серверного инференса с высокой нагрузкой. В его основе лежит PagedAttention – механизм, который управляет KV-кешем по аналогии с виртуальной памятью в операционных системах. Вместо того чтобы резервировать большие непрерывные куски видеопамяти под каждый запрос, vLLM выделяет её небольшими страницами и переиспользует их. Это сокращает потери памяти с 60-80% до менее чем 4% и позволяет обслуживать в разы больше запросов одновременно.

Установка и запуск llama.cpp

Пошаговая инструкция по установке Docker CE, загрузке ROCm-образа llama.cpp, скачиванию GGUF-моделей, запуску в CLI и серверном режиме, а также работе с локальным HTTP API.

llama.cpp + ROCm + Docker

В инструкции используется Docker-образ llama.cpp с ROCm-бэкендом, публикация которого доступна через Docker Hub. Такой вариант удобен для быстрого запуска на AMD GPU без ручной сборки.

Шаг 1. Установка Docker CE

llama.cpp ROCm Docker

Сначала нужно добавить репозиторий Docker, установить Docker CE и включить автозапуск сервиса.

# Добавить репозиторий Docker (если ещё не добавлен) sudo apt update sudo apt install -y ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) \ signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null  
                
# Установить Docker CE sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io \ docker-buildx-plugin docker-compose-plugin
# Запуск и автозагрузка sudo systemctl enable --now docker # Добавить текущего пользователя в группу docker sudo usermod -aG docker "$LOGNAME"
Проверка
docker --version

Шаг 2. Скачивание Docker-образа llama.cpp с ROCm

AMD публикует готовые Docker-образы llama.cpp с ROCm-бэкендом. Ниже пример загрузки подходящего образа.

docker pull rocm/llama.cpp:llama.cpp-b6652.amd0_rocm7.0.0_ubuntu24.04_full
Доступные теги можно смотреть на странице Docker Hub для образа rocm/llama.cpp.
Суффикс тега Содержимое Когда использовать
_full CLI + сервер + конвертер + квантизатор Универсальный вариант
_server Только HTTP-сервер Если нужен только API
_light Только CLI (main) Минимальный размер

Шаг 3. Скачивание GGUF-модели

GGUF — это формат моделей, оптимизированный для llama.cpp. Такие модели обычно ищут на Hugging Face с фильтром library=gguf.

3.1. Где искать модели
Популярные провайдеры GGUF: unsloth, bartowski, ggml-org, Qwen, meta-llama.
3.2. Какой квант выбрать
Квант Размер (7B) Качество Рекомендация
Q4_K_S ~3.56 ГБ Хороший баланс Лучший компромисс размер/качество
Q4_K_M ~3.80 ГБ Чуть лучше Q4_K_S Рекомендуется как дефолт
Q5_K_M ~4.45 ГБ Очень близко к FP16 Если VRAM позволяет
Q6_K ~5.15 ГБ Почти без потерь Для максимального качества
Q8_0 ~6.70 ГБ Практически FP16 Если места не жалко
3.3. Общий пример скачивания
# Создать папку под модель  mkdir -p ~/models/<имя_модели> cd ~/models/<имя_модели>  
                
# Скачать GGUF (замените URL на нужную модель) wget https://huggingface.co/<автор>/<модель>-GGUF/resolve/main/<файл>.gguf
3.4. Конкретные примеры
# gpt-oss-20b (Q4_K_M) mkdir -p ~/models/gpt-oss-20b && cd ~/models/gpt-oss-20b wget https://huggingface.co/unsloth/gpt-oss-20b-GGUF/resolve/main/gpt-oss-20b-Q4_K_M.gguf  
                
# Qwen2.5-14B-Instruct (Q4_K_M) mkdir -p ~/models/qwen2.5-14b && cd ~/models/qwen2.5-14b wget https://huggingface.co/bartowski/Qwen2.5-14B-Instruct-GGUF/resolve/main/Qwen2.5-14B-Instruct-Q4_K_M.gguf
# Llama 3.2 3B Instruct (Q8_0) mkdir -p ~/models/llama-3.2-3b && cd ~/models/llama-3.2-3b wget https://huggingface.co/bartowski/Llama-3.2-3B-Instruct-GGUF/resolve/main/Llama-3.2-3B-Instruct-Q8_0.gguf

Шаг 4. Запуск модели

4.1. Переменные окружения

Перед запуском задайте путь к папке модели и имя GGUF-файла.

MODEL_PATH="$HOME/models/<папка_модели>" MODEL_FILE="<имя_файла>.gguf"
4.2. Одноразовый запуск (CLI)

Этот режим отправляет один промпт, выводит ответ модели и затем завершает контейнер.

docker run --rm --privileged \ --network=host \ --device=/dev/kfd \ --device=/dev/dri \ --group-add video \ --cap-add=SYS_PTRACE \ --security-opt seccomp=unconfined \ --ipc=host \ --shm-size 16G \ -v "$MODEL_PATH":/data \ rocm/llama.cpp:llama.cpp-b6652.amd0_rocm7.0.0_ubuntu24.04_full \ --run -m "/data/$MODEL_FILE" \ -p "Ваш промпт здесь" \ -n 256 --n-gpu-layers 999
4.3. HTTP-сервер (OpenAI-совместимый API)

Если нужен локальный сервер для запросов по HTTP, используйте серверный режим.

docker run --rm --privileged \ --network=host \ --device=/dev/kfd \ --device=/dev/dri \ --group-add video \ --cap-add=SYS_PTRACE \ --security-opt seccomp=unconfined \ --ipc=host \ --shm-size 16G \ -v "$MODEL_PATH":/data \ rocm/llama.cpp:llama.cpp-b6652.amd0_rocm7.0.0_ubuntu24.04_full \ --server \ -m "/data/$MODEL_FILE" \ --host 0.0.0.0 --port 8000 \ --n-gpu-layers 999 -c 8192
После запуска сервер будет слушать на http://localhost:8000.
4.4. Ключевые параметры запуска
Параметр Описание Рекомендация
--n-gpu-layers 999 Количество слоёв, выгружаемых на GPU 999 = все слои на GPU
-c 8192 Размер контекстного окна 4096–32768 в зависимости от VRAM
-n 256 Максимум токенов в ответе Увеличить для длинных ответов
--shm-size 16G Общая память для контейнера 16G обычно достаточно

Шаг 5. Отправка запросов к серверу

5.1. Консольный чат на Python

Для простого клиента сначала установите зависимость requests.

sudo apt install -y python3-requests
Далее создайте файл ~/llm_chat.py и вставьте в него код клиента из документа.
Что умеет llm_chat.py
Клиент поддерживает работу с OpenAI-совместимым endpoint, умеет передавать model и messages, выводит ответ модели, метрики использования и времени, а также поддерживает разные режимы парсинга ответа: plain, harmony и think.
5.2. Сделать исполняемым и запустить
chmod +x ~/llm_chat.py ~/llm_chat.py
Ввод you> — это ваш вопрос, ai> — ответ модели, ниже выводятся метрики производительности, например TTFT и токены в секунду.

Шаг 6. Переключение между моделями

Чтобы переключиться на другую модель, нужно остановить текущий сервер, изменить переменные MODEL_PATH и MODEL_FILE, а затем снова выполнить стандартную команду запуска.

# Переключиться на gpt-oss-20b MODEL_PATH="$HOME/models/gpt-oss-20b" MODEL_FILE="gpt-oss-20b-Q4_K_M.gguf"# Переключиться на Qwen2.5-14B MODEL_PATH="$HOME/models/qwen2.5-14b" MODEL_FILE="qwen2.5-14b-instruct-Q4_K_M.gguf"

Установка и запуск vLLM

Пошаговая инструкция по запуску vLLM через готовый ROCm Docker-образ, подключению моделей из Hugging Face, проверке OpenAI-compatible API и запуску CLI-чата.

vLLM + ROCm + Docker

В инструкции используется готовый образ vllm/vllm-openai-rocm:v0.17.1 с Docker Hub. Это рекомендуемый способ запуска vLLM на AMD GPU, без сборки из исходников.

Шаг 1. Подготовка кэша моделей

vLLM ROCm Docker

Модели скачиваются из Hugging Face при первом запуске. Чтобы не загружать их заново после перезапуска, в инструкции используется отдельный кэш-каталог.

mkdir -p ~/.cache/huggingface
Этот каталог пробрасывается в контейнер через -v ~/.cache/huggingface:/root/.cache/huggingface.

Шаг 2. Базовый шаблон запуска vLLM

Для всех моделей используется общая структура команды Docker с доступом к ROCm-устройствам, сетевым режимом host и примонтированным кэшем Hugging Face.

docker run --rm -it \ --name ИМЯ_КОНТЕЙНЕРА \ --network=host \ --ipc=host \ --cap-add=SYS_PTRACE \ --security-opt seccomp=unconfined \ --device /dev/kfd \ --device /dev/dri \ --group-add video \ --group-add render \ -e HUGGINGFACE_HUB_CACHE=/root/.cache/huggingface \ -v ~/.cache/huggingface:/root/.cache/huggingface \ vllm/vllm-openai-rocm:v0.17.1 \ --model МОДЕЛЬ \ --host 0.0.0.0 \ --port 8001 \ --dtype auto \ --generation-config vllm
Контейнер автоматически удаляется после остановки благодаря флагу --rm.
Docker-флаг Назначение
--device /dev/kfd и --device /dev/dri Доступ контейнера к GPU через ROCm
--group-add video и --group-add render Разрешения на GPU-устройства
--ipc=host Общая разделяемая память для PyTorch
--cap-add=SYS_PTRACE и --security-opt seccomp=unconfined Отладочные разрешения для ROCm
-v ~/.cache/huggingface:... Персистентный кэш моделей между перезапусками
--rm Автоматическое удаление контейнера после остановки
--name ИМЯ Удобное именование для docker stop ИМЯ
Аргумент vLLM Назначение
--model HF-репозиторий или путь к модели
--host 0.0.0.0 Слушать на всех интерфейсах
--port 8001 Порт для OpenAI-compatible API
--dtype auto Автоматический выбор типа данных
--generation-config vllm Не применять generation_config.json модели
--quantization Метод квантования, например awq или gptq
--max-model-len Ограничить длину контекста для экономии VRAM
--served-model-name Кастомное имя модели для API

Шаг 3. Примеры запуска моделей

3.1. gpt-oss-20b (MXFP4)
docker run --rm -it \ --name gptoss20b \ --network=host \ --ipc=host \ --cap-add=SYS_PTRACE \ --security-opt seccomp=unconfined \ --device /dev/kfd \ --device /dev/dri \ --group-add video \ --group-add render \ -e HUGGINGFACE_HUB_CACHE=/root/.cache/huggingface \ -v ~/.cache/huggingface:/root/.cache/huggingface \ vllm/vllm-openai-rocm:v0.17.1 \ --model openai/gpt-oss-20b \ --host 0.0.0.0 \ --port 8001 \ --dtype auto \ --generation-config vllm
Для этой модели квантование MXFP4 уже встроено в веса, поэтому отдельный флаг --quantization не требуется.
3.2. Qwen2.5-14B-Instruct-AWQ (AWQ 4-bit)
docker run --rm -it \ --name qwen14b-awq \ --network=host \ --ipc=host \ --cap-add=SYS_PTRACE \ --security-opt seccomp=unconfined \ --device /dev/kfd \ --device /dev/dri \ --group-add video \ --group-add render \ -e HUGGINGFACE_HUB_CACHE=/root/.cache/huggingface \ -v ~/.cache/huggingface:/root/.cache/huggingface \ vllm/vllm-openai-rocm:v0.17.1 \ --model Qwen/Qwen2.5-14B-Instruct-AWQ \ --quantization awq \ --host 0.0.0.0 \ --port 8001 \ --dtype auto \ --generation-config vllm
Для корректной загрузки AWQ-модели в vLLM нужен флаг --quantization awq.
3.3. Llama 3.2 3B Instruct
docker run --rm -it \ --name llama32-3b \ --network=host \ --ipc=host \ --cap-add=SYS_PTRACE \ --security-opt seccomp=unconfined \ --device /dev/kfd \ --device /dev/dri \ --group-add video \ --group-add render \ -e HUGGINGFACE_HUB_CACHE=/root/.cache/huggingface \ -e HF_TOKEN=hf_ваш_токен \ -v ~/.cache/huggingface:/root/.cache/huggingface \ vllm/vllm-openai-rocm:v0.17.1 \ --model meta-llama/Llama-3.2-3B-Instruct \ --host 0.0.0.0 \ --port 8001 \ --dtype auto \ --generation-config vllm

Шаг 4. Проверка работы сервера

После запуска контейнера в другом терминале можно проверить список моделей через локальный OpenAI-compatible API.

curl http://localhost:8001/v1/models
В ответе поле id должно содержать имя загруженной модели — именно его нужно использовать в API-запросах.

Шаг 5. CLI-чат для работы с сервером

5.1. Установка окружения
sudo apt install -y python3.12-venv python3 -m venv ~/vllm-chat-venv source ~/vllm-chat-venv/bin/activate pip install -U pip openai prompt_toolkit
5.2. Файл клиента ~/vchat.py
В документе приведён полноценный Python-клиент на базе openai и prompt_toolkit, который работает с http://localhost:8001/v1, сохраняет историю, умеет стримить ответ и показывает метрики генерации.
Что умеет vchat.py
Клиент поддерживает сохранение и загрузку сессии, смену модели, system prompt, temperature и max_tokens, выводит статистику вроде TTFT, total_time, gen_time и gen_speed, а также умеет сохранять диалог в Markdown.
5.3. Сделать файл исполняемым
chmod +x ~/vchat.py
5.4. Запуск клиента
source ~/vllm-chat-venv/bin/activate ~/vchat.py

Шаг 6. Команды внутри чата

Команда Действие
/model ИМЯ Переключить модель в клиенте
/models Показать модели сервера
/system ТЕКСТ Задать system prompt
/temp ЧИСЛО Задать temperature
/tokens ЧИСЛО Задать max_tokens
/reset Очистить историю
/save файл.md Сохранить диалог
/show Текущие настройки
/exit Выйти
Эти команды используются для управления текущей сессией и параметрами генерации в CLI-клиенте.

Сравнение производительности AI PRO R9700 и AMD Instinct MI100 32GB в VLLM и llama.cpp

Полную версию сравнения вы можете узреть на нашем ютуб канале, здесь же будут приведены краткие выкладки.

Сравнение AI PRO R9700 и Instinct MI100

AI PRO R9700

Модель Движок Формат / веса Квантование Токенов/с TTFT, ms
gpt-oss-20b llama.cpp GGUF Q4_K_M 98.92 141.56
gpt-oss-20b vLLM safetensors MXFP4 97.75 2163.4
Qwen2.5-14B-Instruct llama.cpp GGUF Q4_K_M 46.65 113.31
Qwen2.5-14B-Instruct vLLM safetensors AWQ 7.46 174.1
Llama 3.2 3B Instruct llama.cpp GGUF Q8_K_M 101.72 27.38
Llama 3.2 3B Instruct vLLM safetensors FP8 61.26 26.3

Instinct MI100

Модель Движок Формат / веса Квантование Токенов/с TTFT, ms
gpt-oss-20b llama.cpp GGUF Q4_K_M 103.92 68.85
gpt-oss-20b vLLM safetensors MXFP4 --- ---
Qwen2.5-14B-Instruct llama.cpp GGUF Q4_K_M 101.07 68.55
Qwen2.5-14B-Instruct vLLM safetensors AWQ --- ---
Llama 3.2 3B Instruct llama.cpp GGUF Q8_K_M 100.98 105.60
Llama 3.2 3B Instruct vLLM safetensors FP8 --- ---

vLLM на MI100 официально не поддерживается, поэтому официальных контейнеров и сборок под неё не имеется. А кастомный контейнер не гарантирует как стабильности и скорости, так и релевантных результатов для сравнения. Посему, давайте подведём итоги из уже собранных данных. 

Заключение

Можно уверенно подвести что на AMD AI PRO R9700 32GB, что AMD Instinct MI100 32GB можно запускать крупные языковые модели, но каждый из этих инструментов лучше раскрывается в своем сценарии. Собственно, как и движки для инференса.
llama.cpp подкупает простотой: он удобен для быстрого старта, локального запуска GGUF-моделей и понятного инференса без лишней обвязки.
vLLM выглядит более мощным решением для серверного применения, особенно когда важны OpenAI-совместимый API и работа с Hugging Face-моделями.

Итог здесь простой: выбирать стоит не “лучший фреймворк для всего”, а тот инструмент, который точнее соответствует вашему формату моделей, требованиям к скорости и реальному сценарию использования.

С видеокартами параллель идентична: там где AI PRO R9700 дарует универсальность и простоту использования, Instinct MI100 – даёт чистую мощь и плюсы специализированного продукта.

*LLAMA — проект Meta Platforms Inc.**, деятельность которой в России признана экстремистской и запрещена

**Деятельность Meta Platforms Inc. в России признана экстремистской и запрещена
Автор: Serverflow Serverflow
Поделиться

Комментарии 0

Написать комментарий
Сейчас тут ничего нет. Ваш комментарий может стать первым.
Написать отзыв
До 6 фото, размером до 12Мб каждое
Мы получили ваш отзыв!

Он появится на сайте после модерации.

Написать комментарий

Комментарий появится на сайте после предварительной модерации

До 6 фото, размером до 12Мб каждое
Мы получили ваш отзыв!

Он появится на сайте после модерации.

Мы свяжемся с вами утром

График работы: Пн-Пт 10:00-18:30 (по МСК)

Обработаем вашу заявку
в ближайший рабочий день

График работы: Пн-Пт 10:00-18:30 (по МСК)