Ce tutoriel vous explique comment déployer et diffuser le modèle de mélange d'experts multimodal Gemma 4 26B (google/gemma-4-26B-A4B-it) sur Google Kubernetes Engine (GKE) à l'aide d'accélérateurs Cloud TPU v6e (Trillium) multi-hôtes et de vLLM TorchTPU.
Étant donné que la charge de travail s'étend sur plusieurs hôtes TPU dans une topologie 2x4, vous utilisez l'API Kubernetes LeaderWorkerSet et Ray pour coordonner l'inférence distribuée en parallèle de tenseurs sur huit puces TPU.
Objectifs
- Configurez votre cluster GKE et votre pool de nœuds TPU v6e multi-hôte.
- Déployez le serveur vLLM multi-hôte avec LeaderWorkerSet.
- Envoyer des requêtes d'inférence textuelles et multimodales
- 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
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.
- Installez et initialisez la Google Cloud CLI, puis installez
kubectl. Si vous utilisez Cloud Shell, les deux outils sont préinstallés.
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 vos variables d'environnement :
Remplacez les éléments suivants :
YOUR_PROJECT_ID: ID de votre projet Google Cloud.YOUR_RESERVATION_NAME: nom de votre réservation.YOUR_REGION: région dans laquelle vous souhaitez déployer votre cluster GKE.YOUR_ZONE: zone dans laquelle vous souhaitez déployer votre pool de nœuds TPU v6e.YOUR_CLUSTER_NAME: nom de votre cluster GKE.YOUR_HF_TOKEN: votre jeton d'accès Hugging Face.YOUR_VLLM_TPU_IMAGE: image TPU vLLM à utiliser. Pour les images publiques, consultez le dépôt vLLM TorchTPU.
Créer le cluster GKE
Pour créer le cluster GKE et associer un pool de nœuds TPU v6e multi-hôte, procédez comme suit :
Créez un cluster GKE régional qui utilise des nœuds
e2-standard-4pour le pool de nœuds par défaut, et un pool de nœuds TPU v6e avec deux nœudsct6e-standard-4torganisés selon une topologie2x4(huit puces TPU au total). Le type de machine GKE par défaut (e2-medium) ne fournit pas suffisamment de ressources de processeur pour le contrôleur LeaderWorkerSet. Ce tutoriel spécifie donce2-standard-4: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 qui utilisent 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 des charges 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 : transmettez
--flex-startpour provisionner le pool de nœuds à l'aide de l'option de consommation Démarrage flexible. Pour en savoir plus, consultez Exécuter une petite charge de travail par lot avec des TPU et des VM à démarrage flexible.
- VM Spot : remplacez les options
Configurez les identifiants
kubectlpour communiquer avec votre cluster :
Configurer les identifiants et installer LeaderWorkerSet
Pour préparer votre cluster au déploiement multi-hôte, procédez comme suit :
Exportez votre jeton Hugging Face et créez un secret Kubernetes nommé
hf-secret:Installez la CustomResourceDefinition et le contrôleur LeaderWorkerSet sur votre cluster :
Déployer le serveur vLLM multi-hôte
Le fichier manifeste de la charge de travail (gemma4-26b-multihost-v6e-2x4.yaml) définit deux ressources :
- Une ressource LeaderWorkerSet (
vllm-tpu-gemma4-26b) avecsize: 2(un pod leader et un pod de nœud de calcul) planifiée sur les deux nœudsct6e-standard-4tde la tranche TPU2x4. Chaque pod exécute un InitContainer qui précharge les pondérations du modèlegoogle/gemma-4-26B-A4B-itdepuis Hugging Face dans un volume en mémoire avant de démarrer Ray et le serveur d'API OpenAI vLLM avec les options--tensor-parallel-size=8,--kv-cache-dtype=fp8,--max-model-len=5248et--max-num-seqs=128. - Un service ClusterIP (
vllm-service) qui expose le port8000sur le pod leader.
Pour déployer et surveiller la charge de travail, procédez comme suit :
Récupérez le fichier manifeste LeaderWorkerSet depuis GitHub :
Vous pouvez également créer un fichier nommé
gemma4-26b-multihost-v6e-2x4.yamlavec le contenu suivant :Appliquez le fichier manifeste LeaderWorkerSet :
Surveillez l'état et les journaux du pod leader jusqu'à ce que le démarrage de l'application soit terminé :
Le démarrage initial du service prend environ neuf minutes, pendant lesquelles les pods préchargent les pondérations du modèle, forment le cluster Ray à deux nœuds sur les huit puces TPU et compilent le modèle. Attendez que les journaux signalent
Application startup completeavant d'envoyer du trafic.Dans une deuxième session de terminal, transférez le port local
8000versvllm-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 testez le modèle déployé avec des requêtes de complétion de chat textuelles et multimodales :
Envoyez une requête de complétion de chat textuel au point de terminaison
/v1/chat/completions:Envoyez une requête multimodale contenant à la fois l'URL d'une image et un prompt textuel :
Exécuter une charge de travail de benchmark
Pour évaluer le modèle déployé, exécutez la commande suivante :
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 du serveur vLLM et le secret Hugging Face :
Supprimez le pool de nœuds TPU v6e et le cluster GKE :
Revenez à votre deuxième session de terminal et arrêtez le transfert de port.
Étapes suivantes
- En savoir plus sur vLLM TorchTPU.
- En savoir plus sur Cloud TPU