Gestisci un modello DeepSeek-V3 utilizzando il deployment di GPU multi-host

Panoramica

Gemini Enterprise Agent Platform supporta il deployment di GPU multi-host per l'hosting di modelli che superano la capacità di memoria di un singolo nodo GPU, ad esempio DeepSeek-V3, DeepSeek-R1 e Meta LLama 3.1 405B (versione non quantizzata).

Questa guida descrive come pubblicare un modello DeepSeek-V3 utilizzando unità di elaborazione grafica (GPU) multihost sulla piattaforma Gemini Enterprise Agent 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:

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 la piattaforma agentica Gemini Enterprise.

Prima di iniziare

Prima di iniziare il deployment del modello, completa i prerequisiti elencati in questa sezione.

Configurare un progetto Google Cloud

  1. Accedi al tuo account Google Cloud . 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.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Agent Platform API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Agent Platform API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  8. Nella console Google Cloud , attiva Cloud Shell.

    Attiva Cloud Shell

    Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.

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.

  1. Per visualizzare la quota di GPU H100, vai alla pagina Quote e limiti di sistema della console Google Cloud .

    Vai a Quote e Limiti di sistema

  2. Richiedi un aggiustamento delle quote.

Carica il modello

  1. Per caricare il modello come risorsa Model nella piattaforma agentica Gemini Enterprise, esegui il gcloud ai models upload comando 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-V3
    

    Effettua le seguenti sostituzioni:

    • LOCATION: la regione in cui utilizzi la piattaforma agentica Gemini Enterprise
    • PROJECT_ID: l'ID del tuo progetto Google Cloud
    • MODEL_DISPLAY_NAME: il nome visualizzato che vuoi per 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.

  1. 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

Esegui il deployment del modello

  1. 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)")
    
  2. 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)")
    
  3. 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.

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.

  1. Recupera il numero di progetto eseguendo il comando gcloud projects describe:

    PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
    
  2. 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
       }'
    
  3. 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" da false a true.

Esegui la pulizia

Per evitare di incorrere in ulteriori costi di Gemini Enterprise Agent Platform, elimina le Google Cloud risorse che hai creato durante questo tutorial:

  1. 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
    
  2. 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
    

Passaggi successivi