Ce tutoriel vous explique comment déployer et diffuser le modèle Mixture of Experts Qwen3-30B-A3B (Qwen/Qwen3-30B-A3B-FP8) sur Google Kubernetes Engine (GKE) à l'aide d'un accélérateur TPU v6e (Trillium) à hôte unique et du framework de diffusion TPU vLLM avec TorchTPU (torchtpu). Vous exécutez la charge de travail sur un seul nœud ct6e-standard-4t, qui contient quatre puces TPU v6e dans une topologie 2x2, avec le parallélisme des données et le parallélisme des experts activés.
Pour exécuter un workflow de diffusion vLLM TorchTPU à hôte unique similaire sur des accélérateurs TPU7x (Ironwood) avec le modèle Qwen3.5-397B plus volumineux, consultez Diffuser Qwen3.5-397B sur GKE avec vLLM TorchTPU sur des accélérateurs TPU7x.
Objectifs
- Configurez votre cluster GKE et votre pool de nœuds TPU v6e à hôte unique.
- Déployez le serveur TorchTPU vLLM à hôte unique sur GKE.
- Envoyez une requête d'inférence au serveur vLLM TorchTPU.
- Exécutez une charge de travail de benchmark de diffusion.
- Effectuer un nettoyage.
Coûts
Dans ce document, vous utilisez les composants facturables suivants deGoogle Cloud :
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
Configurez votre environnement pour le tutoriel :
Activez l'API Kubernetes Engine dans votre projet Google Cloud :
Activez l'API Artifact Registry dans votre projet Google Cloud :
Installez et initialisez la Google Cloud CLI, puis installez
kubectl. Si vous utilisez Cloud Shell, les deux outils sont préinstallés.Assurez-vous que votre projet dispose d'un quota de SSD et d'un quota d'adresses IP externes suffisants dans la région où se trouve votre capacité TPU :
Dans la console Google Cloud , accédez à la page Quotas et limites du système.
Filtrez par Disque persistant SSD (Go) et vérifiez que vous disposez d'au moins 500 Go de quota disponible pour le volume de cache du modèle.
Filtrez par Adresses IPv4 externes régionales en cours d'utilisation et vérifiez que vous disposez d'un quota d'adresses IP suffisant dans votre région cible.
Obtenir un jeton d'accès Hugging Face
Vous avez besoin d'un jeton d'accès Hugging Face pour suivre ce tutoriel. Vous pouvez créer un compte sans frais sur Hugging Face. Une fois que vous disposez d'un compte, générez un jeton d'accès :
- Sur la page Welcome to Hugging Face (Bienvenue sur Hugging Face), cliquez sur l'avatar de votre compte, puis sélectionnez Access tokens (Jetons d'accès).
- Sur la page Access tokens (Jetons d'accès), cliquez sur Create new token (Créer un jeton).
- Sélectionnez le type de jeton Read (Lecture) et saisissez un nom pour votre jeton.
- Votre jeton d'accès s'affiche. Enregistrez le jeton dans un endroit sûr.
Rôles requis
Pour obtenir les autorisations nécessaires pour suivre ce tutoriel, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet :
- Administrateur Kubernetes Engine (
roles/container.admin) - Administrateur de Compute (
roles/compute.admin) -
Utilisateur du compte de service (
roles/iam.serviceAccountUser)
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Configurer vos variables d'environnement
Configurez votre authentification :
Configurez vos variables d'environnement :
Remplacez les éléments suivants :
YOUR_PROJECT_ID: ID de votre projet Google Cloud.YOUR_REGION: région dans laquelle vous souhaitez déployer votre cluster, par exempleus-central1.YOUR_ZONE: zone dans laquelle vous souhaitez déployer votre pool de nœuds TPU v6e, par exempleus-central1-c.YOUR_CLUSTER_NAME: nom de votre cluster GKE, par exempletpu-v6e-tutorial-cluster.YOUR_RESERVATION_NAME: si vous utilisez une réservation, nom de votre réservation de TPU v6e.YOUR_HF_TOKEN: votre jeton d'accès Hugging Face.YOUR_NETWORK_NAME: nom de votre réseauGoogle Cloud . Si vous avez créé un réseau personnalisé, spécifiez ce réseau. Sinon, spécifiezdefault.YOUR_SUBNETWORK_NAME: nom de votre sous-réseauGoogle Cloud . Si vous avez créé un sous-réseau personnalisé, spécifiez-le. Sinon, spécifiezdefault.YOUR_VLLM_TPU_IMAGE: image vLLM TorchTPU à utiliser. Pour les images publiques, consultez le dépôt vLLM TorchTPU.
Créer le cluster GKE
Pour créer un cluster GKE en mode Standard et associer un pool de nœuds TPU v6e à hôte unique, procédez comme suit :
Créez un cluster GKE régional :
Le type de machine par défaut pour les clusters GKE (
e2-medium) ne dispose pas d'une capacité de processeur suffisante pour les contrôleurs de charge de travail. Cette commande spécifie donce2-standard-4.Le résultat ressemble à ce qui suit :
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 RUNNINGCréez un pool de nœuds TPU v6e à hôte unique avec un nœud
ct6e-standard-4t(quatre puces TPU v6e dans une topologie2x2) à l'aide de votre réservation :Au lieu d'utiliser une réservation spécifique, vous pouvez également créer le pool de nœuds à l'aide de la capacité Spot ou de VM à démarrage flexible en transmettant les options suivantes :
- VM Spot : remplacez les options
--reservation-affinityet--reservationpar--spotpour utiliser la capacité Spot. La création des instances utilisant la capacité Spot peut prendre du temps après la création du pool de nœuds, et elles peuvent être préemptées pendant l'exécution de la charge de travail. Si vos pods mettent du temps à être créés ou si les charges de travail s'arrêtent en cours d'exécution, cela peut en être la cause. - VM à démarrage flexible : pour provisionner le pool de nœuds à l'aide de l'option de consommation Démarrage flexible, transmettez l'option
--flex-start. Pour en savoir plus, consultez Exécuter une petite charge de travail par lot avec des TPU et des VM à démarrage flexible.
Le résultat ressemble à ce qui suit :
NAME MACHINE_TYPE DISK_SIZE_GB NODE_VERSION np-0 ct6e-standard-4t 100 1.35.7-gke.1027000- VM Spot : remplacez les options
Configurez les identifiants
kubectlpour communiquer avec votre cluster :
Configurer les identifiants
Créez un secret Kubernetes nommé hf-secret pour stocker votre jeton d'accès Hugging Face :
Déployer le serveur vLLM TorchTPU
Le fichier manifeste de la charge de travail (qwen3_5_server.yaml) définit les ressources suivantes :
Une StorageClass (
hyperdisk-balanced-qwen3) et un PersistentVolumeClaim de 500 Gio (hd-claim-qwen3) reposant sur un stockage Google Cloud Hyperdisk Balanced pour stocker les pondérations du modèle téléchargé, le cache de compilation XLA et le cache de compilation PyTorch.Un déploiement (
vllm-qwen3) planifié sur un seul nœud TPU v6e avec une topologie2x2(google.com/tpu: '4'). Le conteneur exécutevllm servepourQwen/Qwen3-30B-A3B-FP8avec les options suivantes :--data-parallel-size=4--tensor-parallel-size=1--enable-expert-parallel--kv-cache-dtype=fp8--max-model-len=9236--max-num-seqs=64.
Un service
ClusterIP(vllm-qwen3-service) qui expose le port8000.
Pour déployer et surveiller la charge de travail, procédez comme suit :
Récupérez le fichier manifeste du serveur :
Vous pouvez également créer un fichier nommé
qwen3_5_server.yamlavec le contenu suivant :Appliquez le fichier manifeste du serveur vLLM TorchTPU à votre cluster :
Surveillez les journaux de déploiement du serveur jusqu'à ce que le démarrage de l'application soit terminé :
Le démarrage initial du service peut prendre environ 15 à 30 minutes, pendant que le pod télécharge les pondérations du modèle et le compile.
Si vous utilisez une capacité préemptive comme Spot ou démarrage flexible, la création de vos nœuds de tranche TPU peut prendre plus de temps après la création du pool de nœuds, et ils peuvent être préemptés pendant l'exécution des charges de travail. Si vos pods mettent plus de temps que prévu à démarrer ou si vos charges de travail s'arrêtent au milieu, cela peut en être la cause. Pour en savoir plus, consultez Préemption des VM Spot. Pour vérifier si vos nœuds de tranche TPU ont été créés, consultez Vérifier l'état et les conditions du nœud.
Attendez que les journaux signalent
Application startup completeavant d'envoyer du trafic :(APIServer pid=1) INFO: Started server process [1] (APIServer pid=1) INFO: Waiting for application startup. (APIServer pid=1) INFO: Application startup complete.Ouvrez une deuxième session de terminal.
Dans votre deuxième session de terminal, transférez le port local
8000versvllm-qwen3-service:Laissez le transfert de port s'exécuter dans cette session de terminal.
Envoyer des requêtes d'inférence
Revenez à votre première session de terminal et envoyez une requête de complétion de chat au point de terminaison /v1/chat/completions :
Exécuter une charge de travail de benchmark
Pour évaluer le modèle Qwen3-30B-A3B déployé à l'aide d'une charge de travail d'entrée de 8 192 jetons et de sortie de 1 024 jetons (8k/1k) avec la suite d'analyse comparative InferenceX, procédez comme suit :
Récupérez le fichier manifeste du benchmark :
Vous pouvez également créer un fichier nommé
qwen3_5-benchmark-8k1k.yamlavec le contenu suivant :Appliquez le fichier manifeste du pod de benchmark :
Surveillez les journaux de benchmark :
L'exécution du benchmark prend environ 25 à 30 minutes.
Une fois le benchmark terminé, recherchez un résultat contenant des métriques telles que les suivantes :
Output token throughputTotal token throughputTTFTTPOT
Effectuer un nettoyage
Pour éviter que des frais supplémentaires ne soient facturés sur votre compte Google Cloud pour les ressources utilisées dans ce tutoriel, supprimez les charges de travail Kubernetes, le pool de nœuds TPU et le cluster GKE :
Supprimez le déploiement, le service, le PersistentVolumeClaim et le secret Hugging Face du serveur vLLM TorchTPU :
Supprimez le pool de nœuds TPU v6e et le cluster GKE :
Étapes suivantes
- En savoir plus sur vLLM sur Cloud TPU
- En savoir plus sur les TPU v6e (Trillium)
- En savoir plus sur Cloud TPU