In dieser Anleitung wird gezeigt, wie Sie ein Qwen3 LLM (Large Language Model) mit dem vLLM-Bereitstellungs-Framework bereitstellen und bereitstellen. Sie stellen das Modell auf einer einzelnen virtuellen A4-Maschine (VM) in Google Kubernetes Engine (GKE) bereit.
Diese Anleitung richtet sich an ML-Entwickler (Machine Learning), Plattformadministratoren und -operatoren sowie an Daten- und KI-Spezialisten, die Kubernetes-Container-Orchestrierungsfunktionen verwenden möchten, um Inferenz-Workloads zu verarbeiten.
Ziele
Über Hugging Face auf Qwen3 zugreifen.
Umgebung vorbereiten.
Erstellen Sie einen GKE-Cluster im Autopilot-Modus.
Kubernetes-Secret für Hugging Face-Anmeldedaten erstellen.
Stellen Sie einen vLLM-Container in Ihrem GKE-Cluster bereit.
Mit curl mit Qwen3 interagieren.
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
- Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie noch kein Konto bei Google Cloudhaben, 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.
-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
Erstellen oder wählen Sie ein Google Cloud Projekt 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 dieresourcemanager.projects.createBerechtigung enthält. Rollen zuweisen.
-
Erstellen Sie ein Google Cloud Projekt:
gcloud projects create PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch 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_IDdurch Ihren Google Cloud Projektnamen.
-
Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.
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 Berechtigungserviceusage.services.enableenthält. Rollen zuweisen.gcloud services enable container.googleapis.com
-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
Erstellen oder wählen Sie ein Google Cloud Projekt 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 dieresourcemanager.projects.createBerechtigung enthält. Rollen zuweisen.
-
Erstellen Sie ein Google Cloud Projekt:
gcloud projects create PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch 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_IDdurch Ihren Google Cloud Projektnamen.
-
Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.
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 Berechtigungserviceusage.services.enableenthält. Rollen zuweisen.gcloud services enable container.googleapis.com
-
Weisen Sie Ihrem Nutzerkonto Rollen zu. Führen Sie den folgenden Befehl für jede der folgenden IAM-Rollen einmal aus:
roles/container.admingcloud 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.
- Melden Sie sich in einem Hugging Face Konto an oder erstellen Sie ein Konto.
Über Hugging Face auf Qwen3 zugreifen
So greifen Sie über Hugging Face auf Qwen3 zu:
- Melden Sie sich in Hugging Face an.
- Erstellen Sie ein Hugging Face
readZugriffstoken. Klicken Sie auf Profil > Einstellungen > Zugriffstokens > + Neues Token erstellen. - Geben Sie einen Namen Ihrer Wahl für das Token an und wählen Sie dann eine Rolle aus. Die Berechtigungsstufe der Rolle, die Sie für diese Anleitung auswählen können, ist Lesen.
- Wählen Sie Token erstellen aus.
- Kopieren Sie das generierte Token in die Zwischenablage und speichern Sie es. 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_NAMEDie 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 vom GKE-Cluster verwendet wird. Geben Sie einen der folgenden Werte an:Wenn Sie ein benutzerdefiniertes Netzwerk erstellt haben, geben Sie den Namen Ihres Netzwerks an.
Geben Sie andernfalls
defaultan.
SUBNETWORK_NAME: Das Subnetzwerk, das vom GKE-Cluster verwendet wird. Geben Sie einen der folgenden Werte an:Wenn Sie ein benutzerdefiniertes Subnetzwerk erstellt haben, geben Sie den Namen Ihres Subnetzwerks an. Sie können nur ein Subnetzwerk angeben, das sich in derselben Region wie die Reservierung befindet.
Geben Sie andernfalls
defaultan.
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:
Konfigurieren Sie
kubectlfür die Kommunikation mit Ihrem GKE-Cluster:gcloud container clusters get-credentials $CLUSTER_NAME \ --location=$REGIONErstellen 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
So stellen Sie den vLLM-Container bereit, um das Qwen3-Modell mit Kubernetes-Bereitstellungen bereitzustellen:
Erstellen Sie eine
qwen3-235b-deploy.yaml-Datei mit der von Ihnen ausgewählten vLLM-Bereitstellung. :apiVersion: apps/v1 kind: Deployment metadata: name: vllm-qwen3-deployment spec: replicas: 1 selector: matchLabels: app: qwen3-server template: metadata: labels: app: qwen3-server ai.gke.io/model: Qwen3-235B-A22B-Instruct-2507 ai.gke.io/inference-server: vllm spec: containers: - name: qwen-inference-server image: us-docker.pkg.dev/vertex-ai/vertex-vision-model-garden-dockers/pytorch-vllm-serve:20250801_0916_RC01 resources: requests: cpu: "10" memory: "1000Gi" ephemeral-storage: "500Gi" nvidia.com/gpu: "8" limits: cpu: "10" memory: "1000Gi" ephemeral-storage: "500Gi" 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 - --dtype=bfloat16 env: - name: MODEL_ID value: "Qwen/Qwen3-235B-A22B-Instruct-2507" - 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: 1320 periodSeconds: 10 readinessProbe: httpGet: path: /health port: 8000 initialDelaySeconds: 1320 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: qwen3-service spec: selector: app: qwen3-server type: ClusterIP ports: - protocol: TCP port: 8000 targetPort: 8000 --- apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: vllm-qwen3-monitoring spec: selector: matchLabels: app: qwen3-server endpoints: - port: 8000 path: /metrics interval: 30sWenden Sie die Datei
qwen3-235b-deploy.yamlauf Ihren GKE-Cluster an:kubectl apply -f qwen3-235b-deploy.yamlWährend der Bereitstellung muss der Container das Modell
Qwen3-235B-A22B-Instruct-2507von Hugging Face herunterladen. Aus diesem Grund kann die Bereitstellung des Containers bis zu 30 Minuten dauern.Führen Sie den folgenden Befehl aus, um den Abschlussstatus zu sehen:
kubectl wait \ --for=condition=Available \ --timeout=1500s deployment/vllm-qwen3-deploymentMit dem Flag
--timeout=1500skann der Befehl die Bereitstellung bis zu 25 Minuten lang überwachen.
Mit curl mit Qwen3 interagieren
So prüfen Sie das bereitgestellte Qwen3-Modell:
Richten Sie die Portweiterleitung zu Qwen3 ein:
kubectl port-forward service/qwen3-service 8000:8000Öffnen Sie ein neues Terminalfenster. Sie können dann mit
curlmit Ihrem Modell chatten:curl http://127.0.0.1:8000/v1/chat/completions \ -X POST \ -H "Content-Type: application/json" \ -d '{ "model": "Qwen/Qwen3-235B-A22B-Instruct-2507", "messages": [ { "role": "user", "content": "Describe a GPU in one short sentence?" } ] }'Die Ausgabe sieht etwa so aus:
{ "id": "chatcmpl-a926ddf7ef2745ca832bda096e867764", "object": "chat.completion", "created": 1755023619, "model": "Qwen/Qwen3-235B-A22B-Instruct-2507", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "A GPU is a specialized electronic circuit designed to rapidly process and render graphics and perform parallel computations.", "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": 16, "total_tokens": 36, "completion_tokens": 20, "prompt_tokens_details": null }, "prompt_logprobs": null, "kv_transfer_params": null }
Modellleistung 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
GKE-Cluster löschen
Führen Sie den folgenden Befehl aus, um Ihren GKE-Cluster zu löschen:
gcloud container clusters delete $CLUSTER_NAME \
--region=$REGION
Ressourcen löschen
Führen Sie die folgenden Befehle aus, um die Datei qwen3-235b-deploy.yaml und das Kubernetes-Secret aus dem GKE-Cluster zu löschen:
kubectl delete -f qwen3-235b-deploy.yaml
kubectl delete secret hf-secret