Visão geral
A Vertex AI oferece suporte à implantação de GPU em vários hosts para disponibilizar modelos que excedem a capacidade de memória de um único nó de GPU, como DeepSeek-V3, DeepSeek-R1 e Meta LLama3.1 405 (versão não quantizada).
Neste guia, descrevemos como disponibilizar um modelo DeepSeek-V3 usando unidades de processamento gráfico (GPUs) multihost na Vertex AI com vLLM. A configuração para outros modelos é semelhante. Para mais informações, consulte Disponibilização de vLLM para modelos de linguagem de texto e multimodal.
Antes de começar, confira se você tem familiaridade com o seguinte:
- Disponibilidade da versão da GPU por região
- Preços das GPUs por região
- Preços do Cloud Storage
- Preços da Vertex AI
Use a calculadora de preços para gerar uma estimativa de custo com base no uso previsto.
Contêineres
Para oferecer suporte a implantações de vários hosts, este guia usa uma imagem de contêiner vLLM pré-criada com integração do Ray do Model Garden. O Ray permite o processamento distribuído necessário para executar modelos em vários nós de GPU. Esse contêiner também é compatível com o atendimento de solicitações de streaming usando a API Chat Completions.
Se quiser, você pode criar sua própria imagem de vários nós do vLLM. Essa imagem de contêiner personalizada precisa ser compatível com a Vertex AI.
Antes de começar
Antes de começar a implantação do modelo, conclua os pré-requisitos listados nesta seção.
Configurar um projeto do Google Cloud
- 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.createpermission. 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.enablepermission. 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.createpermission. 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.enablepermission. 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 conferir a cota de GPU H100, acesse a página Cotas e limites do sistema do console Google Cloud .
Para fazer upload do modelo como um recurso
Modelna Vertex AI, execute o comandogcloud ai models uploadda seguinte forma: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:20250312_0916_RC01 \ --container-args='^;^/vllm-workspace/ray_launcher.sh;python;-m;vllm.entrypoints.api_server;--host=0.0.0.0;--port=7080;--model=deepseek-ai/DeepSeek-V3;--tensor-parallel-size=8;--pipeline-parallel-size=2;--gpu-memory-utilization=0.82;--max-model-len=163840;--max-num-seqs=64;--enable-chunked-prefill;--kv-cache-dtype=auto;--trust-remote-code;--disable-log-requests' \ --container-deployment-timeout-seconds=7200 \ --container-ports=7080 \ --container-env-vars=MODEL_ID=deepseek-ai/DeepSeek-V3Faça as seguintes substituições:
LOCATION: a região em que você está usando a Vertex AI.PROJECT_ID: o ID do projeto Google CloudMODEL_DISPLAY_NAME: o nome de exibição que você quer para o modelo
Para criar o endpoint dedicado, execute o seguinte 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 }'Faça as seguintes substituições:
ENDPOINT_DISPLAY_NAME: o nome de exibição do endpoint
Para conseguir o ID do endpoint de inferência on-line, execute o comando
gcloud ai endpoints list:ENDPOINT_ID=$(gcloud ai endpoints list \ --project=PROJECT_ID \ --region=LOCATION \ --filter=display_name~'ENDPOINT_DISPLAY_NAME' \ --format="value(name)")Para receber o ID do seu modelo, execute o comando
gcloud ai models list:MODEL_ID=$(gcloud ai models list \ --project=PROJECT_ID \ --region=LOCATION \ --filter=display_name~'MODEL_DISPLAY_NAME' \ --format="value(name)")Implante o modelo no endpoint executando o 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=2Substitua DEPLOYED_MODEL_NAME por um nome para o modelo implantado. Pode ser igual ao nome de exibição do modelo (MODEL_DISPLAY_NAME).
A implantação de modelos grandes, como o DeepSeek-V3, pode levar mais tempo do que o tempo limite de implantação padrão. Se o comando
deploy-modelexpirar, o processo de implantação vai continuar sendo executado em segundo plano.O comando
deploy-modelretorna um ID de operação que pode ser usado para verificar quando a operação for concluída. Pesquise o status da operação até que a resposta inclua"done": true. Use o seguinte comando para consultar o status:gcloud ai operations describe \ --region=LOCATION \ OPERATION_IDSubstitua OPERATION_ID pelo ID da operação retornado. pelo comando anterior.
Execute o comando
gcloud projects describepara receber o número do projeto:PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")Envie uma solicitação de previsão bruta:
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 }'Envie uma solicitação de conclusão 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 ativar o streaming, mude o valor de
"stream"defalseparatrue.Para desfazer a implantação do modelo e excluir o endpoint, execute os seguintes 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 \ --quietPara excluir o modelo, execute os seguintes 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 informações de referência abrangentes sobre a implantação de GPU de vários hosts na Vertex AI com vLLM, consulte Disponibilização de vLLM para modelos de linguagem de texto e multimodais.
- Aprenda a criar sua própria imagem de vários nós de vLLM. Sua imagem de contêiner personalizada precisa ser compatível com a Vertex AI.
Solicitar cota de GPU
Para implantar o DeepSeek-V3, você precisa de duas VMs a3-highgpu-8g com oito GPUs H100 cada, totalizando 16 GPUs H100. É provável que você precise solicitar um aumento na cota de GPU H100, já que o valor padrão é menor que 16.
Faça o upload do modelo
Criar um endpoint dedicado de inferência on-line
Para oferecer suporte a solicitações de conclusão de chat, o contêiner do Model Garden exige um endpoint dedicado. Os endpoints dedicados estão em prévia e não são compatíveis com a CLI do Google Cloud. Portanto, use a API REST para criar o endpoint.
Implantar o modelo
Receber inferências on-line do modelo implantado
Nesta seção, descrevemos como enviar uma solicitação de inferência on-line ao endpoint público dedicado em que o modelo DeepSeek-V3 está implantado.
Limpar
Para evitar outras cobranças da Vertex AI, exclua os recursos do Google Cloud que você criou durante este tutorial: