MAATRIX / Блог / Как запустить Llama 3 на VPS

Как запустить Llama 3 на VPS

Как запустить Llama 3 на VPS

MAATRIX

Под именем «Llama 3» в реестре Ollama лежат четыре поколения моделей с разным контекстом, весом и лицензией. Запустить Llama 3 на VPS несложно — сложно получить после запуска ожидаемое: полное окно контекста, вменяемый русский и рабочую скорость. Ниже — путь от чистой Ubuntu до защищённого API, с командами и замерами.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Четыре Llama 3: чем различаются 3.0, 3.1, 3.2 и 3.3

Meta выпускала линейку волнами, и Ollama держит все теги сразу. Короткое ollama run llama3 тянет первую версию апреля 2024 года с окном в 8192 токена — не то, что нужно кому-либо в 2026-м.

ТегВес Q4КонтекстЧто это
llama3:8b4,7 ГБ8 192Llama 3.0, устарела
llama3.1:8b4,9 ГБ131 072рабочая лошадка для VPS без GPU
llama3.1:70b43 ГБ131 072только с GPU или 64 ГБ RAM
llama3.2:1b1,3 ГБ131 072классификация, роутинг
llama3.2:3b2,0 ГБ131 072минимум для осмысленного чата
llama3.2-vision:11b7,9 ГБ131 072картинки, своя лицензия
llama3.3:70b43 ГБ131 072качество 405B при весе 70B

Вывод: на процессорном VPS ваш выбор — llama3.1:8b или llama3.2:3b; llama3.1:405b на 243 ГБ не рассматривается вовсе. Тег указывайте целиком, с квантованием: llama3.1:8b-instruct-q4_K_M воспроизводится через год, а llama3.1:8b — указатель, который может переехать.

И юридический момент, которого нет у Qwen с Apache 2.0 или DeepSeek с MIT. Llama идёт под Llama Community License с тремя обязательствами: показывать «Built with Llama» в интерфейсе или документации, начинать имя дообученной модели со слова Llama, а при аудитории свыше 700 млн пользователей в месяц — договариваться с Meta отдельно. У мультимодальных llama3.2-vision есть ещё пункт: право на использование не выдаётся лицам и компаниям, домицилированным в ЕС. Это про юрисдикцию владельца, а не про адрес сервера, и переезд машины в Лондон ограничения не снимает.

Ставим Ollama и тянем веса

Единственный путь без возни с CUDA, Python и сборкой llama.cpp. Чистая Ubuntu 24.04 LTS или Debian 13, от root:

curl -fsSL https://ollama.com/install.sh | sh
ollama --version                 # ollama version is 0.33.1
systemctl is-active ollama       # active

Скрипт заводит пользователя ollama, юнит /etc/systemd/system/ollama.service и демон на 127.0.0.1:11434. Дальше — веса:

ollama pull llama3.1:8b-instruct-q4_K_M
pulling manifest
pulling 667b0c1932bc: 100% ▕██████████████████▏ 4.9 GB
verifying sha256 digest
success

Про диск: при системной установке веса лежат не в домашнем каталоге, а в /usr/share/ollama/.ollama/models, на корневом разделе — смотрите df -h / заранее. Слои дедуплицируются по digest, так что llama3.1:8b и llama3.1:8b-instruct-q4_K_M — один blob.

Что реально приехало, показывает ollama show:

  Model
    architecture        llama
    parameters          8.0B
    context length      131072
    quantization        Q4_K_M

Строка context length 131072 — это потолок модели, а не рабочее окно; про фактическое ниже. Если установка виснет на >>> Downloading Linux amd64 bundle, дело в сети: разбор в статье почему Ollama не запускается.

Развернуть за пару минут

Готовый образ на VPS MAATRIX: NVMe, AMD EPYC, root-доступ. Локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Развернуть Ollama

Контекст: 128k в описании, 4096 в работе

Самое частое разочарование после первого запуска. Ollama открывает окно OLLAMA_CONTEXT_LENGTH=4096 независимо от того, что умеет модель. Скормили договор на 20 страниц — начало молча отрезали:

level=WARN source=runner.go:131 msg="truncating input prompt" limit=4096 prompt=8431 keep=5 new=4096

Смотреть так: journalctl -u ollama --since -10m | grep truncat. Модель не ошибается — она честно отвечает по тому куску, который до неё доехал.

Почему нельзя просто выставить 131072: KV-кэш растёт линейно по длине окна и считается точно, по формуле 2 × слоёв × KV-голов × head_dim × 2 байта на токен. Архитектура во всей линейке одна (GQA, 8 KV-голов), меняется только число слоёв:

МодельСлоёвНа токенОкно 8kОкно 32kОкно 128k
llama3.2:1b1632 КиБ0,25 ГиБ1 ГиБ4 ГиБ
llama3.2:3b28112 КиБ0,9 ГиБ3,5 ГиБ14 ГиБ
llama3.1:8b32128 КиБ1 ГиБ4 ГиБ16 ГиБ
llama3.3:70b80320 КиБ2,5 ГиБ10 ГиБ40 ГиБ

Полный контекст восьмёрки стоит 16 ГиБ поверх 4,9 ГБ весов — на VPS с 16 ГБ RAM это гарантированный OOM. Реалистичная цель — 16k, изредка 32k. Задаётся в drop-in юнита:

sudo systemctl edit ollama
[Service]
Environment="OLLAMA_CONTEXT_LENGTH=16384"
Environment="OLLAMA_FLASH_ATTENTION=1"
Environment="OLLAMA_KV_CACHE_TYPE=q8_0"
Environment="OLLAMA_KEEP_ALIVE=30m"

OLLAMA_KV_CACHE_TYPE=q8_0 вдвое режет кэш и работает только вместе с флеш-аттеншеном: 16k у восьмёрки обойдутся в 1 ГиБ вместо двух. Значение q4_0 экономит ещё вдвое, но на длинных диалогах модель теряет детали из середины. Затем sudo systemctl restart ollama и контроль:

ollama run llama3.1:8b "тест" >/dev/null && ollama ps
NAME           ID              SIZE      PROCESSOR    UNTIL
llama3.1:8b    46e0c10c039e    7.4 GB    100% CPU     29 minutes from now

Колонка SIZE — веса плюс кэш плюс накладные, 100% CPU — что видеокарты нет и всё считает процессор.

Скорость на процессоре: цифры, а не ощущения

Меряйте флагом --verbose, он печатает разбивку после ответа:

total duration:       24.118s
prompt eval count:    312 token(s)
prompt eval duration: 9.83s
prompt eval rate:     31.74 tokens/s
eval count:           186 token(s)
eval duration:        14.2s
eval rate:            13.10 tokens/s

Ориентиры для VPS на современных EPYC без GPU, Q4_K_M, окно 8k:

Модель4 vCPU8 vCPU16 vCPU
llama3.2:1b22 ток/с30 ток/с33 ток/с
llama3.2:3b9 ток/с14 ток/с16 ток/с
llama3.1:8b4 ток/с6,5 ток/с8 ток/с

Форма кривой важнее чисел: удвоение ядер с 8 до 16 даёт прибавку в четверть. Генерация упирается в пропускную способность памяти — на каждый токен процессор читает все 4,9 ГБ весов, и типичные для VPS 25–40 ГБ/с и есть потолок. Лишние гигабайты RAM полезнее лишних ядер.

Но важнее строка prompt eval rate: около 30 ток/с значит, что промпт на 4000 токенов обрабатывается больше двух минут до начала ответа. Для RAG по длинным документам на CPU это приговор — либо режьте контекст, либо берите GPU. Скорость ниже таблицы разбирается в статье про то, почему Ollama медленно генерирует токены.

Русский язык и свой Modelfile

Здесь нужна прямота. Русского нет в списке официально поддерживаемых языков Llama 3.1 — Meta называет восемь: английский, немецкий, французский, итальянский, португальский, хинди, испанский, тайский. В корпусе русский был, модель на нём отвечает, но на 8B заметно слабее Qwen 2.5 того же размера: падежи в длинных фразах, срывы на английский посреди ответа, кальки в терминах. На llama3.2:3b русский откровенно плох.

Частично лечится системным промптом. Соберите свою модель через Modelfile:

FROM llama3.1:8b-instruct-q4_K_M
PARAMETER num_ctx 16384
PARAMETER temperature 0.4
PARAMETER repeat_penalty 1.15
PARAMETER stop "<|eot_id|>"
PARAMETER stop "<|end_of_text|>"
SYSTEM """Отвечай только на русском, даже если в вопросе английские термины."""
ollama create llama3-ru -f Modelfile && ollama run llama3-ru --verbose

Про stop: у Llama 3 конец реплики помечает токен <|eot_id|>, а не стандартный <|end_of_text|>. В официальных тегах Ollama шаблон правильный, но при импорте стороннего GGUF через FROM ./model.gguf модель начинает писать без остановки, сама себе задавая вопросы, пока не упрётся в лимит. Две строки stop выше это закрывают. Про выбор квантования — отдельный разбор.

Отдаём модель приложениям: API и защита порта 11434

Ollama слушает 127.0.0.1:11434 и понимает два диалекта: свой /api/chat и OpenAI-совместимый /v1/chat/completions. Второй удобнее — под него написано всё:

curl -s http://127.0.0.1:11434/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"llama3-ru","messages":[{"role":"user","content":"Что такое KV-кэш?"}]}' \
  | jq -r '.choices[0].message.content'

Ключ Ollama не проверяет, но клиенты часто падают на пустом значении — подставляйте любую строку, OPENAI_API_KEY=ollama.

Дальше — главное предупреждение статьи. В Ollama нет аутентификации вообще. Кто дотянулся до порта 11434, тот гоняет инференс на вашем процессоре, тянет через /api/pull что угодно на диск и удаляет модели через /api/delete. Проверьте себя снаружи:

curl -s --max-time 5 http://ВАШ_IP:11434/api/tags | jq -r '.models[].name'

Список моделей в ответе — порт открыт интернету. Закрывайте:

ufw allow 22/tcp
ufw allow 443/tcp
ufw deny 11434/tcp
ufw enable

Оговорка: в Docker с -p 11434:11434 ufw порт не прикроет — Docker пишет свои правила раньше, в цепочку DOCKER-USER. Публикуйте как -p 127.0.0.1:11434:11434.

Наружу — только через Nginx с TLS и базовой авторизацией. Нюанс, экономящий вечер: Ollama сверяет заголовок Host и на чужой отвечает 403 Forbidden, поэтому его подменяют.

location / {
    auth_basic           "llm";
    auth_basic_user_file /etc/nginx/.htpasswd;
    proxy_pass           http://127.0.0.1:11434;
    proxy_set_header     Host localhost:11434;
    proxy_read_timeout   600s;
    proxy_buffering      off;
}

proxy_buffering off обязателен для стриминга — иначе ответ придёт целиком через полминуты вместо потока слов, а 600 секунд таймаута нужны потому, что на CPU длинный ответ и правда занимает минуты. Если веб-интерфейс поверх не видит модель — причины собраны в статье про то, почему Open WebUI не видит Ollama.

Какой сервер под Llama 3 взять в MAATRIX

Без видеокарты Llama 3 — задача про объём и скорость памяти, а не про частоту ядер. Три уровня.

Минимум: 4 vCPU, 8 ГБ RAM, 60 ГБ NVMe. Здесь живёт llama3.2:3b с окном 8–16k и скоростью 9–14 ток/с: телеграм-бот, разметка, извлечение полей. Восьмёрка формально влезает, но с окном 4k и без соседей — ни Open WebUI, ни базы.

Рабочий вариант: 8 vCPU, 16 ГБ RAM, 120–160 ГБ NVMe. Целевая связка под llama3.1:8b-instruct-q4_K_M с окном 16k: 4,9 ГБ весов, около 1 ГиБ кэша с q8_0, 2–3 ГБ на Open WebUI с Postgres и запас на вторую модель на диске. Здесь Llama 3 на VPS перестаёт быть экспериментом.

Комфорт: 16 vCPU, 32 ГБ RAM, от 200 ГБ NVMe. Окно 32–64k, две модели в памяти сразу (OLLAMA_MAX_LOADED_MODELS=2), спокойный RAG. Арифметика объёмов — в таблице RAM для Llama 3.

Про 70B прямо: llama3.3:70b просит 48–64 ГБ RAM и выдаёт на CPU 1,5–2 токена в секунду — технически работает, для интерактива непригодно. И чат на несколько человек сразу процессорный VPS не тянет: пять параллельных запросов к восьмёрке дают полторы минуты ожидания у каждого.

Ollama есть в каталоге приложений MAATRIX, и ставить его руками не нужно: при заказе он разворачивается автоматически на Ubuntu или Debian, юнит поднят и в автозапуске, доступы появляются в личном кабинете в разделе «Доступ». Остаётся ollama pull и настройка контекста из третьей секции.

Локация — Лондон. Причина практическая: из российских сетей пятигигабайтный слой реестра Ollama регулярно рвётся на середине, а ollama run hf.co/... для сторонних GGUF попросту не отвечает; с британской площадки оба источника идут на полной скорости канала. Пинг из Москвы в 40–60 мс на фоне 6 токенов в секунду не различим, зато сервер в европейском правовом периметре — это важно, если через модель идут рабочие документы. Обязаны держать данные в РФ по 152-ФЗ — берите российскую площадку, Ollama ставится там так же. Подробнее — в обзоре VPS в Великобритании для нейросетей.

Оплата — картой российского банка, по СБП, криптой или токеном MAAT: иностранная карта не нужна, хотя сервер в Лондоне.

Развернуть за пару минут

Готовый образ на VPS MAATRIX: NVMe, AMD EPYC, root-доступ. Локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Развернуть Ollama

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Частые вопросы

ollama run llama3 — это Llama 3.1?

Нет, тег llama3 указывает на первую версию апреля 2024 года с окном 8192 токена. Пишите llama3.1:8b-instruct-q4_K_M, для маленькой модели — llama3.2:3b.

Почему модель отвечает по началу документа и игнорирует конец?

Сработала обрезка: Ollama открывает окно 4096, хотя Llama 3.1 умеет 131 072. Смотрите journalctl -u ollama | grep truncat и поднимайте OLLAMA_CONTEXT_LENGTH в drop-in юнита, помня про 2 ГиБ на 16k без сжатия кэша.

Llama 3.1 8B или Qwen 2.5 7B для русского?

При равном железе на русских текстах обычно выигрывает Qwen: русский не входит в восемь официально поддерживаемых языков Llama 3.1. Llama берут ради английского, инструментов и экосистемы дообученных вариантов.

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.