Гибридная архитектура LLM: локальный фронтенд + облачный GPU | Гайд 2026 | AiManual
AiManual Logo Ai / Manual.
26 Янв 2026 Гайд

Подключаем локальную LLM к облачному GPU: гибридная архитектура для приватности и скорости

Пошаговый гайд по подключению локального фронтенда (Open WebUI) к удаленному облачному GPU через SSH-туннель. Приватность инференса, скорость VLLM и экономия на

Локальная приватность против облачной мощности: почему выбирать?

Ты читал мои статьи про фермы из трех RTX 3090 и серверы с 192 ГБ оперативки. Собрал (или только мечтаешь собрать) железного монстра для локальных LLM. Запустил Open WebUI, настроил модели. И столкнулся с классической дилеммой.

Модель 70B параметров еле дышит на твоем железе. Токенизация занимает вечность. Контекст в 128к токенов превращает инференс в слайд-шоу. А новая Llama 4 405B (вышла в конце 2025) даже не думает влезать в твои 48 ГБ VRAM.

Облачные GPU-сервисы вроде Vast.ai, RunPod или TensorDock предлагают A100 80GB за $1.5 в час. Но отдавать им свои промпты с конфиденциальными данными? Пересылать через их API диалоги с клиентами, финансовые отчеты, медицинские записи?

Нет. Так не пойдет.

💡
Гибридная архитектура — это не компромисс, а умножение преимуществ. Локальный фронтенд (Open WebUI, Ollama, текстовый интерфейс) обрабатывает ввод-вывод, историю, интерфейс. Облачный бэкенд (VLLM, ExLlama, llama.cpp) делает тяжелый инференс. Данные между ними шифруются через SSH-туннель. Промпты никогда не покидают твою локальную сеть в открытом виде.

Архитектура, которая работает, а не красиво выглядит на схеме

Забудь про сложные VPN, WireGuard и настройку маршрутизации. Мы используем старый добрый SSH-туннель с пробросом портов. Почему?

  • SSH уже есть везде
  • Авторизация по ключам безопаснее паролей
  • Туннель шифрует весь трафик end-to-end
  • Переподключение при обрыве — одна команда в systemd или screen

Вот как выглядит поток данных:

Твой компьютер → SSH-туннель → Облачный инстанс с GPU → VLLM API
        ↑                                ↑
   Open WebUI                       Модель 70B/405B
   (локально)                      (загружена в VRAM)

1 Подготовка облачного инстанса: не просто GPU, а правильный GPU

Заходишь на Vast.ai или RunPod. Ищешь инстанс с:

Что искать Почему это важно Минимум на 2026
NVIDIA A100 80GB / H100 80GB Память для больших моделей 48+ GB VRAM
Ubuntu 22.04 / 24.04 LTS Стабильность и совместимость 22.04 или новее
Доступ по SSH Для туннелирования Обязательно
Публичный IP Подключение извне Да (или проброс портов)

Создаешь инстанс. Копируешь IP и SSH-ключ. Не забудь добавить свой публичный ключ в authorized_keys на инстансе.

Совет от того, кто платил за простой: настрой авто-стоп через 1-2 часа неактивности. Или используй инстансы с прерываемым ценообразованием (spot instances). Экономия до 70%.

2 Установка VLLM на облачном инстансе: скорость, а не удобство

Заходишь по SSH на инстанс. Не трать время на Docker — ставь VLLM нативно. Он даст максимальную скорость инференса.

# Обновляем систему и ставим Python 3.11+
sudo apt update && sudo apt upgrade -y
sudo apt install -y python3-pip python3-venv

# Создаем виртуальное окружение
python3 -m venv ~/vllm-env
source ~/vllm-env/bin/activate

# Ставим torch с поддержкой CUDA 12.4 (актуально на январь 2026)
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

# Устанавливаем VLLM последней версии
pip3 install vllm

# Дополнительно: утилиты для мониторинга
pip3 install nvitop

Теперь запускаем VLLM сервер с моделью. Возьмем Qwen2.5 72B — хороший баланс качества и размера.

# Запускаем VLLM сервер на порту 8000
python -m vllm.entrypoints.openai.api_server \
    --model Qwen/Qwen2.5-72B-Instruct \
    --served-model-name qwen2.5-72b \
    --port 8000 \
    --host 0.0.0.0 \
    --max-model-len 131072 \
    --gpu-memory-utilization 0.9 \
    --enforce-eager  # Убирает graph compilation, стабильнее

Ждешь 5-10 минут пока скачается модель (если нет кэша). Видишь в логах Uvicorn running on http://0.0.0.0:8000 — отлично.

VLLM 0.4.0+ (релиз конца 2025) поддерживает continuous batching и PagedAttention v2. Это дает до 23x ускорение против llama.cpp на больших контекстах. Не используй старые версии.

3 SSH-туннель: мост между мирами

Теперь самое важное — безопасно подключить локальный компьютер к облачному VLLM. На локальной машине создаешь SSH-туннель:

ssh -N -L 8001:localhost:8000 user@cloud-instance-ip -i ~/.ssh/vast_key

Разберем эту магию:

  • -N — не открывать shell, только туннель
  • -L 8001:localhost:8000 — проброс порта: локальный 8001 → удаленный 8000
  • -i ~/.ssh/vast_key — путь к приватному ключу

Теперь если откроешь в браузере http://localhost:8001, то подключишься к VLLM API на облачном инстансе. Но трафик шифрован через SSH.

Чтобы туннель не падал при разрыве сети, оберни его в systemd service или используй autossh:

# Установка autossh
sudo apt install autossh

# Запуск устойчивого туннеля
autossh -M 0 -N -L 8001:localhost:8000 user@cloud-ip -i ~/.ssh/key \
    -o "ServerAliveInterval 30" \
    -o "ServerAliveCountMax 3" \
    -o "ExitOnForwardFailure yes"

4 Настройка Open WebUI для работы через туннель

У тебя уже стоит Open WebUI локально (если нет — смотри мою статью про локальную LLM-инфраструктуру). Теперь нужно научить его работать с нашим туннелированным VLLM.

Заходишь в настройки Open WebUI → Model Configuration → Add new model.

Параметры:

  • Model ID: qwen2.5-72b-tunnel (любое имя)
  • Model URL: http://localhost:8001/v1
  • API Key: оставляешь пустым (VLLM не требует по умолчанию)
  • Model Name: qwen2.5-72b (должно совпадать с --served-model-name в VLLM)

Сохраняешь. Пробуешь отправить промпт. Видишь ответ за 2-3 секунды вместо 20-30 на локальном железе.

💡
Open WebUI 0.3.0+ (релиз 2025 года) поддерживает кастомные OpenAI-совместимые бэкенды из коробки. Не нужно патчить код или менять конфиги. Просто укажи URL туннеля.

Где собака зарыта: латентность, ошибки и подводные камни

В теории все гладко. На практике сталкиваешься с тремя проблемами.

1. Латентность токенизации

Ты отправляешь промпт «Расскажи о квантовой физике». Локальный Open WebUI токенизирует его (превращает в последовательность чисел). Отправляет через туннель на облако. Там VLLM принимает уже токенизированные данные, генерирует ответ, токенизирует его обратно в текст, отправляет тебе.

Проблема: токенизация на локальной машине может быть медленной, особенно для больших контекстов. Решение:

# На облачном инстансе запускаем VLLM с токенизатором
python -m vllm.entrypoints.openai.api_server \
    --model Qwen/Qwen2.5-72B-Instruct \
    --tokenizer Qwen/Qwen2.5-72B-Instruct \
    --port 8000 \
    --host 0.0.0.0

Теперь отправляешь с локальной машины чистый текст, а не токены. Небольшой оверхед по сети (текст больше токенов), но избавляешься от локальной токенизации.

2. Обрывы туннеля и потеря контекста

SSH-туннель упал посреди генерации ответа на 10-й странице. Весь контекст потерян. Раздражает.

Решение: настройка Keep-Alive и автоматического переподключения:

# В ~/.ssh/config на локальной машине
Host cloud-gpu
    HostName cloud-instance-ip
    User ubuntu
    IdentityFile ~/.ssh/vast_key
    ServerAliveInterval 30
    ServerAliveCountMax 3
    ExitOnForwardFailure yes
    LocalForward 8001 localhost:8000

# Теперь подключаешься просто:
ssh -N cloud-gpu

И добавь эту команду в автозагрузку или systemd service.

3. Стоимость и оптимизация

A100 80GB стоит $1.5-2.5 в час. В месяц набегает $1000+ если держать постоянно. Но ты же не работаешь с LLM 24/7?

Сценарии:

  • Работа с документами днем: включаешь инстанс утром, выключаешь вечером. 10 часов в день × 22 рабочих дня = 220 часов = ~$400 в месяц
  • Спотовые инстансы: на Vast.ai spot instances дешевле на 60-80%, но могут прерваться в любой момент. Для асинхронной обработки — идеально
  • Гибридный режим: маленькие модели (7B-13B) запускаешь локально на своем железе. Большие (70B+) — подключаешь к облаку по требованию

Не забывай останавливать инстанс! Настрой CloudWatch / мониторинг или используй инстансы с авто-стопом. Видел счета на $3000 за забытый инстанс, который проработал месяц вхолостую.

Альтернативы: когда SSH — не вариант

Бывает, что облачный провайдер не дает SSH-доступ (некоторые managed сервисы). Или корпоративный фаервол блокирует SSH на нестандартных портах.

Вариант Б: WireGuard VPN. Сложнее в настройке, но:

  • Создаешь VPN-туннель между локальной сетью и облачным VPC
  • VLLM слушает на внутреннем IP VPN (например, 10.0.0.2)
  • Open WebUI подключается напрямую по VPN
  • Плюс: весь трафик между сетями шифрован
  • Минус: нужно настраивать маршрутизацию, iptables

Вариант В: Tailscale/ZeroTier. Еще проще:

# На облачном инстансе
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

# На локальной машине
sudo tailscale up

# Получаешь Tailscale IP облачного инстанса
tailscale status

# В Open WebUI указываешь этот IP вместо localhost:8001

Tailscale создает mesh-сеть поверх интернета с шифрованием. Бесплатно до 100 устройств.

Что делать с чувствительными данными

Ты обрабатываешь медицинские записи, финансовые отчеты, персональные данные клиентов. Даже с шифрованием через SSH некомфортно отправлять это в облако.

Решение: локальная предобработка и анонимизация:

  1. На локальной машине ставишь маленькую модель (например, Mistral 7B)
  2. Пишешь скрипт, который находит в тексте имена, адреса, номера счетов
  3. Заменяешь их на [NAME_1], [ADDRESS_2], [ACCOUNT_3]
  4. Анонимизированный текст отправляешь в облако для обработки большой моделью
  5. Ответ де-анонимизируешь локально

Оверхед по времени 10-20%, но данные никогда не уходят в открытом виде.

Когда эта схема не работает

Прямо сейчас выключи компьютер, если:

  • У тебя интернет с latency >200ms (спутниковый, мобильный 3G)
  • Ты работаешь с real-time чатом, где нужна задержка <500ms
  • Объем данных для обработки — терабайты в день (трафик будет дороже GPU)
  • Требуется полная air-gap изоляция (военные, некоторые госструктуры)

Для остальных случаев — это рабочий, проверенный подход.

Что будет дальше: прогноз на 2027

Сейчас мы туннелируем API. Через год-два появятся специализированные протоколы для гибридного инференса. Представь:

  • Клиент отправляет только embeddings, а не текст
  • Облако возвращает только логиты, а не сгенерированный текст
  • Сжатие контекста на лету для уменьшения трафика
  • Стандартизированный протокол a la gRPC для LLM инференса

Пока этого нет — используй SSH-туннель и VLLM. Это работает сегодня. Прямо сейчас.

P.S. Если собрал гибридную систему и она работает — заходи в комментарии, расскажи про latency и стоимость. Если не работает — пиши, разберемся вместе. Мой рекорд — 42ms ping до облачного инстанса и генерация 1000 токенов за 8 секунд на Llama 3.1 405B. Попробуй побить.