Panoramica
Vertex AI supporta il deployment di GPU multi-host per l'hosting di modelli che superano la capacità di memoria di un singolo nodo GPU, come DeepSeek-V3, DeepSeek-R1 e Meta LLama3.1 405 (versione non quantizzata).
Questa guida descrive come pubblicare un modello DeepSeek-V3 utilizzando unità di elaborazione grafica (GPU) multihost su Vertex AI con vLLM. La configurazione per gli altri modelli è simile. Per saperne di più, consulta Erogazione di vLLM per modelli linguistici testuali e multimodali.
Prima di iniziare, assicurati di avere familiarità con quanto segue:
- Disponibilità delle versioni della GPU per regione
- Prezzi delle GPU per regione
- Prezzi di Cloud Storage
- Prezzi di Vertex AI
Utilizza il Calcolatore prezzi per generare una stima dei costi in base all'utilizzo previsto.
Container
Per supportare i deployment multi-host, questa guida utilizza un'immagine container vLLM predefinita con l'integrazione di Ray da Model Garden. Ray consente l'elaborazione distribuita necessaria per eseguire i modelli su più nodi GPU. Questo contenitore supporta anche la gestione delle richieste di streaming utilizzando l'API Chat Completions.
Se vuoi, puoi creare la tua immagine multimodale vLLM. Tieni presente che questa immagine container personalizzata deve essere compatibile con Vertex AI.
Prima di iniziare
Prima di iniziare il deployment del modello, completa i prerequisiti elencati in questa sezione.
Configurare un progetto 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.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.
Per visualizzare la quota di GPU H100, vai alla pagina Quote e limiti di sistema della console Google Cloud .
Per caricare il modello come risorsa
Model
in Vertex AI, esegui il comandogcloud ai models upload
come segue: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
Effettua le seguenti sostituzioni:
LOCATION
: la regione in cui utilizzi Vertex AIPROJECT_ID
: l'ID del tuo progetto Google CloudMODEL_DISPLAY_NAME
: il nome visualizzato che vuoi per il modello
Per creare l'endpoint dedicato, esegui questo 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 }'
Effettua le seguenti sostituzioni:
ENDPOINT_DISPLAY_NAME
: il nome visualizzato per l'endpoint
Recupera l'ID endpoint per l'endpoint di inferenza online eseguendo il 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)")
Recupera l'ID modello per il tuo modello eseguendo il 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)")
Esegui il deployment del modello sull'endpoint eseguendo il 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
Sostituisci DEPLOYED_MODEL_NAME con un nome per il modello di cui è stato eseguito il deployment. Può essere uguale al nome visualizzato del modello (MODEL_DISPLAY_NAME).
Il deployment di modelli di grandi dimensioni come DeepSeek-V3 può richiedere più tempo del timeout di deployment predefinito. Se il comando
deploy-model
scade, il processo di deployment continua a essere eseguito in background.Il comando
deploy-model
restituisce un ID operazione che può essere utilizzato per verificare quando l'operazione è terminata. Puoi eseguire il polling dello stato dell'operazione finché la risposta non include"done": true
. Utilizza il seguente comando per controllare lo stato:gcloud ai operations describe \ --region=LOCATION \ OPERATION_ID
Sostituisci OPERATION_ID con l'ID operazione restituito dal comando precedente.
Recupera il numero di progetto eseguendo il comando
gcloud projects describe
:PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
Invia una richiesta di previsione non elaborata:
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 }'
Invia una richiesta di completamento della 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}'
Per attivare lo streaming, modifica il valore di
"stream"
dafalse
atrue
.Per annullare il deployment del modello dall'endpoint ed eliminare l'endpoint, esegui questi comandi:
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
Per eliminare il modello, esegui questi comandi:
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
- Per informazioni di riferimento complete sul deployment di GPU multi-host su Vertex AI con vLLM, consulta Erogazione di vLLM per modelli linguistici testuali e multimodali.
- Scopri come creare la tua immagine vLLM multimodale. Tieni presente che l'immagine container personalizzata deve essere compatibile con Vertex AI.
Richiedi una quota di GPU
Per il deployment di DeepSeek-V3, hai bisogno di due VM
a3-highgpu-8g
con otto GPU H100 ciascuna, per un totale di 16
GPU H100. È probabile che tu debba richiedere un aumento della quota di GPU H100, poiché
il valore predefinito è inferiore a 16.
Carica il modello
Crea un endpoint di inferenza online dedicato
Per supportare le richieste di completamento della chat, il container Model Garden richiede un endpoint dedicato. Gli endpoint dedicati sono in anteprima e non supportano Google Cloud CLI, quindi devi utilizzare l'API REST per creare l'endpoint.
Esegui il deployment del modello
Ottenere inferenze online dal modello di cui è stato eseguito il deployment
Questa sezione descrive come inviare una richiesta di inferenza online all'endpoint pubblico dedicato in cui è implementato il modello DeepSeek-V3.
Esegui la pulizia
Per evitare di incorrere in ulteriori costi di Vertex AI, elimina le risorse Google Cloud che hai creato durante questo tutorial: