DeepSeek-V3-Modell mit GPU-Bereitstellung auf mehreren Hosts bereitstellen

Übersicht

Vertex AI unterstützt die GPU-Bereitstellung auf mehreren Hosts für die Bereitstellung von Modellen, die die Speicherkapazität eines einzelnen GPU-Knotens überschreiten, z. B. DeepSeek-V3, DeepSeek-R1 und Meta LLama 3.1 405B (nicht quantifizierte Version).

In dieser Anleitung wird beschrieben, wie Sie ein DeepSeek-V3-Modell mit Multi-Host-GPUs (Graphical Processing Units) in Vertex AI mit vLLM bereitstellen. Die Einrichtung für andere Modelle ist ähnlich. Weitere Informationen finden Sie unter vLLM-Bereitstellung für Text- und multimodale Sprachmodelle.

Machen Sie sich vorher mit folgenden Punkten vertraut:

Sie können mithilfe des Preisrechners eine Kostenschätzung für Ihre voraussichtliche Nutzung erstellen.

Container

Zur Unterstützung von Bereitstellungen auf mehreren Hosts wird in diesem Leitfaden ein vordefiniertes vLLM-Container-Image mit Ray-Integration aus Model Garden verwendet. Ray ermöglicht die verteilte Verarbeitung, die zum Ausführen von Modellen auf mehreren GPU-Knoten erforderlich ist. Dieser Container unterstützt auch die Verarbeitung von Streaminganfragen über die Chat Completions API.

Bei Bedarf können Sie ein eigenes vLLM-Image mit mehreren Knoten erstellen. Dieses benutzerdefinierte Container-Image muss mit Vertex AI kompatibel sein.

Hinweis

Bevor Sie mit der Bereitstellung Ihres Modells beginnen, müssen Sie die in diesem Abschnitt aufgeführten Voraussetzungen erfüllen.

Google Cloud -Projekt einrichten

  1. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  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 Vertex AI 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 Vertex AI 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. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

GPU-Kontingent anfordern

Für die Bereitstellung von DeepSeek-V3 benötigen Sie zwei a3-highgpu-8g-VMs mit jeweils acht H100-GPUs, also insgesamt 16 H100-GPUs. Wahrscheinlich müssen Sie eine Erhöhung des H100-GPU-Kontingents beantragen, da der Standardwert weniger als 16 beträgt.

  1. Wenn Sie das H100-GPU-Kontingent aufrufen möchten, rufen Sie in der Google Cloud Console die Seite Kontingente und Systemlimits auf.

    Zur Seite „Kontingente und Systemlimits“

  2. Kontingentanpassung anfordern

Modell hochladen

  1. Zum Hochladen Ihres Modells als Model-Ressource in Vertex AI führen Sie den Befehl gcloud ai models upload aus:

    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
    

    Ersetzen Sie die folgenden Werte:

    • LOCATION: Die Region, in der Sie Vertex AI verwenden.
    • PROJECT_ID: die ID Ihres Google Cloud -Projekts
    • MODEL_DISPLAY_NAME: Der Anzeigename, den Sie für Ihr Modell verwenden möchten.

Dedizierten Onlineinferenz-Endpunkt erstellen

Für Chat-Vervollständigungsanfragen ist im Model Garden-Container ein dedizierter Endpunkt erforderlich. Dedizierte Endpunkte sind in der Vorschauphase und unterstützen die Google Cloud CLI nicht. Sie müssen also die REST API verwenden, um den Endpunkt zu erstellen.

  1. Führen Sie den folgenden Befehl aus, um den dedizierten Endpunkt zu erstellen:

    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
        }'
    

    Ersetzen Sie die folgenden Werte:

    • ENDPOINT_DISPLAY_NAME: Der Anzeigename für Ihren Endpunkt.

Modell bereitstellen

  1. Rufen Sie die Endpunkt-ID für den Onlineinferenz-Endpunkt mit dem Befehl gcloud ai endpoints list ab:

    ENDPOINT_ID=$(gcloud ai endpoints list \
     --project=PROJECT_ID \
     --region=LOCATION \
     --filter=display_name~'ENDPOINT_DISPLAY_NAME' \
     --format="value(name)")
    
  2. Rufen Sie die Modell-ID für Ihr Modell ab, indem Sie den Befehl gcloud ai models list ausführen:

    MODEL_ID=$(gcloud ai models list \
     --project=PROJECT_ID \
     --region=LOCATION \
     --filter=display_name~'MODEL_DISPLAY_NAME' \
     --format="value(name)")
    
  3. Stellen Sie das Modell für den Endpunkt bereit, indem Sie den Befehl gcloud ai deploy-model ausführen:

    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
    

    Ersetzen Sie DEPLOYED_MODEL_NAME durch einen Namen für das bereitgestellte Modell. Dieser kann mit dem Anzeigenamen des Modells (MODEL_DISPLAY_NAME) identisch sein.

    Die Bereitstellung großer Modelle wie DeepSeek-V3 kann länger dauern als das Standard-Zeitlimit für die Bereitstellung. Wenn für den Befehl deploy-model ein Zeitlimit überschritten wird, wird der Bereitstellungsprozess im Hintergrund fortgesetzt.

    Der Befehl deploy-model gibt eine Vorgangs-ID zurück, mit der geprüft werden kann, ob der Vorgang abgeschlossen ist. Sie können den Status des Vorgangs abfragen, bis in der Antwort "done": true angegeben wird. Mit dem folgenden Befehl können Sie den Status abfragen:

    gcloud ai operations describe \
    --region=LOCATION \
    OPERATION_ID
    

    Ersetzen Sie OPERATION_ID durch die mit dem vorherigen Befehlzurückgegebene Vorgangs-ID.

Onlineinferenzen aus dem bereitgestellten Modell abrufen

In diesem Abschnitt wird beschrieben, wie Sie eine Online-Inferenzanfrage an den dedizierten öffentlichen Endpunkt senden, an dem das DeepSeek-V3-Modell bereitgestellt wird.

  1. Rufen Sie die Projektnummer mit dem Befehl gcloud projects describe ab:

    PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
    
  2. Senden Sie eine Rohvorhersageanfrage:

    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. Chat-Vervollständigungsanfrage senden:

    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}'
    

    Wenn Sie das Streaming aktivieren möchten, ändern Sie den Wert von "stream" von false in true.

Bereinigen

Um weitere Vertex AI-Kosten zu vermeiden, löschen Sie die Google Cloud Ressourcen, die Sie in dieser Anleitung erstellt haben:

  1. So heben Sie die Bereitstellung des Modells am Endpunkt auf und löschen den Endpunkt. Führen Sie die folgenden Befehle aus:

    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. Führen Sie die folgenden Befehle aus, um das Modell zu löschen:

    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
    

Nächste Schritte