Panoramica
Vertex AI supporta il deployment di GPU multi-host per la gestione di modelli che superano la capacità di memoria di un singolo nodo GPU, come DeepSeek-V3, DeepSeek-R1 e Meta LLama 3.1 405B (versione non quantizzata).
Questa guida descrive come gestire un modello DeepSeek-V3 utilizzando unità di elaborazione grafica multi-host su Vertex AI con vLLM. La configurazione per altri modelli è simile. Per ulteriori informazioni, consulta la sezione relativa alla gestione di vLLM per modelli linguistici testuali e multimodali.
Prima di iniziare, assicurati di conoscere i seguenti aspetti:
- Disponibilità della versione 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 integrazione Ray da Model Garden. Ray consente l'elaborazione distribuita necessaria per eseguire i modelli su più nodi GPU. Questo container supporta anche la gestione delle richieste di streaming utilizzando l' API Chat Completions.
Se vuoi, puoi creare la tua immagine multi-nodo 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 Google Cloud progetto
- Accedi al tuo Google Cloud account. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
-
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 role
(
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 role
(
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.-
Nella Google Cloud console, attiva Cloud Shell.
Nella parte inferiore della Google Cloud console, viene avviata una sessiona di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già incluso e installato e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Richiedere una quota di GPU
Per eseguire il deployment di DeepSeek-V3, sono necessarie due
a3-highgpu-8g VM
con otto 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.
Per visualizzare la quota di GPU H100, vai alla pagina Google Cloud console Quote e limiti di sistema.
Caricare il modello
Per caricare il modello come risorsa
Modelin Vertex AI, esegui ilgcloud ai models uploadcomando 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: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-V3Esegui le seguenti sostituzioni:
LOCATION: la regione in cui utilizzi Vertex AIPROJECT_ID: l'ID del tuo Google Cloud progettoMODEL_DISPLAY_NAME: il nome visualizzato che vuoi assegnare al modello
Creare 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.
Per creare l'endpoint dedicato, esegui il comando seguente:
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 }'Esegui le seguenti sostituzioni:
ENDPOINT_DISPLAY_NAME: il nome visualizzato dell'endpoint
Eseguire il deployment del modello
Recupera l'ID endpoint per l'endpoint di inferenza online eseguendo il
gcloud ai endpoints listcomando: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
gcloud ai models listcomando: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
gcloud ai deploy-modelcomando: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=2Sostituisci DEPLOYED_MODEL_NAME con un nome per il modello di cui è stato eseguito il deployment. Può essere lo stesso del nome visualizzato del modello (MODEL_DISPLAY_NAME).
Il deployment di modelli di grandi dimensioni come DeepSeek-V3 può richiedere più tempo rispetto al timeout di deployment predefinito. Se il comando
deploy-modelva in timeout, il processo di deployment continua a essere eseguito in background.Il comando
deploy-modelrestituisce 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 eseguire il polling dello stato:gcloud ai operations describe \ --region=LOCATION \ OPERATION_IDSostituisci OPERATION_ID con l'ID operazione restituito dal comando precedente.
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 è stato eseguito il deployment del modello DeepSeek-V3.
Recupera il numero di progetto eseguendo il
gcloud projects describecomando: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"dafalseatrue.
Libera spazio
Per evitare di incorrere in ulteriori addebito di Vertex AI, elimina le Google Cloud risorse che hai creato durante questo tutorial:
Per annullare il deployment del modello dall'endpoint ed eliminare l'endpoint, esegui i seguenti 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 \ --quietPer eliminare il modello, esegui i seguenti 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
Passaggi successivi
- Per informazioni di riferimento complete sul deployment di GPU multi-host su Vertex AI con vLLM, consulta la sezione relativa all'erogazione di vLLM per modelli linguistici testuali e multimodali.
- Scopri come creare la tua immagine multi-nodo vLLM. Tieni presente che l'immagine container personalizzata deve essere compatibile con Vertex AI.