In dieser Anleitung erfahren Sie, wie Sie das Mixture of Experts-Modell Qwen3-30B-A3B (Qwen/Qwen3-30B-A3B-FP8) in der Google Kubernetes Engine (GKE) mit einem TPU v6e (Trillium)-Beschleuniger mit einem einzelnen Host und dem vLLM TPU-Bereitstellungs-Framework mit TorchTPU (torchtpu) bereitstellen und ausführen. Sie führen die Arbeitslast auf einem einzelnen ct6e-standard-4t-Knoten aus, der vier TPU v6e-Chips in einer 2x2-Topologie enthält, wobei Datenparallelität und Expertenparallelität aktiviert sind.
Informationen zum Ausführen eines ähnlichen vLLM-TorchTPU-Bereitstellungs-Workflows mit einem einzelnen Host auf TPU7x (Ironwood)-Beschleunigern mit dem größeren Qwen3.5-397B-Modell finden Sie unter Qwen3.5-397B in der GKE mit vLLM-TorchTPU auf TPU7x-Beschleunigern bereitstellen.
Ziele
- Richten Sie Ihren GKE-Cluster und den TPU v6e-Knotenpool mit einem einzelnen Host ein.
- vLLM-TorchTPU-Server mit einem einzelnen Host in GKE bereitstellen
- Senden Sie eine Inferenzanfrage an den vLLM-TorchTPU-Server.
- Führen Sie eine Benchmark-Arbeitslast für die Bereitstellung aus.
- bereinigen.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten vonGoogle Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung Ihrer voraussichtlichen Nutzung vornehmen.
Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.
Hinweis
Richten Sie die Umgebung für die Anleitung ein:
Aktivieren Sie die Kubernetes Engine API in Ihrem Google Cloud -Projekt:
Aktivieren Sie die Artifact Registry API in Ihrem Google Cloud -Projekt:
Installieren und initialisieren Sie die Google Cloud CLI und installieren Sie
kubectl. Wenn Sie Cloud Shell verwenden, sind beide Tools vorinstalliert.Prüfen Sie, ob Ihr Projekt in der Region, in der sich Ihre TPU-Kapazität befindet, über ein ausreichendes SSD-Kontingent und ein ausreichendes Kontingent für externe IP-Adressen verfügt:
Rufen Sie in der Google Cloud Console die Seite Kontingente und Systemlimits auf.
Filtern Sie nach Persistent Disk SSD (GB) und prüfen Sie, ob Sie mindestens 500 GB verfügbares Kontingent für das Modell-Cache-Volume haben.
Filtern Sie nach Genutzte regionale externe IPv4-Adressen und prüfen Sie, ob Sie in Ihrer Zielregion ein ausreichendes IP-Adresskontingent haben.
Hugging Face-Zugriffstoken abrufen
Für diese Anleitung benötigen Sie ein Hugging Face-Zugriffstoken. Sie können sich bei Hugging Face für ein kostenloses Konto registrieren. Nachdem Sie ein Konto erstellt haben, generieren Sie ein Zugriffstoken:
- Klicken Sie auf der Seite Willkommen bei Hugging Face auf Ihren Konto-Avatar und wählen Sie Zugriffstokens aus.
- Klicken Sie auf der Seite Zugriffstokens auf Neues Token erstellen.
- Wählen Sie den Tokentyp Lesen aus und geben Sie einen Namen für das Token ein.
- Ihr Zugriffstoken wird angezeigt. Speichern Sie das Token an einem sicheren Ort.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Ausführen dieser Anleitung benötigen:
- Kubernetes Engine-Administrator (
roles/container.admin) - Compute-Administrator (
roles/compute.admin) - Service Account User (
roles/iam.serviceAccountUser)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Umgebungsvariablen einrichten
Richten Sie die Authentifizierung ein:
Richten Sie die Umgebungsvariablen ein:
Ersetzen Sie Folgendes:
YOUR_PROJECT_ID: die ID Ihres Projekts in Google Cloud.YOUR_REGION: die Region, in der Sie Ihren Cluster bereitstellen möchten, z. B.us-central1.YOUR_ZONE: die Zone, in der Sie Ihren TPU v6e-Knotenpool bereitstellen möchten, z. B.us-central1-c.YOUR_CLUSTER_NAME: der Name Ihres GKE-Cluster, z. B.tpu-v6e-tutorial-cluster.YOUR_RESERVATION_NAME: Wenn Sie eine Reservierung verwenden, der Name Ihrer TPU v6e-Reservierung.YOUR_HF_TOKEN: Ihr Hugging Face-Zugriffstoken.YOUR_NETWORK_NAME: der Name IhresGoogle Cloud -Netzwerks. Wenn Sie ein benutzerdefiniertes Netzwerk erstellt haben, geben Sie dieses Netzwerk an. Geben Sie andernfallsdefaultan.YOUR_SUBNETWORK_NAME: der Name IhresGoogle Cloud -Subnetzwerks. Wenn Sie ein benutzerdefiniertes Subnetzwerk erstellt haben, geben Sie dieses Subnetzwerk an. Geben Sie andernfallsdefaultan.YOUR_VLLM_TPU_IMAGE: das zu verwendende vLLM-TorchTPU-Image. Informationen zu öffentlichen Images finden Sie im vLLM TorchTPU-Repository.
GKE-Cluster erstellen
Führen Sie die folgenden Schritte aus, um einen GKE-Cluster im Standardmodus zu erstellen und einen TPU v6e-Knotenpool mit einem einzelnen Host anzuhängen:
Erstellen Sie einen regionalen GKE-Cluster:
Der Standardmaschinentyp für GKE-Cluster (
e2-medium) hat nicht genügend CPU-Kapazität für Arbeitslast-Controller. Daher wird in diesem Befehle2-standard-4angegeben.Die Ausgabe sieht etwa so aus:
NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS tpu-v6e-tutorial-cluster us-central1 1.35.7-gke.1027000 34.63.222.246 e2-standard-4 1.35.7-gke.1027000 3 RUNNINGErstellen Sie einen TPU v6e-Knotenpool mit einem einzelnen Host und einem
ct6e-standard-4t-Knoten (vier TPU v6e-Chips in einer2x2-Topologie) mithilfe Ihrer Reservierung:Anstatt eine bestimmte Reservierung zu verwenden, können Sie den Knotenpool auch mit Spot-Kapazität oder Flex-Start-VMs erstellen. Übergeben Sie dazu die folgenden Flags:
- Spot-VMs: Ersetzen Sie die Flags
--reservation-affinityund--reservationdurch--spot, um Spot-Kapazität zu verwenden. Es kann einige Zeit dauern, bis Instanzen mit Spot-Kapazität nach dem Erstellen des Knotenpools erstellt werden. Außerdem können sie während der Ausführung von Arbeitslasten vorzeitig beendet werden. Wenn die Erstellung Ihrer Pods einige Zeit dauert oder Arbeitslasten während der Ausführung beendet werden, kann dies die Ursache sein. - Flex-Start-VMs: Wenn Sie den Knotenpool mit der Verbrauchsoption Flex-Start bereitstellen möchten, übergeben Sie das Flag
--flex-start. Weitere Informationen finden Sie unter Kleine Batcharbeitslast mit TPUs und Flex-Start-VMs ausführen.
Die Ausgabe sieht etwa so aus:
NAME MACHINE_TYPE DISK_SIZE_GB NODE_VERSION np-0 ct6e-standard-4t 100 1.35.7-gke.1027000- Spot-VMs: Ersetzen Sie die Flags
Konfigurieren Sie
kubectl-Anmeldedaten für die Kommunikation mit Ihrem Cluster:
Anmeldedaten konfigurieren
Erstellen Sie ein Kubernetes-Secret mit dem Namen hf-secret, um Ihr Hugging Face-Zugriffstoken zu speichern:
vLLM-TorchTPU-Server bereitstellen
Im Arbeitslastmanifest (qwen3_5_server.yaml) werden die folgenden Ressourcen definiert:
Eine StorageClass (
hyperdisk-balanced-qwen3) und ein PersistentVolumeClaim (hd-claim-qwen3) mit 500 GiB, die von Google Cloud Hyperdisk Balanced-Speicher unterstützt werden, um die heruntergeladenen Modellgewichtungen, den XLA-Kompilierungs-Cache und den PyTorch-Kompilierungs-Cache zu speichern.Ein Deployment (
vllm-qwen3), das auf einem einzelnen TPU v6e-Knoten mit einer2x2-Topologie (google.com/tpu: '4') geplant ist. Der Container führtvllm servefürQwen/Qwen3-30B-A3B-FP8mit den folgenden Flags aus:--data-parallel-size=4--tensor-parallel-size=1--enable-expert-parallel--kv-cache-dtype=fp8--max-model-len=9236--max-num-seqs=64.
Einen
ClusterIP-Dienst (vllm-qwen3-service), der Port8000verfügbar macht.
Führen Sie die folgenden Schritte aus, um die Arbeitslast bereitzustellen und zu überwachen:
Rufen Sie das Servermanifest ab:
Alternativ können Sie eine Datei mit dem Namen
qwen3_5_server.yamlund folgendem Inhalt erstellen:Wenden Sie das vLLM-TorchTPU-Servermanifest auf Ihren Cluster an:
Beobachten Sie die Serverbereitstellungslogs, bis der Anwendungsstart abgeschlossen ist:
Der erste Dienststart kann etwa 15 bis 30 Minuten dauern, während der Pod die Modellgewichtungen herunterlädt und das Modell kompiliert.
Wenn Sie eine vorzeitige Kapazität wie Spot oder Flex-Start verwenden, kann es nach dem Erstellen des Knotenpools länger dauern, bis Ihre TPU-Slice-Knoten erstellt werden. Außerdem können sie während der Ausführung von Arbeitslasten vorzeitig beendet werden. Wenn das Starten Ihrer Pods länger als erwartet dauert oder Ihre Arbeitslasten mittendrin beendet werden, könnte dies die Ursache sein. Weitere Informationen finden Sie unter Preemption von Spot-VMs. Informationen zum Prüfen, ob Ihre TPU-Slice-Knoten erstellt wurden, finden Sie unter Status und Bedingungen des Knotens prüfen.
Warten Sie, bis in den Logs
Application startup completeangezeigt wird, bevor Sie Traffic senden:(APIServer pid=1) INFO: Started server process [1] (APIServer pid=1) INFO: Waiting for application startup. (APIServer pid=1) INFO: Application startup complete.Öffnen Sie eine zweite Terminalsitzung.
Leiten Sie in Ihrer zweiten Terminalsitzung den lokalen Port
8000anvllm-qwen3-serviceweiter:Lassen Sie die Portweiterleitung in dieser Terminalsitzung laufen.
Inferenzanfragen senden
Kehren Sie zur ersten Terminalsitzung zurück und senden Sie eine Anfrage zur Chat-Vervollständigung an den Endpunkt /v1/chat/completions:
Benchmark-Arbeitslast ausführen
Führen Sie die folgenden Schritte aus, um das bereitgestellte Qwen3-30B-A3B-Modell mit einer Arbeitslast von 8.192 Token Eingabe und 1.024 Token Ausgabe (8k/1k) mit der InferenceX-Benchmark-Suite zu benchmarken:
Rufen Sie das Benchmark-Manifest ab:
Alternativ können Sie eine Datei mit dem Namen
qwen3_5-benchmark-8k1k.yamlund folgendem Inhalt erstellen:Wenden Sie das Benchmark-Pod-Manifest an:
Behalten Sie die Benchmark-Logs im Blick:
Der Benchmark dauert etwa 25 bis 30 Minuten.
Suchen Sie nach Abschluss des Benchmarks nach einer Ausgabe, die Messwerte wie die folgenden enthält:
Output token throughputTotal token throughputTTFTTPOT
Bereinigen
Damit Ihrem Google Cloud Konto die in dieser Anleitung verwendeten Ressourcen nicht laufend in Rechnung gestellt werden, löschen Sie die Kubernetes-Arbeitslasten, den TPU-Knotenpool und den GKE-Cluster:
Löschen Sie das Deployment, den Dienst, den PersistentVolumeClaim und das Hugging Face-Secret des vLLM-TorchTPU-Servers:
Löschen Sie den TPU v6e-Knotenpool und den GKE-Cluster:
Nächste Schritte
- Weitere Informationen zu vLLM auf Cloud TPU
- Weitere Informationen zu TPU v6e (Trillium)
- Weitere Informationen zu Cloud TPU