DeepSeek-V3-Modell mit GPU-Bereitstellung mit 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 LLama3.1 405 (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 Bereitstellung 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.

Hinweise

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. 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.
  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 (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 (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. In the Google Cloud console, activate Cloud Shell.

    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.

  9. 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: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
      

      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 Vorabversion verfügbar und unterstützen die Google Cloud CLI nicht. Sie müssen daher 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 mit dem Befehl gcloud ai models list ab:

      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 standardmäßige Zeitlimit für die Bereitstellung. Wenn für den Befehl deploy-model das 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