Стартовые цены: все тарифы на 30% дешевле самого дешёвого конкурента. Сравнение ценКаждый тариф на 30% дешевле самого дешёвого офшорного хостера

ИИ и GPU

Как запустить LLM на собственном GPU-сервере (Ollama, vLLM)

От пустого GPU-сервера до приватного API, совместимого с OpenAI: какую карту арендовать, настройка Ollama и vLLM, TLS и ключи, тесты производительности, конфиденциальность и стоимость.

10 мин чтенияОт команды OffshoreServ

Главное

  • Подбирайте по видеопамяти: веса, плюс кеш для вашего контекста, плюс 10–20% запаса. Модели 70B в 4-битном квантовании нужно около 50 ГБ.
  • Ollama запускает модель двумя командами; её API на 127.0.0.1:11434 не имеет аутентификации.
  • vLLM обслуживает множество пользователей пакетами через OpenAI-совместимый API на порту 8000; его необязательный ключ защищает лишь некоторые маршруты.
  • Ничего не открывайте напрямую: используйте SSH-туннель или обратный прокси с TLS, который проверяет ключ и пропускает только пути /v1.
  • Проведите бенчмарк на собственном сервере, отключите телеметрию и сравните ежемесячную цену со своим счётом за API.
На этой странице
  1. Зачем размещать LLM самостоятельно?
  2. Выбирайте GPU по объёму видеопамяти
  3. Быстрый старт: собственная LLM на Ollama
  4. OpenAI-совместимый API на vLLM
  5. Добавьте TLS и аутентификацию
  6. Измерьте пропускную способность сами
  7. Сохраняйте приватность промптов
  8. Стоимость: API, облачный GPU или собственный сервер
  9. Часто задаваемые вопросы

Чтобы разместить LLM самостоятельно, арендуйте GPU-сервер с достаточным для модели объёмом видеопамяти, установите Ollama для быстрого старта или vLLM для OpenAI-совместимого API и привяжите оба к 127.0.0.1. Подключайтесь к ним через SSH-туннель или обратный прокси с TLS, который проверяет ключ. Модель на 8B работает с полной точностью на RTX 4090 с 24 ГБ.

Это руководство превращает пустой GPU-сервер в приватную конечную точку: какую карту арендовать, точные команды для Ollama и vLLM, TLS и аутентификация, бенчмарки и стоимость. Команды рассчитаны на Ubuntu 24.04 с установленными драйвером NVIDIA и CUDA, как на наших GPU-серверах.

Зачем размещать LLM самостоятельно?

Ваши промпты остаются на вашем сервере. При использовании облачного API каждый промпт и ответ проходят через чужую инфраструктуру по чужим правилам логирования и хранения. Приватный LLM-сервер запускает модель на вашей собственной GPU. В FAQ Ollama сказано прямо: при локальном запуске «мы не видим ваших промптов и данных».

Стоимость предсказуема. Сервер с помесячной оплатой стоит одинаково и за десять запросов, и за десять миллионов: при постоянной нагрузке это дешевле оплаты за токены, при малой — дороже.

Вы управляете моделью: её версией, квантованием и длиной контекста. Она не меняется, когда провайдер обновляет каталог, и её можно дообучать на данных, которые остаются на сервере.

Компромиссы: обновления, безопасность и мониторинг — на вас, а модели с открытыми весами — это не проприетарные модели крупнейших API. Если нужна одна из них, доступ к ней возможен только через её API.

Выбирайте GPU по объёму видеопамяти

Чтобы запустить LLM на GPU-сервере, начните с памяти: веса, KV-кеш для вашего контекста и некоторый запас должны поместиться в видеопамять. Эти цифры из нашего руководства о том, сколько видеопамяти нужно LLM, учитывают контекст 8K токенов для одного пользователя и 10% запаса.

Модель (пример)4 бит8 бит16 битПодходящая GPU
От 7B до 8B (Llama 3.1 8B)Около 7 ГБОколо 11 ГБОколо 19 ГБRTX 4090, даже в 16-битной точности
От 13B до 14B (Qwen3-14B)Около 11 ГБОколо 18 ГБОколо 32 ГБRTX 4090 в 8-битной точности, RTX 5090 — для длинного контекста
32B (Qwen3-32B)Около 24 ГБОколо 40 ГБОколо 73 ГБRTX 5090 в 4-битной точности
70B (Llama 3.3 70B)Около 50 ГБОколо 85 ГБОколо 157 ГБA100 или H100 в 4-битной точности, 2 × H100 — в 8-битной
gpt-oss-120b (смесь экспертов)Помещается в один GPU на 80 ГБ (нативный MXFP4)НеприменимоНеприменимоA100 или H100

Сервер с RTX 4090 стоит $84.99 в месяц, сервер с RTX 5090 — $134.99, A100 80 ГБ — $355.99, а сервер с H100 — $581.99. Модели на 32B в 4-битном квантовании нужно около 24 ГБ, так что на карте с 24 ГБ при росте контекста места не остаётся: берите для неё RTX 5090. Из двух карт на 80 ГБ H100 с пропускной способностью памяти 3.35 ТБ/с генерирует на той же модели быстрее, чем A100.

Быстрый старт: собственная LLM на Ollama

Установочный скрипт Ollama для Linux настраивает системную службу и обнаруживает GPU NVIDIA. Его можно прочитать перед запуском:

curl -fsSL https://ollama.com/install.sh | sh
ollama pull llama3.1:8b
ollama run llama3.1:8b
ollama ps

llama3.1:8b весит 4.9 ГБ. ollama run открывает чат (/bye выходит из него), а ollama ps должна показывать 100% GPU; доля CPU означает, что модель не помещается в видеопамять. Столбец CONTEXT показывает длину контекста, которую Ollama выбирает по доступной видеопамяти (4K токенов при менее чем 24 ГиБ, 32K — от 24 ГиБ, 256K — от 48 ГиБ), а OLLAMA_CONTEXT_LENGTH её переопределяет. Затем проверьте, где служба слушает, и вызовите её API:

ss -tln | grep 11434
curl http://127.0.0.1:11434/api/generate -d '{"model": "llama3.1:8b", "prompt": "Why is the sky blue?", "stream": false}'

По умолчанию Ollama привязывается к 127.0.0.1, порт 11434, поэтому первая строка должна показывать 127.0.0.1:11434. Так и оставьте. В FAQ объясняется, как открыть доступ с помощью OLLAMA_HOST=0.0.0.0, но у локального API нет аутентификации: любой, кто доберётся до порта, сможет запускать, скачивать и удалять модели.

Ollama также предоставляет маршруты в стиле OpenAI под /v1. Клиентам нужны базовый URL http://127.0.0.1:11434/v1 и любой ключ API, который Ollama игнорирует. Настройки задаются переменными окружения службы: выполните sudo systemctl edit ollama.service, добавьте эти строки, затем перезагрузите конфигурацию и перезапустите службу:

[Service]
Environment="OLLAMA_NO_CLOUD=1"
Environment="OLLAMA_CONTEXT_LENGTH=16384"
sudo systemctl daemon-reload
sudo systemctl restart ollama

OpenAI-совместимый API на vLLM

vLLM создан для высокой пропускной способности: он обрабатывает на GPU множество запросов одновременно, объединяя их в пакеты, и работает по протоколу OpenAI, поэтому существующий клиентский код работает без изменений. Установите его в отдельное виртуальное окружение, как показано в руководстве по установке vLLM, затем создайте ключ и запустите сервер:

python3 -m venv ~/venvs/vllm
source ~/venvs/vllm/bin/activate
pip install --upgrade pip
pip install vllm --extra-index-url https://download.pytorch.org/whl/cu129
export VLLM_API_KEY=$(openssl rand -hex 32)
echo "$VLLM_API_KEY"
vllm serve Qwen/Qwen2.5-7B-Instruct --host 127.0.0.1 --port 8000 --max-model-len 8192

Ключ обязателен, потому что задана VLLM_API_KEY; флаг --api-key делает то же самое. Краткое руководство указывает адрес по умолчанию http://localhost:8000, но код сервера без указания хоста привязывается ко всем интерфейсам IPv4, поэтому всегда передавайте --host. --max-model-len ограничивает контекст и его кеш. По умолчанию vLLM резервирует 92% памяти GPU, так что почти полная карта в nvidia-smi — это нормально. Модель скачивается с Hugging Face при первом запуске, и её весам нужно около 15 ГБ: используйте карту на 24 ГБ или больше. Проверьте работу официальным клиентом OpenAI:

from openai import OpenAI

client = OpenAI(base_url="http://127.0.0.1:8000/v1", api_key="YOUR_KEY")
reply = client.chat.completions.create(
    model="Qwen/Qwen2.5-7B-Instruct",
    messages=[{"role": "user", "content": "Explain RAID 1 in one sentence."}],
)
print(reply.choices[0].message.content)

Тот же код работает с Ollama по адресу http://127.0.0.1:11434/v1. В Docker публикуйте порт только на 127.0.0.1, поскольку правила портов Docker обходят ufw, и оставьте --ipc=host для общей памяти, которую использует PyTorch:

sudo docker run --rm --gpus all --ipc=host -p 127.0.0.1:8000:8000 \
  -v ~/.cache/huggingface:/root/.cache/huggingface \
  vllm/vllm-openai:latest --model Qwen/Qwen2.5-7B-Instruct --api-key "$VLLM_API_KEY"

На двух или четырёх GPU --tensor-parallel-size 2 или 4 распределяет одну модель между ними. Наше руководство по образам для GPU добавляет NVIDIA Container Toolkit и юнит systemd, который поддерживает работу vLLM.

Ollama и vLLM вкратце

ВопросOllamavLLM
Вариант установкиОдин скрипт, работает как системная службаПакет Python или образ Docker
МоделиБиблиотека Ollama, по имениHugging Face, по репозиторию
Адрес по умолчанию127.0.0.1:11434Порт 8000 на всех интерфейсах, если не задан --host
АутентификацияУ локального API нетНеобязательный ключ, защищающий лишь некоторые маршруты
Для чегоОдин пользователь или небольшая команда, быстрые тестыМного одновременных запросов, работа на нескольких GPU

Добавьте TLS и аутентификацию

Ни один из этих серверов не стоит выставлять в интернет как есть. В документации Ollama сказано, что локальный API не требует аутентификации. Руководство по безопасности vLLM сообщает, что --api-key защищает только маршруты под /v1, /v2, /inference и /cohere, оставляя открытыми другие, например /pause и /tokenize, и предупреждает, что полагаться только на ключ нельзя.

Для себя: SSH-туннель

ssh -N -L 11434:127.0.0.1:11434 -L 8000:127.0.0.1:8000 YOUR_USER@SERVER_IP

Пока туннель работает, клиенты на вашем компьютере используют http://127.0.0.1:11434/v1 или http://127.0.0.1:8000/v1. SSH шифрует трафик, а ваш ключ удостоверяет вас; сервер не открывает новых портов. Команда работает и в PowerShell.

Для приложений и команд: Caddy с TLS и ключом

Caddy сам получает и продлевает сертификат и перенаправляет HTTP на HTTPS. Направьте A-запись домена на сервер, откройте порты 80 и 443 в брандмауэре, установите Caddy из официального репозитория, создайте ключ командой openssl rand -hex 32 и замените /etc/caddy/Caddyfile на:

llm.example.com {
	@denied {
		not {
			path /v1/*
			header Authorization "Bearer YOUR_LONG_RANDOM_KEY"
		}
	}
	respond @denied 403
	reverse_proxy 127.0.0.1:11434 {
		header_up Host localhost:11434
	}
}

Затем выполните sudo systemctl reload caddy. Запросы, которые не находятся под /v1/ или не несут ключ, получают 403, потому что respond выполняется раньше reverse_proxy. Правило пути также оставляет закрытыми собственные маршруты Ollama /api, через которые можно скачивать и удалять модели. Перезапись Host важна: при прослушивании 127.0.0.1 Ollama отвечает 403 на запросы с другими именами хостов, и пример nginx из её FAQ перезаписывает заголовок так же. Для vLLM проксируйте на 127.0.0.1:8000 без блока header_up и используйте ключ сервера.

Клиенты затем используют https://llm.example.com/v1 и ключ, который OpenAI-совместимые клиенты отправляют как Bearer-токен; Caddy сразу передаёт потоковые ответы. Сервису для других людей нужны также ограничения частоты запросов, а на то, что он генерирует, распространяются наши правила допустимого использования.

Измерьте пропускную способность сами

Число токенов в секунду зависит от карты, модели, квантования, версии движка, длины контекста и параллельности, поэтому мы не публикуем цифры, которые не измеряли. Для одного пользователя на плотной модели потолок — пропускная способность памяти, делённая на размер весов: около 205 токенов в секунду для 4-битной модели на 8B на RTX 4090, по нашему руководству по видеопамяти. Реальные результаты ниже.

С Ollama

ollama run llama3.1:8b --verbose

--verbose выводит время после каждого ответа, включая eval rate — скорость генерации в токенах в секунду. Через API ответы содержат eval_count и eval_duration в наносекундах, а справочник API Ollama вычисляет скорость как eval_count / eval_duration × 10^9.

С vLLM

В vLLM есть генератор нагрузки. Эта команда отправляет на 127.0.0.1:8000 200 запросов — по 1 024 случайных входных токена и 256 выходных токенов в каждом, по 16 одновременно, — используя OPENAI_API_KEY как Bearer-токен:

export OPENAI_API_KEY="$VLLM_API_KEY"
vllm bench serve --model Qwen/Qwen2.5-7B-Instruct --dataset-name random --random-input-len 1024 --random-output-len 256 --num-prompts 200 --max-concurrency 16

Смотрите на три строки отчёта: output token throughput — выходная пропускная способность всего сервера, mean TTFT (время до первого токена) — отзывчивость и mean TPOT (время на выходной токен) — то, что видит каждый пользователь. Повторите тест при параллельности 1, 8 и 32, следите в это время за nvidia-smi dmon -s pucm и используйте длину промптов, близкую к вашему реальному трафику.

Сохраняйте приватность промптов

Собственный хостинг оставляет промпты на вашем сервере, только если ничто другое не отправляет их куда-то ещё:

  1. Никаких публичных портов. sudo ss -tlnp должна показывать 11434 и 8000 только на 127.0.0.1. Разрешите SSH, а также 80 и 443 для Caddy — и больше ничего, как в нашем руководстве по усилению защиты; порты Docker публикуйте как 127.0.0.1:PORT:PORT.
  2. Никаких облачных моделей по случайности. Ollama может также запускать облачные модели, например gemma4:cloud, на своих серверах, и тогда ваши промпты обрабатывают они. OLLAMA_NO_CLOUD=1 отключает облачные модели и веб-поиск.
  3. Отключите телеметрию. По умолчанию vLLM собирает анонимную статистику использования о вашем оборудовании и конфигурации; VLLM_NO_USAGE_STATS=1 или DO_NOT_TRACK=1 отключают её. HF_HUB_DISABLE_TELEMETRY=1 отключает телеметрию Hugging Face, а после загрузки модели HF_HUB_OFFLINE=1 прекращает все обращения к Hub.
  4. Тихие логи. vLLM записывает запросы в лог только с --enable-log-requests, а текст промптов — только на уровне DEBUG. Так и оставьте и проверьте, что хранит любой чат-интерфейс.
export VLLM_NO_USAGE_STATS=1
export HF_HUB_DISABLE_TELEMETRY=1
export HF_HUB_OFFLINE=1

Для службы укажите это в её файле окружения. С нашей стороны мы не логируем и не анализируем трафик клиентских серверов: никакой глубокой инспекции пакетов, никакого сканирования содержимого, и мы никогда не смотрим, что работает внутри.

Стоимость: API, облачный GPU или собственный сервер

  • API тарифицируется за токены: ничего не нужно запускать и нет затрат на простой, но каждый промпт уходит провайдеру, а счёт растёт с объёмом.
  • Облачный GPU тарифицируется почасово. По сравнению с сервером с помесячной оплатой точка безубыточности — это месячная цена, делённая на почасовую ставку: наш RTX 4090 за $84.99 равен 85 часам при примерной ставке $1.00 в час.
  • Собственный сервер стоит одинаково под нагрузкой и в простое, поэтому стоимость токена падает по мере роста использования. При круглосуточной работе наш RTX 4090 обходится примерно в $0.116 в час, а H100 — примерно в $0.797.

По сравнению с API сервер окупается при средней пропускной способности выше этой:

break-even tokens per second = monthly price ÷ (API price per million tokens × 2.628)

2.628 — это число миллионов секунд в месяце из 730 часов. При примерной цене API $1 за миллион токенов сервер за $84.99 выходит на безубыточность при средней скорости около 32 токенов в секунду с учётом простоя, а H100 за $581.99 — около 221. Это примерные цены, а не предложения, и API тарифицируют также входные токены. Почасовая сторона разобрана в нашем сравнении выделенных GPU-серверов и облачных GPU.

Оплата поквартально экономит 5%, а за год — 12%, и тогда RTX 4090 обходится в $74.79 в месяц. Серверы готовы через 1–24 часа, а GPU-серверы после выдачи не подлежат возврату, так что подберите модель до заказа.

Часто задаваемые вопросы

Можно ли запустить LLM на собственном сервере?

Да. Подойдёт любой Linux-сервер, у GPU NVIDIA которого достаточно видеопамяти для модели: около 7 ГБ для модели на 8B и около 50 ГБ для модели на 70B, обе в 4-битной точности с контекстом. Установите Ollama или vLLM, оставьте их на 127.0.0.1 и подключайтесь через SSH-туннель или обратный прокси с TLS, который проверяет ключ.

Что лучше — Ollama или vLLM?

Они решают разные задачи. Ollama быстрее настроить, и она подходит одному пользователю или небольшой команде. vLLM объединяет множество одновременных запросов в пакеты, распределяет модели между GPU и проверяет ключ API, что подходит для приложений. Оба отвечают на запросы в стиле OpenAI под /v1, поэтому можно начать с Ollama и перейти на vLLM, не переписывая клиент.

Сколько видеопамяти нужно для модели на 70B?

Около 43 ГБ для весов в 4-битной точности или около 50 ГБ с контекстом 8K и запасом: одна A100 или H100 на 80 ГБ либо две RTX 5090 по 32 ГБ. В 8-битной точности закладывайте около 85 ГБ, то есть две H100; в 16-битной — около 157 ГБ на сервере с несколькими H100. Более длинный контекст и больше пользователей требуют больше памяти.

Есть ли у Ollama аутентификация?

У локального API — нет. В документации Ollama сказано, что API на localhost:11434 не требует аутентификации; ключи API применяются только к её облачному сервису. Оставьте привязку по умолчанию к 127.0.0.1, доступную только самому серверу, и добавьте SSH-туннель или обратный прокси с TLS и проверкой ключа, прежде чем подключится кто-то ещё.

Собственная LLM дешевле API?

При стабильном объёме — часто да; при малом или нерегулярном — обычно нет. Разделите месячную цену сервера на цену вашего API за миллион токенов, умноженную на 2.628: результат — средняя скорость в токенах в секунду, которую сервер должен поддерживать, чтобы окупиться. Приватность может быть важнее цены: на вашем собственном сервере промпты остаются под вашим контролем.

Размещайте проекты там, где закон на вашей стороне

Офшорные VPS, выделенные, RDP- и GPU-серверы в семи юрисдикциях. Без KYC, оплата криптовалютой.

Что почитать дальше

Ещё из блога

Все статьи

С возвращением

Войдите, чтобы управлять серверами и балансом.

Без KYCПроверка на человека с помощью Cloudflare TurnstileБез отслеживания