Vista geral
A Vertex AI suporta a implementação de GPUs com vários anfitriões para publicar modelos que excedam a capacidade de memória de um único nó de GPU, como o DeepSeek-V3, o DeepSeek-R1 e o Meta LLama3.1 405 (versão não quantizada).
Este guia descreve como publicar um modelo DeepSeek-V3 usando unidades de processamento gráfico (GPUs) com vários anfitriões no Vertex AI com o vLLM. A configuração para outros modelos é semelhante. Para mais informações, consulte o artigo Implementação de vLLM para modelos de linguagem de texto e multimodal.
Antes de começar, certifique-se de que conhece 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 do Vertex AI
Use a calculadora de preços para gerar uma estimativa de custos com base na sua utilização projetada.
Contentores
Para suportar implementações em vários anfitriões, este guia usa uma imagem de contentor 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. Este contentor também suporta o fornecimento de pedidos de streaming através da API Chat Completions.
Se quiser, pode criar a sua própria imagem de vários nós do vLLM. Tenha em atenção que esta imagem de contentor personalizada tem de ser compatível com o Vertex AI.
Antes de começar
Antes de iniciar a implementação do modelo, conclua os pré-requisitos indicados nesta secção.
Configure um Google Cloud projeto
- 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 a quota de GPUs H100, aceda à página Google Cloud Quotas e limites do sistemada consola.
Para carregar o seu modelo como um recurso
Model
para o Vertex AI, execute o comandogcloud ai models upload
da 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-V3
Faça as seguintes substituições:
LOCATION
: a região onde está a usar o Vertex AIPROJECT_ID
: o ID do seu Google Cloud projetoMODEL_DISPLAY_NAME
: o nome a apresentar que quer para o seu modelo
Para criar o ponto final 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 a apresentar do seu ponto final
Obtenha o ID do ponto final de inferência online executando 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)")
Execute o comando
gcloud ai models list
para obter o ID do modelo:MODEL_ID=$(gcloud ai models list \ --project=PROJECT_ID \ --region=LOCATION \ --filter=display_name~'MODEL_DISPLAY_NAME' \ --format="value(name)")
Implemente o modelo no ponto final 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=2
Substitua DEPLOYED_MODEL_NAME por um nome para o modelo implementado. Pode ser igual ao nome a apresentar do modelo (MODEL_DISPLAY_NAME).
A implementação de modelos grandes, como o DeepSeek-V3, pode demorar mais tempo do que o limite de tempo de implementação predefinido. Se o comando
deploy-model
expirar, o processo de implementação continua a ser executado em segundo plano.O comando
deploy-model
devolve um ID da operação que pode ser usado para verificar quando a operação estiver concluída. Pode sondar o estado da operação até que a resposta inclua"done": true
. Use o seguinte comando para consultar o estado:gcloud ai operations describe \ --region=LOCATION \ OPERATION_ID
Substitua OPERATION_ID pelo ID da operação devolvido pelo comando anterior.
Execute o comando
gcloud projects describe
para obter o número do projeto:PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
Envie um pedido de previsão raw:
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 um pedido 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, altere o valor de
"stream"
defalse
paratrue
.Para anular a implementação do modelo a partir do ponto final e eliminar o ponto final, 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 \ --quiet
Para eliminar 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 obter informações de referência abrangentes sobre a implementação de GPUs com vários anfitriões na Vertex AI com o vLLM, consulte o artigo Apresentação do vLLM para modelos de linguagem de texto e multimodais.
- Saiba como criar a sua própria imagem de vários nós de vLLM. Tenha em atenção que a imagem de contentor personalizada tem de ser compatível com o Vertex AI.
Peça uma quota de GPU
Para implementar o DeepSeek-V3, precisa de duas VMs
a3-highgpu-8g
com oito GPUs H100 cada, para um total de 16 GPUs H100. É provável que tenha de pedir um aumento da quota de GPU H100, uma vez que o valor predefinido é inferior a 16.
Carregue o modelo
Crie um ponto final de inferência online dedicado
Para suportar pedidos de conclusão de chat, o contentor do Model Garden requer um ponto final dedicado. Os pontos finais dedicados estão em pré-visualização e não suportam a CLI gcloud do Google Cloud, pelo que tem de usar a API REST para criar o ponto final.
Implemente o modelo
Obtenha inferências online do modelo implementado
Esta secção descreve como enviar um pedido de inferência online para o ponto final público dedicado onde o modelo DeepSeek-V3 está implementado.
Limpar
Para evitar incorrer em mais custos do Vertex AI, elimine os Google Cloud recursos que criou durante este tutorial: