Когда Vertex AI становится узким местом
Мы занимаемся деплоем LLM на Vertex AI уже 5+ лет и знаем, почему стандартный Model Garden не справляется с высоконагруженными системами. На практике вы сталкиваетесь с холодным стартом эндпоинта, неэффективным автоскейлингом и неконтролируемым ростом биллинга за GPU. Для SaaS-продукта с p99 latency менее 500 мс нужен кастомный образ с vLLM, TGI или Triton. Мы используем vLLM с --enable-prefix-caching и --block-size=16 — это даёт до 3x прироста throughput на повторяющихся промптах.
За 50+ проектов мы накопили практику, как превратить Vertex из чёрного ящика в предсказуемую платформу. На одном проекте для финансового трейдинга мы снизили холодный старт с 12 секунд до 300 мс, удерживая одну реплику активной. Экономия на GPU за счёт правильной квантизации составила 35%.
Почему стандартный Model Garden не подходит для высоконагруженных систем?
Готовые модели из Model Garden развёртываются одной командой, но теряете контроль над размером батча, max-model-len, квантизацией и выбором скедулера. Для высоких нагрузок нужен кастомный образ с TGI или Triton. vLLM с --enable-prefix-caching даёт до 3x прироста throughput на повторяющихся промптах.
Как мы разворачиваем LLM: пошаговый процесс
- Аудит модели и инфраструктуры. Оцениваем требования к latency, throughput, подбираем GPU/TPU и тип квантизации (INT4 vs FP16).
- Контейнеризация с vLLM/TGI. Собираем Docker-образ с optimised параметрами — health check, predict route, env vars для Vertex AI Endpoints.
- Настройка эндпоинта и автоскейлинга. Задаём
min_replica_count,max_replica_count, кастомные метрикиcustom.googleapis.com|model/requests_per_replica. - Мониторинг и алертинг. Дашборд Cloud Monitoring: latency p50/p95/p99, GPU utilization, количество токенов, error rate.
- Документация и обучение. Runbook для разработчиков, terraform-конфигурация для повторяемого деплоя.
Ориентировочные сроки: от 7 до 14 дней. Стоимость рассчитывается индивидуально.
Минимизация холодного старта
Холодный старт возникает, когда эндпоинт масштабируется до нуля или при первом вызове после простоя. Vertex AI не умеет предзагружать модель в память. Мы обходим это двумя способами: настраиваем min_replica_count=1 для критичных сервисов (небольшая дополнительная стоимость) или используем warm-up запросы через Cloud Scheduler.
# Прогрев эндпоинта каждые 30 секунд from google.cloud import aiplatform import requests def warm_endpoint(endpoint_name: str): warm_payload = {"prompt": "ping", "max_tokens": 1} # вызов rawPredict response = requests.post( endpoint_name, json=warm_payload, headers={"Authorization": f"Bearer {token}"} ) В одном проекте для финансового трейдинга мы снизили холодный старт с 12 секунд до 300 мс — просто держали одну реплику активной и добавили keep-alive на стороне клиента. Свяжитесь с нами, чтобы обсудить ваш сценарий.
Что выбрать для инференса: Cloud TPU или GPU?
| Характеристика | TPU v5e (8-чип) | NVIDIA A100 (80GB, 1x) |
|---|---|---|
| Throughput (токенов/с) | ~4500 (Llama 3 8B, batch=64) | ~2100 |
| Стоимость | Выше в час | Ниже в час |
| Доступность в Vertex | Только us-central2-b | Многие регионы |
| Сложность настройки | Высокая (JAX, MaxText) | Средняя (PyTorch, CUDA) |
Tensor Processing Unit — специализированный чип Google. Внутренние тесты на Llama 3 8B с batch=64.
TPU v5e даёт примерно в 2 раза больше throughput на доллар для больших батчей, но привязывает к зоне us-central2-b. Для production с мультирегиональной HA рекомендуем GPU или гибрид: TPU для пакетной обработки, GPU для онлайн-инференса.
Как настроить автоскейлинг и мониторинг?
Vertex AI автоматически публикует метрики в Cloud Monitoring, но их недостаточно. Мы добавляем кастомные метрики: количество сгенерированных токенов, процент кэшированных обращений (prefix_cache_hit_rate), время первого токена (TTFT). Это позволяет быстро выявлять деградацию модели после обновления.
# Кастомная метрика в Cloud Monitoring from google.cloud import monitoring_v3 client = monitoring_v3.MetricServiceClient() series = monitoring_v3.TimeSeries( metric={"type": "custom.googleapis.com/model/tokens_per_second"}, resource={"type": "global"}, points=[{ "interval": {"end_time": {"seconds": now}}, "value": {"double_value": tokens_per_sec} }] ) client.create_time_series(name=project_name, time_series=[series]) Пример конфигурации для Llama 3 70B
machine_type: g2-standard-24 accelerator_type: NVIDIA_A100_80G accelerator_count: 4 Сравнение vLLM и TGI для инференса
| Параметр | vLLM | TGI |
|---|---|---|
| Throughput (batch=1) | ~1200 tok/s | ~1000 tok/s |
| Поддержка prefix caching | Да | Ограниченная |
| Гибкость кастомизации | Высокая | Средняя |
vLLM лучше TGI в 1.2 раза по throughput для одиночных запросов и имеет более продвинутое кэширование.
Что входит в работу
- Аудит модели и инфраструктуры — анализ требований, подбор GPU/TPU, рекомендации по квантизации.
- Контейнеризация — сборка Docker-образа с vLLM/TGI, настройка health check и predict route.
- Деплой на Vertex AI Endpoints — настройка автоскейлинга, кастомных метрик и мониторинга.
- Документация — runbook для разработчиков, terraform-конфигурация для повторяемого деплоя.
- Обучение команды — передача знаний по эксплуатации и алертингу.
- Техническая поддержка — 2 недели пост-деплойного сопровождения, гарантия стабильной работы под нагрузкой.
Почему стоит выбрать нас
- 5+ лет опыта в MLOps и деплое LLM
- 50+ развёрнутых моделей, включая Llama 3, Mistral, Gemma, Qwen
- Сертифицированные специалисты Google Cloud (Professional ML Engineer)
- Полное сопровождение: от выбора модели до эксплуатации, гарантируем стабильную работу
Вы можете сэкономить до 40% затрат на GPU при правильной конфигурации автоскейлинга и квантизации. Получите консультацию по вашему проекту — мы оценим оптимальную архитектуру деплоя и рассчитаем бюджет.
Пример деплоя через Vertex AI Endpoints
from google.cloud import aiplatform aiplatform.init(project="my-project", location="us-central1") # Загрузка модели из GCS model = aiplatform.Model.upload( display_name="llama3-8b-vllm", artifact_uri="gs://my-bucket/models/llama3-8b/", serving_container_image_uri="us-docker.pkg.dev/vertex-ai/prediction/pytorch-gpu.2-2:latest", serving_container_command=[ "python", "-m", "vllm.entrypoints.openai.api_server", "--model=/gcs/models/llama3-8b/", "--tensor-parallel-size=1", "--max-model-len=8192", "--host=0.0.0.0", "--port=8080" ], serving_container_ports=[{"containerPort": 8080}], serving_container_health_route="/health", serving_container_predict_route="/v1/completions", serving_container_environment_variables={ "TRANSFORMERS_CACHE": "/gcs/hf_cache/", } ) # Деплой endpoint endpoint = aiplatform.Endpoint.create(display_name="llama3-8b-endpoint") model.deploy( endpoint=endpoint, deployed_model_display_name="llama3-8b-v1", machine_type="g2-standard-12", # 1x L4 GPU accelerator_type="NVIDIA_L4", accelerator_count=1, min_replica_count=1, max_replica_count=10, # автоскейлинг traffic_percentage=100, ) Закажите консультацию — мы подберём оптимальную конфигурацию под вашу нагрузку.







