Развёртывать LLM в облаке через API или запускать на своих GPU? Этот вопрос встаёт перед каждой командой, интегрирующей AI в продукт. Оба подхода имеют свои преимущества, и правильный выбор зависит от объёма запросов, требований к приватности и бюджета. Разберём все аспекты.
Общее сравнение подходов
| Критерий | Облачные LLM (API) | Локальные LLM (self-hosted) |
|---|---|---|
| Начальные затраты | $0 | $30,000-150,000 (GPU) |
| Модель оплаты | Pay-per-token | Фиксированные + электричество |
| Время запуска | 5 минут | 1-4 недели |
| Качество моделей | Лучшие на рынке (GPT-4o, Claude) | Open source (Llama, Mistral) |
| Приватность данных | Данные уходят к провайдеру | Данные внутри периметра |
| Масштабирование | Мгновенное (auto-scale) | Ручное (покупка GPU) |
| SLA / Uptime | 99.9% (провайдер) | Зависит от вашей инфраструктуры |
| Файнтюнинг | Ограниченный (API) | Полный контроль |
Расчёт TCO: когда локальное развёртывание окупается
Рассмотрим три сценария нагрузки для модели уровня Llama 3.1 70B:
| Нагрузка (запросов/мес) | Облако (API)** | Локально (4x A100)* | Что дешевле |
|---|---|---|---|
| 10 000 | $80 | $8,000 | Облако (в 100 раз) |
| 100 000 | $800 | $8,000 | Облако (в 10 раз) |
| 500 000 | $4,000 | $8,000 | Облако (в 2 раза) |
| 1 000 000 | $8,000 | $8,000 | Паритет |
| 5 000 000 | $40,000 | $8,000 | Локально (в 5 раз) |
| 10 000 000 | $80,000 | $8,000 | Локально (в 10 раз) |
* Амортизация 4x NVIDIA A100 80GB ($120K) на 15 мес + $3K/мес электричество + $1K/мес обслуживание. ** Через API-провайдера, средний запрос 1K input + 500 output токенов по цене Llama 70B.
Точка окупаемости — около 1 миллиона запросов в месяц. При меньших объёмах облачные API значительно выгоднее.
Скорость и латентность
| Метрика | Облако (API) | Локально (4x A100, vLLM) |
|---|---|---|
| Time-to-first-token | 200-500 мс | 50-150 мс |
| Tokens/sec (генерация) | 80-150 | 40-80 (зависит от batch) |
| Пропускная способность | Неограниченная | ~50-100 одновременных запросов |
| Сетевая задержка | 50-200 мс (до API) | ~0 мс (локальная сеть) |
Локальное развёртывание выигрывает в TTFT (time-to-first-token) за счёт отсутствия сетевой задержки. Это критично для real-time приложений: голосовые ассистенты, интерактивные чат-боты, auto-complete.
Приватность и комплаенс
Для ряда отраслей локальное развёртывание — единственный вариант:
- Финансовый сектор — банковская тайна, ЦБ РФ требует хранения данных на территории РФ
- Медицина — персональные данные пациентов (ФЗ-152, HIPAA)
- Государственный сектор — грифованная информация, требования ФСБ/ФСТЭК
- Юриспруденция — адвокатская тайна, конфиденциальность клиентов
Важно: облачные провайдеры (OpenAI, Anthropic) гарантируют, что данные через API не используются для обучения. Но сам факт передачи данных за периметр может нарушать регуляторные требования.
Гибридный подход: лучшее из двух миров
Оптимальная стратегия для большинства компаний — гибридный подход:
- Типовые запросы без чувствительных данных → облачные API через ModelSwitch (GPT-4o, Claude)
- Запросы с персональными / чувствительными данными → локальная LLM (Llama 3.1 70B)
- Сложные задачи, требующие максимального качества → облачные флагманы (GPT-4o, Claude 3.5 Sonnet)
- Массовые типовые задачи → локальная LLM (экономия при больших объёмах)
from openai import OpenAI
# Облачный клиент (через ModelSwitch)
cloud = OpenAI(base_url="https://api.modelswitch.ru/v1", api_key="msk_...")
# Локальный клиент (vLLM / Ollama)
local = OpenAI(base_url="http://gpu-server:8000/v1", api_key="not-needed")
def smart_route(query: str, contains_pii: bool):
if contains_pii:
return local.chat.completions.create(
model="llama-3.1-70b",
messages=[{"role": "user", "content": query}]
)
else:
return cloud.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": query}]
)
ModelSwitch упрощает облачную часть гибридной архитектуры: один ключ, 300+ моделей, оплата в рублях — без необходимости управлять аккаунтами у каждого провайдера.