vLLM in GKE verwenden, um die Inferenz mit DeepSeek-V3.1-Base auszuführen

In dieser Anleitung erfahren Sie, wie Sie ein DeepSeek-V3.1-Base Sprachmodell mit dem vLLM-Framework bereitstellen und ausführen. Sie stellen dieses Modell in einem Autopilot-Cluster der Google Kubernetes Engine (GKE) Enterprise Edition bereit und verwenden eine einzelne A4-VM mit 8 B200-GPUs.

Diese Anleitung richtet sich an Machine Learning-Entwickler, Plattformadministratoren und ‑operatoren sowie an Daten- und KI-Spezialisten, die Kubernetes-Container-Orchestrierungsfunktionen verwenden möchten, um Inferenzarbeitslasten zu verarbeiten.

Ziele

  1. Über Hugging Face auf DeepSeek-V3.1-Base zugreifen
  2. Umgebung vorbereiten
  3. GKE-Cluster im Autopilot-Modus erstellen
  4. Kubernetes-Secret für Hugging Face-Anmeldedaten erstellen
  5. vLLM-Container in Ihrem GKE-Cluster bereitstellen
  6. Mithilfe von „curl“ mit DeepSeek-V3.1-Base interagieren
  7. Bereinigen

Kosten

In dieser Anleitung werden kostenpflichtige Komponenten von Google Cloud verwendet, darunter:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.

Hinweis

  1. Melden Sie sich in Ihrem Google Cloud Kontoan. Wenn Sie noch kein Google Cloud-Konto haben, erstellen Sie eines, um zu sehen, wie sich unsere Produkte in realen Szenarien schlagen. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Installieren Sie die Google Cloud CLI.

  3. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  4. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  5. Erstellen Sie ein Google Cloud Projekt oder wählen Sie eines aus.

    Erforderliche Rollen zum Auswählen oder Erstellen eines Projekts

    • Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können ein beliebiges Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
    • Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Projektersteller“ (roles/resourcemanager.projectCreator), die die resourcemanager.projects.create Berechtigung enthält. Rollen zuweisen.
    • Erstellen Sie ein Google Cloud Projekt:

      gcloud projects create PROJECT_ID

      Ersetzen Sie PROJECT_ID durch einen Namen für das Google Cloud Projekt, das Sie erstellen.

    • Wählen Sie das Google Cloud Projekt aus, das Sie erstellt haben:

      gcloud config set project PROJECT_ID

      Ersetzen Sie PROJECT_ID durch Ihren Google Cloud Projektnamen.

  6. Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projektaktiviert ist.

  7. Aktivieren Sie die erforderliche API:

    Erforderliche Rollen zum Aktivieren von APIs

    Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin), die die Berechtigung serviceusage.services.enable enthält. Rollen zuweisen.

    gcloud services enable container.googleapis.com
  8. Installieren Sie die Google Cloud CLI.

  9. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  10. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  11. Erstellen Sie ein Google Cloud Projekt oder wählen Sie eines aus.

    Erforderliche Rollen zum Auswählen oder Erstellen eines Projekts

    • Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können ein beliebiges Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
    • Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Projektersteller“ (roles/resourcemanager.projectCreator), die die resourcemanager.projects.create Berechtigung enthält. Rollen zuweisen.
    • Erstellen Sie ein Google Cloud Projekt:

      gcloud projects create PROJECT_ID

      Ersetzen Sie PROJECT_ID durch einen Namen für das Google Cloud Projekt, das Sie erstellen.

    • Wählen Sie das Google Cloud Projekt aus, das Sie erstellt haben:

      gcloud config set project PROJECT_ID

      Ersetzen Sie PROJECT_ID durch Ihren Google Cloud Projektnamen.

  12. Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projektaktiviert ist.

  13. Aktivieren Sie die erforderliche API:

    Erforderliche Rollen zum Aktivieren von APIs

    Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin), die die Berechtigung serviceusage.services.enable enthält. Rollen zuweisen.

    gcloud services enable container.googleapis.com
  14. Weisen Sie Ihrem Nutzerkonto Rollen zu. Führen Sie den folgenden Befehl für jede der folgenden IAM-Rollen einmal aus: roles/container.admin

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Ihre Projekt-ID.
    • USER_IDENTIFIER: Die Kennung für Ihr Nutzerkonto. Beispiel: myemail@example.com.
    • ROLE: Die IAM-Rolle, die Sie Ihrem Nutzerkonto zuweisen.
  15. Melden Sie sich bei Hugging Face an oder erstellen Sie ein Konto.

Über Hugging Face auf DeepSeek zugreifen

So greifen Sie über Hugging Face auf DeepSeek zu:

  1. Melden Sie sich bei Hugging Face an und sehen Sie sich das Modell DeepSeek-V3.1-Base an.
  2. Erstellen Sie ein Hugging Face-readZugriffstoken.
  3. Kopieren und speichern Sie den Wert des read access-Tokens. Sie verwenden es später in dieser Anleitung.

Umgebung vorbereiten

Legen Sie die Standardumgebungsvariablen fest, um Ihre Umgebung vorzubereiten:

gcloud config set project PROJECT_ID
gcloud config set billing/quota_project PROJECT_ID
export PROJECT_ID=$(gcloud config get project)
export RESERVATION_URL=RESERVATION_URL
export REGION=REGION
export CLUSTER_NAME=CLUSTER_NAME
export HUGGING_FACE_TOKEN=HUGGING_FACE_TOKEN
export NETWORK=NETWORK_NAME
export SUBNETWORK=SUBNETWORK_NAME

Ersetzen Sie Folgendes:

  • PROJECT_ID: Die ID des Google Cloud Projekts in dem Sie den GKE-Cluster erstellen möchten.

  • RESERVATION_URL: Die URL der Reservierung, die Sie zum Erstellen Ihres GKE-Cluster verwenden möchten. Geben Sie je nach Projekt, in dem die Reservierung vorhanden ist, einen der folgenden Werte an:

    • Die Reservierung ist in Ihrem Projekt vorhanden: RESERVATION_NAME

    • Die Reservierung ist in einem anderen Projekt vorhanden und Ihr Projekt kann sie verwenden: projects/RESERVATION_PROJECT_ID/reservations/RESERVATION_NAME

  • REGION: Die Region, in der Sie Ihren GKE-Cluster erstellen möchten. Sie können den Cluster nur in der Region erstellen, in der sich Ihre Reservierung befindet.

  • CLUSTER_NAME: Der Name des zu erstellenden GKE-Cluster.

  • HUGGING_FACE_TOKEN: Das Hugging Face-Zugriffstoken, das Sie im vorherigen Abschnitt erstellt haben.

  • NETWORK_NAME: Das Netzwerk, das der GKE-Cluster verwendet. Geben Sie einen der folgenden Werte an:

    • Wenn Sie ein benutzerdefiniertes Netzwerk erstellt haben, geben Sie den Namen Ihres Netzwerks an.

    • Geben Sie andernfalls default an.

  • SUBNETWORK_NAME: Das Subnetz, das der GKE-Cluster verwendet. Geben Sie einen der folgenden Werte an:

    • Wenn Sie ein benutzerdefiniertes Subnetz erstellt haben, geben Sie den Namen Ihres Subnetzes an. Sie können nur ein Subnetz angeben, das sich in derselben Region wie die Reservierung befindet.

    • Geben Sie andernfalls default an.

GKE-Cluster im Autopilot-Modus erstellen

Führen Sie den folgenden Befehl aus, um einen GKE-Cluster im Autopilot-Modus zu erstellen:

gcloud container clusters create-auto $CLUSTER_NAME \
    --project=$PROJECT_ID \
    --region=$REGION \
    --release-channel=rapid \
    --network=$NETWORK \
    --subnetwork=$SUBNETWORK

Das Erstellen des GKE-Cluster kann einige Zeit dauern. Prüfen Sie in der Google Cloud Console unter „ Kubernetes-Cluster“, ob die Erstellung des Clusters abgeschlossen ist. Google Cloud

Kubernetes-Secret für Hugging Face-Anmeldedaten erstellen

So erstellen Sie ein Kubernetes-Secret für Hugging Face-Anmeldedaten:

  1. Konfigurieren Sie kubectl für die Kommunikation mit Ihrem GKE-Cluster:

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --location=$REGION
    
  2. Erstellen Sie ein Kubernetes-Secret, um Ihr Hugging Face-Token zu speichern:

    kubectl create secret generic hf-secret \
        --from-literal=hf_token=${HUGGING_FACE_TOKEN} \
        --dry-run=client -o yaml | kubectl apply -f -
    

vLLM-Container in Ihrem GKE-Cluster bereitstellen

  1. Erstellen Sie eine vllm-deepseek3-1-base.yaml-Datei mit der von Ihnen ausgewählten vLLM-Bereitstellung:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: deepseek3-1-deploy
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: deepseek
      template:
        metadata:
          labels:
            app: deepseek
            ai.gke.io/model: deepseek-v3-1-base
            ai.gke.io/inference-server: vllm
            examples.ai.gke.io/source: user-guide
        spec:
          containers:
          - name: vllm-inference
            image: us-docker.pkg.dev/vertex-ai/vertex-vision-model-garden-dockers/pytorch-vllm-serve:20250819_0916_RC01
            resources:
              requests:
                cpu: "10"
                memory: "1000Gi"
                ephemeral-storage: "1Ti"
                nvidia.com/gpu: "8"
              limits:
                cpu: "10"
                memory: "1000Gi"
                ephemeral-storage: "1Ti"
                nvidia.com/gpu: "8"
            command: ["python3", "-m", "vllm.entrypoints.openai.api_server"]
            args:
            - --model=$(MODEL_ID)
            - --tensor-parallel-size=8
            - --host=0.0.0.0
            - --port=8000
            - --max-model-len=8192
            - --max-num-seqs=4
            env:
            - name: MODEL_ID
              value: deepseek-ai/DeepSeek-V3.1-Base
            - name: HUGGING_FACE_HUB_TOKEN
              valueFrom:
                secretKeyRef:
                  name: hf-secret
                  key: hf_token
            volumeMounts:
            - mountPath: /dev/shm
              name: dshm
            livenessProbe:
              httpGet:
                path: /health
                port: 8000
              initialDelaySeconds: 1800
              periodSeconds: 10
            readinessProbe:
              httpGet:
                path: /health
                port: 8000
              initialDelaySeconds: 1800
              periodSeconds: 5
          volumes:
          - name: dshm
            emptyDir:
                medium: Memory
          nodeSelector:
            cloud.google.com/gke-accelerator: nvidia-b200
            cloud.google.com/reservation-name: RESERVATION_URL
            cloud.google.com/reservation-affinity: "specific"
            cloud.google.com/gke-gpu-driver-version: latest
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: deepseek-service
    spec:
      selector:
        app: deepseek
      type: ClusterIP
      ports:
        - protocol: TCP
          port: 8000
          targetPort: 8000
    ---
    apiVersion: monitoring.googleapis.com/v1
    kind: PodMonitoring
    metadata:
      name: deepseek-monitoring
    spec:
      selector:
        matchLabels:
          app: deepseek
      endpoints:
      - port: 8000
        path: /metrics
        interval: 30s
    
  2. Wenden Sie die Datei vllm-deepseek3-1-base.yaml auf Ihren GKE-Cluster an:

    kubectl apply -f vllm-deepseek3-1-base.yaml
    
  3. Während der Bereitstellung muss der Container das Modell deepseek-ai/DeepSeek-V3.1-Base von Hugging Face herunterladen. Aus diesem Grund kann die Bereitstellung des Containers bis zu 30 Minuten dauern.

  4. Führen Sie den folgenden Befehl aus, um den Abschlussstatus zu sehen:

    kubectl wait \
    --for=condition=Available \
    --timeout=1800s deployment/deepseek3-1-deploy
    

    Mit dem Flag --timeout=1800s kann der Befehl die Bereitstellung bis zu 30 Minuten lang überwachen.

Mithilfe von „curl“ mit DeepSeek V3.1 interagieren

So prüfen Sie das bereitgestellte Modell DeepSeek-V3.1-Base:

  1. Richten Sie die Portweiterleitung zu DeepSeek-V3.1-Base ein:

    kubectl port-forward service/deepseek-service 8000:8000
    
  2. Öffnen Sie ein neues Terminalfenster. Sie können dann mit Ihrem Modell chatten, indem Sie curl verwenden:

    curl http://127.0.0.1:8000/v1/chat/completions \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{
      "model": "deepseek-ai/DeepSeek-V3.1-Base",
      "messages": [
        {
          "role": "user",
          "content": "Describe how generative AI works in one short and easy to understand sentence"
        }
      ],
    "stream":false
    }'
    
  3. Die Ausgabe sieht in etwa so aus:

    {
      "id": "chatcmpl-1a47172070544a5d83199ed5548befca",
      "object": "chat.completion",
      "created": 1755891024,
      "model": "deepseek-ai/DeepSeek-V3.1-Base",
      "choices": [
        {
          "index": 0,
          "message": {
            "role": "assistant",
            "content": "\nGenerative AI uses patterns from existing data to create new, similar content, like text, images, or music.\n",
            "refusal": null,
            "annotations": null,
            "audio": null,
            "function_call": null,
            "tool_calls": [],
            "reasoning_content": null
          },
          "logprobs": null,
          "finish_reason": "stop",
          "stop_reason": null
        }
      ],
      "service_tier": null,
      "system_fingerprint": null,
      "usage": {
        "prompt_tokens": 17,
        "total_tokens": 42,
        "completion_tokens": 25,
        "prompt_tokens_details": null
      },
      "prompt_logprobs": null,
      "kv_transfer_params": null
    }
    

Leistung des Modells beobachten

Wenn Sie die Leistung Ihres Modells beobachten möchten, können Sie die vLLM Dashboard-Integration in Cloud Monitoring verwenden. Auf diesem Dashboard können Sie wichtige Leistungsmesswerte für Ihr Modell wie den Token-Durchsatz, die Netzwerklatenz und die Fehlerraten sehen. Weitere Informationen finden Sie in der Monitoring-Dokumentation unter vLLM.

Bereinigen

Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.

Projekt löschen

Projekt löschen: Google Cloud

gcloud projects delete PROJECT_ID

Ressourcen löschen

  1. Führen Sie den folgenden Befehl aus, um die Bereitstellung und den Dienst in der Datei vllm-deepseek3-1-base.yaml und das Kubernetes-Secret aus dem GKE-Cluster zu löschen:

    kubectl delete -f vllm-deepseek3-1-base.yaml
    kubectl delete secret hf-secret
    
  2. So löschen Sie Ihren GKE-Cluster:

    gcloud container clusters delete $CLUSTER_NAME \
    --region=$REGION
    

Nächste Schritte