Как запустить вывод LLM на графических процессорах Cloud Run с помощью vLLM

1. Введение

Обзор

Cloud Run — это контейнерная платформа в Google Cloud, которая упрощает запуск кода в контейнере, не требуя от вас управления кластером.

Cloud Run предлагает либо графический процессор L4, либо NVIDIA RTX PRO 6000 Blackwell. На каждый экземпляр Cloud Run приходится один графический процессор, и автоматическое масштабирование Cloud Run по-прежнему применяется, включая масштабирование до нуля экземпляров при отсутствии запросов.

Один из вариантов использования графических процессоров — запуск собственных открытых больших языковых моделей (LLM). В этом руководстве показано, как развернуть сервис, который запускает LLM.

В этом практическом занятии описывается, как развернуть открытые модели Gemma 4 в Cloud Run, используя предварительно созданный контейнер с библиотекой вывода vLLM .

Что вы узнаете

  • Как использовать графические процессоры в Cloud Run.
  • Как развернуть оптимизированную для инструкций модель Google Gemma 4 2B на Cloud Run, используя vLLM в качестве механизма вывода.

2. Настройка и требования

Предварительные требования

3. Включите API и установите переменные среды.

Включить API

Прежде чем начать использовать этот практический пример, вам потребуется включить несколько API. Для работы с этим практическим примером необходимы следующие API. Вы можете включить эти API, выполнив следующую команду:

gcloud services enable run.googleapis.com \
    cloudbuild.googleapis.com \
    artifactregistry.googleapis.com

Настройка переменных среды

Укажите идентификатор вашего проекта ниже.

export PROJECT_ID=<YOUR_PROJECT_ID>

export REGION=europe-west4
export SERVICE_NAME=gemma4-cr-codelab
export SERVICE_ACCOUNT_NAME=gemma4-cr-sa
export SERVICE_ACCOUNT_ADDRESS=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com

4. Создайте учетную запись службы.

Эта учетная запись службы используется в качестве идентификатора службы Cloud Run.

gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \
  --display-name="Cloud Run gemma 4 SA"

5. Разверните сервис

Для развертывания моделей Gemma в Cloud Run используйте следующую команду CLI gcloud с рекомендуемыми настройками:

CONTAINER_ARGS=(
    "serve"
    "google/gemma-4-E2B-it"
    "--enable-chunked-prefill"
    "--enable-prefix-caching"
    "--generation-config=auto"
    "--enable-auto-tool-choice"
    "--tool-call-parser=gemma4"
    "--reasoning-parser=gemma4"
    "--dtype=bfloat16"
    "--max-num-seqs=64"
    "--gpu-memory-utilization=0.95"
    "--tensor-parallel-size=1"
    "--port=8080"
    "--host=0.0.0.0"
)
gcloud beta run deploy $SERVICE_NAME \
    --image "us-docker.pkg.dev/vertex-ai/vertex-vision-model-garden-dockers/pytorch-vllm-serve:gemma4" \
    --project $PROJECT_ID \
    --region $REGION \
    --execution-environment gen2 \
    --no-allow-unauthenticated \
    --cpu 20 \
    --memory 80Gi \
    --gpu 1 \
    --gpu-type nvidia-rtx-pro-6000 \
    --no-gpu-zonal-redundancy \
    --no-cpu-throttling \
    --max-instances 3 \
    --concurrency 64 \
    --timeout 600 \
    --service-account $SERVICE_ACCOUNT_ADDRESS \
    --startup-probe tcpSocket.port=8080,initialDelaySeconds=240,failureThreshold=1,timeoutSeconds=240,periodSeconds=240 \
    --command "vllm" \
    --args=$(IFS=','; echo "${CONTAINER_ARGS[*]}")

6. Проверьте работу сервиса.

После развертывания вы можете либо использовать службу прокси для разработчиков Cloud Run , которая автоматически добавляет токен идентификации, либо напрямую отправить запрос к URL-адресу службы с помощью команды curl.

Использование прокси-сервиса для разработчиков Cloud Run

Сначала запустите прокси.

gcloud run services proxy $SERVICE_NAME \
  --project $PROJECT \
  --region $REGION \
  --port=9090

Выполните следующую команду, чтобы отправить запрос в отдельной вкладке терминала, оставив прокси-сервер запущенным. Прокси-сервер работает на localhost:9090

curl http://localhost:9090/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "google/gemma-4-E2B-it",
    "messages": [{"role": "user", "content": "Why is the sky blue?"}],
    "chat_template_kwargs": {
         "enable_thinking": true
     },
     "skip_special_tokens": false
  }'

В результате вы должны увидеть примерно следующий вывод:

{
 "id": "chatcmpl-9cf1ab1450487047",
 "object": "chat.completion",
 "created": 1774904187,
 "model": "google/gemma-4-E2B-it",
 "choices": [
   {
     "index": 0,
     "message": {
       "role": "assistant",
       "content": "The short answer is a phenomenon called **Rayleigh scattering**...",
       "function_call": null,
       "tool_calls": [],
       "reasoning": "*   Question: \"Why is the sky blue?\"\n..."
     },
     "finish_reason": "stop",
     "stop_reason": 106
   }
 ],
 "usage": {
   "prompt_tokens": 21,
   "total_tokens": 877,
   "completion_tokens": 856
 }
}

Используя URL-адрес сервиса напрямую

Сначала получите URL-адрес развернутой службы.

SERVICE_URL=$(gcloud run services describe $SERVICE_NAME --region $REGION --format 'value(status.url)')

Заверните услугу

curl $SERVICE_URL/v1/chat/completions \
  -H "Authorization: bearer $(gcloud auth print-identity-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "google/gemma-4-E2B-it",
    "messages": [{"role": "user", "content": "Why is the sky blue?"}],
    "chat_template_kwargs": {
         "enable_thinking": true
     },
     "skip_special_tokens": false
  }'

7. Поздравляем!

Поздравляем с завершением практического занятия!

Мы рекомендуем ознакомиться с документацией Cloud Run.

Что мы рассмотрели

  • Как использовать графические процессоры в Cloud Run.
  • Как развернуть модель Google Gemma 4 (2B) на Cloud Run, используя vLLM в качестве механизма вывода.

8. Уборка

Чтобы избежать непреднамеренных списаний средств (например, если сервисы Cloud Run будут случайно запущены больше раз, чем предусмотрено вашим ежемесячным лимитом на запуск Cloud Run в бесплатном тарифе ), вы можете либо удалить Cloud Run, либо удалить проект, созданный на шаге 2.

Чтобы удалить службу Cloud Run, перейдите в консоль Cloud Run по адресу https://console.cloud.google.com/run и удалите службу gemma4-cr-codelab . Возможно, вам также потребуется удалить учетную запись службы gemma4-cr-codelab-sa .

Если вы решите удалить весь проект, перейдите по ссылке https://console.cloud.google.com/cloud-resource-manager , выберите проект, созданный на шаге 2, и нажмите «Удалить». После удаления проекта вам потребуется изменить проекты в вашем Cloud SDK. Список всех доступных проектов можно просмотреть, выполнив gcloud projects list .