Запуск локальной LLM
На GPU с 32 GB VRAM удобно запускать LLM двумя способами: через vLLM или через llama.cpp.
| Способ | Когда использовать |
|---|---|
vLLM |
Нужен быстрый OpenAI-compatible API для AWQ/GPTQ моделей |
llama.cpp |
Нужны GGUF-модели и простой запуск без большого Python-стека |
Для 32 GB VRAM берите 4-bit или 8-bit модели. Dense-модель 35B в FP16/BF16 обычно не помещается.
Быстрый выбор модели
Ориентиры ниже получены на RTX 5090 32 GB в llama.cpp: llama-bench, flash attention, batch 2048, ubatch 512. TG tok/s - скорость генерации, VRAM 32K - память на контексте 32K.
| Сценарий | Модель и квант | Тип | TG tok/s | VRAM 32K | Max ctx |
|---|---|---|---|---|---|
| Максимальная скорость | Qwen3.6-35B-A3B Q4_K_M | MoE | 274.8 | 21.8 GB | 256K |
| Длинный контекст и RAG | Qwen3.6-27B Q4_K_M | Dense | 76.5 | 18.7 GB | 128K+ |
| Длинный контекст и RAG, Unsloth-квант | Qwen3.6-27B UD-Q4_K_XL | Dense | 73.8 | 19.5 GB | 128K+ |
| Код и агентные задачи | Devstral Small 2 Q4_K_M | Dense | 96.9 | 19.3 GB | 64K |
| Код и агентные задачи, Unsloth-квант | Devstral Small 2 UD-Q4_K_XL | Dense | 96.1 | 19.5 GB | 64K |
| Короткие быстрые задачи | Gemma 4 26B UD-Q4_K_XL | MoE | 222.5 | 18.3 GB | 256K |
| Общий dense-вариант | Mistral Small 3.1 Q4_K_M | Dense | 101.5 | 19.3 GB | 64K |
Что брать на практике:
- нужен быстрый чат или API со стримингом -
Qwen3.6-35B-A3B Q4_K_M; - нужен RAG, суммаризация длинных документов или code review больших файлов -
Qwen3.6-27B Q4_K_MилиUD-Q4_K_XL; - нужен кодовый помощник -
Devstral Small 2, лучшеUD-Q4_K_XL, если есть подходящий GGUF; - нужна высокая скорость на коротком контексте -
Gemma 4 26B, но не используйте ее для длинного контекста, если важна точность.
Как выбрать квант
Q4_K_M - стандартный безопасный выбор. Он есть почти у всех GGUF-моделей.
UD-Q4_K_XL - динамический квант от Unsloth. В тестах он почти не отличался по скорости от Q4_K_M, но занимал на 100-750 MB больше VRAM. Его имеет смысл брать, если хотите лучший квант без заметной потери скорости.
Подключение и порты
SSH-команду возьмите из блока Данные для подключения в карточке сервера.
Пример:
Для API смотрите блок Проброшенные порты.
В нем есть две важные колонки:
- Внешний - порт, который открывается снаружи;
- Контейнер - порт внутри пода, на котором должен слушать сервис.
Например: vLLM слушает контейнерный порт 9000, а в карточке указано Внешний 42002 -> Контейнер 9000. Значит, снаружи API будет доступен через порт 42002.
Подробнее: Порты и веб-сервисы.
Где хранить модели
Работайте внутри /workspace:
Создайте папки:
Модели, кэши и логи держите в /workspace.
Токен Hugging Face
Публичные модели обычно скачиваются без токена.
Токен нужен, если:
- Hugging Face ограничивает скачивание;
- модель gated/private;
- вы скачиваете много больших файлов.
Указать токен:
Для vLLM:
Для llama.cpp:
Если модель скачивается слишком долго, проверьте скорость сети:
Пример результата:
Запуск через vLLM
Создать окружение
cd /workspace
uv venv .venv-qwen
source .venv-qwen/bin/activate
uv pip install -U pip
uv pip install -U vllm --torch-backend auto
Выбрать модель
Стабильный вариант:
Если нужна Qwen-family модель класса 35B, можно попробовать community AWQ-чекпойнт:
35B community-вариант лучше считать экспериментальным. Если упираетесь в VRAM, переходите на Qwen/Qwen3-32B-AWQ.
Запустить vLLM-сервер
cd /workspace
source .venv-qwen/bin/activate
export HF_HOME=/workspace/.hf-cache
export QWEN_MODEL="Qwen/Qwen3-32B-AWQ"
vllm serve "$QWEN_MODEL" \
--host 0.0.0.0 \
--port 9000 \
--dtype auto \
--quantization awq \
--max-model-len 16384 \
--gpu-memory-utilization 0.90 \
--reasoning-parser qwen3
Если не хватает VRAM, уменьшите контекст:
Для экспериментального 35B AWQ-варианта:
cd /workspace
source .venv-qwen/bin/activate
export HF_HOME=/workspace/.hf-cache
export QWEN_MODEL="Chunity/Qwen3.6-35B-A3B-AutoRound-AWQ-4bit"
vllm serve "$QWEN_MODEL" \
--host 0.0.0.0 \
--port 9000 \
--dtype auto \
--quantization awq_marlin \
--max-model-len 8192 \
--gpu-memory-utilization 0.88 \
--max-num-seqs 1 \
--trust-remote-code \
--reasoning-parser qwen3
На RTX 5090 32 GB этот 35B AWQ-вариант с --max-model-len 16384 может упасть с CUDA out of memory во время KV/cudagraph profiling. Для single-user inference рабочая быстрая конфигурация: --max-model-len 8192, --quantization awq_marlin, --gpu-memory-utilization 0.88, --max-num-seqs 1, без --enforce-eager. Это оставляет torch.compile и CUDA graphs включенными. Если нужен batching или быстрый аварийный запуск после OOM, можно временно вернуть --enforce-eager, но single-request decode будет заметно медленнее.
Проверить vLLM API
Проверить список моделей:
Проверить chat completion:
curl http://127.0.0.1:9000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen3-32B-AWQ",
"messages": [
{
"role": "user",
"content": "Напиши короткую инструкцию по проверке GPU в Linux."
}
],
"temperature": 0.2,
"max_tokens": 512,
"chat_template_kwargs": {
"enable_thinking": false
}
}'
Для Qwen reasoning-моделей параметр chat_template_kwargs.enable_thinking=false нужен, если хотите получить обычный ответ в message.content. Без него модель может писать рассуждение в поле reasoning, а content останется пустым при малом max_tokens.
Запуск через llama.cpp
Собрать llama.cpp с CUDA
cd /workspace
git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp
cmake -B build \
-DGGML_CUDA=ON \
-DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release -j --target llama-server llama-cli
Если /workspace/llama.cpp уже существует:
cd /workspace/llama.cpp
git pull
cmake -B build \
-DGGML_CUDA=ON \
-DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release -j --target llama-server llama-cli
Выбрать модель
Выберите модель из таблицы выше и найдите для нее GGUF-репозиторий на Hugging Face.
Для максимальной скорости можно начать с Qwen3.6-35B-A3B:
Это MoE-модель: 35B параметров всего и примерно 3B активных параметров на токен. В замерах она дала около 275 tok/s на генерации.
Если нужен более надежный длинный контекст, берите Qwen3.6-27B в Q4_K_M или UD-Q4_K_XL. Если подходящего GGUF нет под рукой, используйте стабильный официальный fallback:
Запустить llama.cpp server
cd /workspace/llama.cpp
export LLAMA_CACHE=/workspace/.llama-cache
export LLAMA_MODEL="Infatoshi/Qwen3.6-35B-A3B-GGUF:Q4_K_M"
./build/bin/llama-server \
-hf "$LLAMA_MODEL" \
--host 0.0.0.0 \
--port 9000 \
-ngl 99 \
-c 32768 \
-fa on \
--jinja \
--reasoning off
Если не хватает VRAM, уменьшите контекст:
Для официального 32B fallback:
cd /workspace/llama.cpp
export LLAMA_CACHE=/workspace/.llama-cache
export LLAMA_MODEL="Qwen/Qwen3-32B-GGUF:Q4_K_M"
./build/bin/llama-server \
-hf "$LLAMA_MODEL" \
--host 0.0.0.0 \
--port 9000 \
-ngl 99 \
-c 32768 \
-fa on \
--jinja \
--reasoning off
Проверить llama.cpp API
Проверить список моделей:
Проверить chat completion:
curl http://127.0.0.1:9000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer no-key" \
-d '{
"model": "Infatoshi/Qwen3.6-35B-A3B-GGUF:Q4_K_M",
"messages": [
{
"role": "user",
"content": "Напиши короткую инструкцию по проверке GPU в Linux."
}
],
"temperature": 0.2,
"max_tokens": 512
}'
CLI-проверка без сервера
cd /workspace/llama.cpp
export LLAMA_CACHE=/workspace/.llama-cache
./build/bin/llama-cli \
-hf "Infatoshi/Qwen3.6-35B-A3B-GGUF:Q4_K_M" \
-ngl 99 \
-c 8192 \
-fa on \
--jinja \
-p "Напиши один абзац о том, что такое llama.cpp."
Запуск в фоне
Для долгого запуска используйте tmux.
Создать сессию:
Внутри сессии запустите vLLM или llama.cpp.
Отключиться от tmux, не останавливая процесс:
Вернуться:
Пример запуска vLLM с логом:
cd /workspace
source .venv-qwen/bin/activate
mkdir -p logs
vllm serve "Qwen/Qwen3-32B-AWQ" \
--host 0.0.0.0 \
--port 9000 \
--dtype auto \
--quantization awq \
--max-model-len 32768 \
--gpu-memory-utilization 0.90 \
2>&1 | tee /workspace/logs/vllm.log
Пример запуска llama.cpp с логом:
cd /workspace/llama.cpp
mkdir -p /workspace/logs
./build/bin/llama-server \
-hf "Infatoshi/Qwen3.6-35B-A3B-GGUF:Q4_K_M" \
--host 0.0.0.0 \
--port 9000 \
-ngl 99 \
-c 32768 \
-fa on \
--jinja \
--reasoning off \
2>&1 | tee /workspace/logs/llama-cpp.log
Подробнее: Фоновые процессы через tmux.
Проверка GPU
Во время запуска модели проверьте GPU:
Смотреть в реальном времени:
Частые ошибки
CUDA out of memory
Проверьте VRAM:
Что сделать:
- уменьшить context length:
--max-model-len 16384для vLLM или-c 16384для llama.cpp; - использовать Q4/AWQ модель;
- остановить лишние процессы;
- перейти с 35B community-варианта на 32B fallback.
Сервис не открывается снаружи
Проверьте, что сервер запущен на 0.0.0.0:
Если ss не найден:
Если видно 127.0.0.1:9000, сервис доступен только внутри пода.
Проверьте, что открываете внешний порт из карточки сервера. Если в карточке указано Внешний 42002 -> Контейнер 9000, снаружи нужен порт 42002.
Hugging Face не скачивает модель
Укажите токен:
После этого повторите команду запуска.
llama.cpp работает на CPU
Проверьте сборку:
Пересоберите с CUDA: