Как запустить Llama 3 на VPS
Под именем «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:8b | 4,7 ГБ | 8 192 | Llama 3.0, устарела |
llama3.1:8b | 4,9 ГБ | 131 072 | рабочая лошадка для VPS без GPU |
llama3.1:70b | 43 ГБ | 131 072 | только с GPU или 64 ГБ RAM |
llama3.2:1b | 1,3 ГБ | 131 072 | классификация, роутинг |
llama3.2:3b | 2,0 ГБ | 131 072 | минимум для осмысленного чата |
llama3.2-vision:11b | 7,9 ГБ | 131 072 | картинки, своя лицензия |
llama3.3:70b | 43 ГБ | 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:1b | 16 | 32 КиБ | 0,25 ГиБ | 1 ГиБ | 4 ГиБ |
llama3.2:3b | 28 | 112 КиБ | 0,9 ГиБ | 3,5 ГиБ | 14 ГиБ |
llama3.1:8b | 32 | 128 КиБ | 1 ГиБ | 4 ГиБ | 16 ГиБ |
llama3.3:70b | 80 | 320 КиБ | 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 vCPU | 8 vCPU | 16 vCPU |
|---|---|---|---|
llama3.2:1b | 22 ток/с | 30 ток/с | 33 ток/с |
llama3.2:3b | 9 ток/с | 14 ток/с | 16 ток/с |
llama3.1:8b | 4 ток/с | 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 — десятки моделей в одном окне. Оплата картой РФ и по СБП.