Descripción general
Vertex AI admite la implementación de GPU en varios hosts para la entrega de modelos que superan la capacidad de memoria de un solo nodo de GPU, como DeepSeek-V3, DeepSeek-R1 y Meta LLama3.1 405 (versión no cuantificada).
En esta guía, se describe cómo entregar un modelo DeepSeek-V3 con unidades de procesamiento gráfico (GPU) de varios hosts en Vertex AI con vLLM. La configuración para otros modelos es similar. Para obtener más información, consulta Entrega de vLLM para modelos de lenguaje de texto y multimodales.
Antes de comenzar, asegúrate de conocer la siguiente información:
- Disponibilidad de la versión de GPU por región
- Precios de GPU por región
- Precios de Cloud Storage
- Precios de Vertex AI
Usa la calculadora de precios para generar una estimación de los costos según el uso previsto.
Contenedores
Para admitir implementaciones de varios hosts, en esta guía, se usa una imagen de contenedor de vLLM compilada previamente con integración de Ray de Model Garden. Ray permite el procesamiento distribuido necesario para ejecutar modelos en varios nodos de GPU. Este contenedor también admite la publicación de solicitudes de transmisión con la API de Chat Completions.
Si lo deseas, puedes crear tu propia imagen de vLLM de varios nodos. Ten en cuenta que esta imagen de contenedor personalizada debe ser compatible con Vertex AI.
Antes de comenzar
Antes de comenzar la implementación del modelo, completa los requisitos previos que se indican en esta sección.
Configura un Google Cloud proyecto
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para ver la cuota de GPU H100, ve a la página Cuotas y límites del sistema de la consola de Google Cloud .
Para subir tu modelo como un recurso
Model
a Vertex AI, ejecuta el comandogcloud ai models upload
de la siguiente manera:gcloud ai models upload \ --region=LOCATION \ --project=PROJECT_ID \ --display-name=MODEL_DISPLAY_NAME \ --container-image-uri=us-docker.pkg.dev/vertex-ai/vertex-vision-model-garden-dockers/pytorch-vllm-serve:20250130_0916_RC01 \ --container-args='^;^/vllm-workspace/ray_launcher.sh;python;-m;vllm.entrypoints.api_server;--host=0.0.0.0;--port=8080;--model=deepseek-ai/DeepSeek-V3;--tensor-parallel-size=16;--pipeline-parallel-size=1;--gpu-memory-utilization=0.9;--trust-remote-code;--max-model-len=32768' \ --container-deployment-timeout-seconds=4500 \ --container-ports=8080 \ --container-env-vars=MODEL_ID=deepseek-ai/DeepSeek-V3
Realiza los siguientes reemplazos:
LOCATION
: la región en la que usas Vertex AIPROJECT_ID
: Es el ID de tu proyecto de Google Cloud .MODEL_DISPLAY_NAME
: el nombre de visualización que desea para su modelo
Para crear el extremo dedicado, ejecuta el siguiente comando:
PROJECT_ID=PROJECT_ID REGION=LOCATION ENDPOINT="${REGION}-aiplatform.googleapis.com" curl \ -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://${ENDPOINT}/v1/projects/${PROJECT_ID}/locations/${REGION}/endpoints \ -d '{ "displayName": "ENDPOINT_DISPLAY_NAME", "dedicatedEndpointEnabled": true }'
Realiza los siguientes reemplazos:
ENDPOINT_DISPLAY_NAME
: El nombre visible de tu extremo
Ejecuta el comando
gcloud ai endpoints list
para obtener el ID del extremo de inferencia en línea:ENDPOINT_ID=$(gcloud ai endpoints list \ --project=PROJECT_ID \ --region=LOCATION \ --filter=display_name~'ENDPOINT_DISPLAY_NAME' \ --format="value(name)")
Ejecuta el comando
gcloud ai models list
para obtener el ID de tu modelo:MODEL_ID=$(gcloud ai models list \ --project=PROJECT_ID \ --region=LOCATION \ --filter=display_name~'MODEL_DISPLAY_NAME' \ --format="value(name)")
Para implementar el modelo en el extremo, ejecuta el comando
gcloud ai deploy-model
:gcloud alpha ai endpoints deploy-model $ENDPOINT_ID \ --project=PROJECT_ID \ --region=LOCATION \ --model=$MODEL_ID \ --display-name="DEPLOYED_MODEL_NAME" \ --machine-type=a3-highgpu-8g \ --traffic-split=0=100 \ --accelerator=type=nvidia-h100-80gb,count=8 \ --multihost-gpu-node-count=2
Reemplaza DEPLOYED_MODEL_NAME por un nombre para el modelo implementado. Puede ser el mismo que el nombre visible del modelo (MODEL_DISPLAY_NAME).
La implementación de modelos grandes, como DeepSeek-V3, puede tardar más que el tiempo de espera predeterminado de implementación. Si se agota el tiempo de espera del comando
deploy-model
, el proceso de implementación seguirá ejecutándose en segundo plano.El comando
deploy-model
devuelve un ID de operación que puede utilizarse para comprobar cuándo ha finalizado la operación. Puedes sondear el estado de la operación hasta que la respuesta incluya"done": true
. Utiliza el siguiente comando para sondear el estado:gcloud ai operations describe \ --region=LOCATION \ OPERATION_ID
Sustituye OPERATION_ID por el ID de operación que mostró el comando anterior.
Ejecuta el comando
gcloud projects describe
para obtener el número de proyecto:PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
Envía una solicitud de predicción sin procesar:
curl \ -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://${ENDPOINT_ID}.${REGION}-${PROJECT_NUMBER}.prediction.vertexai.goog/v1/projects/${PROJECT_NUMBER}/locations/${REGION}/endpoints/${ENDPOINT_ID}:rawPredict \ -d '{ "prompt": "Write a short story about a robot.", "stream": false, "max_tokens": 50, "temperature": 0.7 }'
Envía una solicitud de finalización de chat:
curl \ -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://${ENDPOINT_ID}.${REGION}-${PROJECT_NUMBER}.prediction.vertexai.goog/v1/projects/${PROJECT_NUMBER}/locations/${REGION}/endpoints/${ENDPOINT_ID}/chat/completions \ -d '{"stream":false, "messages":[{"role": "user", "content": "Summer travel plan to Paris"}], "max_tokens": 40,"temperature":0.4,"top_k":10,"top_p":0.95, "n":1}'
Para habilitar la transmisión, cambia el valor de
"stream"
defalse
atrue
.Para anular la implementación del modelo en el extremo y borrarlo, ejecuta los siguientes comandos:
ENDPOINT_ID=$(gcloud ai endpoints list \ --region=LOCATION \ --filter=display_name=ENDPOINT_DISPLAY_NAME \ --format="value(name)") DEPLOYED_MODEL_ID=$(gcloud ai endpoints describe $ENDPOINT_ID \ --region=LOCATION \ --format="value(deployedModels.id)") gcloud ai endpoints undeploy-model $ENDPOINT_ID \ --region=LOCATION \ --deployed-model-id=$DEPLOYED_MODEL_ID gcloud ai endpoints delete $ENDPOINT_ID \ --region=LOCATION \ --quiet
Para borrar tu modelo, ejecuta los siguientes comandos:
MODEL_ID=$(gcloud ai models list \ --region=LOCATION \ --filter=display_name=DEPLOYED_MODEL_NAME \ --format="value(name)") gcloud ai models delete $MODEL_ID \ --region=LOCATION \ --quiet
- Para obtener información de referencia completa sobre la implementación de GPU de varios hosts en Vertex AI con vLLM, consulta Entrega de vLLM para modelos de lenguaje de texto y multimodales.
- Aprende a crear tu propia imagen de vLLM de varios nodos. Ten en cuenta que tu imagen de contenedor personalizada debe ser compatible con Vertex AI.
Solicita una cuota de GPU
Para implementar DeepSeek-V3, necesitas dos VMs a3-highgpu-8g
con ocho GPU H100 cada una, lo que da un total de 16 GPU H100. Es probable que debas solicitar un aumento de la cuota de GPU H100, ya que el valor predeterminado es inferior a 16.
Sube el modelo
Crea un extremo de inferencia en línea dedicado
Para admitir solicitudes de finalización de chat, el contenedor de Model Garden requiere un extremo dedicado. Los extremos dedicados están en versión preliminar y no admiten Google Cloud CLI, por lo que debes usar la API de REST para crear el extremo.
Implementa el modelo
Obtén inferencias en línea del modelo implementado
En esta sección, se describe cómo enviar una solicitud de inferencia en línea al extremo público dedicado en el que se implementa el modelo DeepSeek-V3.
Limpia
Para evitar incurrir en más cargos de Vertex AI, borra los Google Cloud recursos que creaste durante este instructivo: