Ce tutoriel vous explique comment exécuter un affinage supervisé (SFT) sur un cluster de Tensor Processing Unit (TPU) v6e multi-hôte à l'aide de MaxText et de Cluster Toolkit. Vous utilisez Cluster Toolkit pour exécuter une charge de travail d'entraînement multi-hôte et exporter les résultats au format Hugging Face pour la diffusion.
Résumé de la charge de travail
L'exécution de cette charge de travail SFT sur Cloud TPU et GKE implique les composants suivants :
- Modèle : Gemma 4 31B (
google/gemma-4-31b-it), un modèle avancé à pondérations ouvertes. Dans ce tutoriel, les pondérations du modèle sont téléchargées depuis Hugging Face, converties dans un format compatible avec MaxText et déployées sur un cluster GKE avec une infrastructure Cloud TPU v6e (v6e-32). - Méthode d'entraînement : SFT à l'aide de MaxText. La charge de travail exécute un pipeline de réglage évolutif sur Cloud TPU v6e à l'aide de JAX. Il optimise les paramètres du modèle sur 1 000 étapes à l'aide de l'outil d'entraînement SFT intégré de MaxText (
maxtext.trainers.post_train.sft.train_sft) et des ensembles de données de réglage des instructions. - Ensemble de données et modèle : UltraChat 200k (
HuggingFaceH4/ultrachat_200k), un ensemble de données de dialogue multitour à grande échelle et de haute qualité. La charge de travail utilise cet ensemble de données pour affiner le modèle et améliorer ses capacités de conversation et de suivi des instructions. - Infrastructure et framework : GKE, géré à l'aide de Cluster Toolkit, sur Cloud TPU v6e (
v6e-32, avec une topologie4x8). Le framework est MaxText (tpu_post_training:0.2.4) avec un backend JAX.
Objectifs
- Installez Cluster Toolkit et ses dépendances.
- Déployer un cluster Cluster Toolkit
- Convertissez un modèle Hugging Face au format MaxText.
- Exécutez une charge de travail d'entraînement SFT sur le TPU.
- Convertissez le modèle affiné au format Hugging Face pour la diffusion.
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google 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, supprimez les ressources que vous avez créées pour éviter que des frais vous soient facturés. 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.
- Sur la fiche du modèle
google/gemma-4-31b-itsur Hugging Face, acceptez le contrat de licence du modèle.
Pour obtenir les autorisations nécessaires pour suivre ce tutoriel, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet :
-
Pour suivre ce tutoriel :
- Administrateur de TPU (
roles/tpu.admin) -
Utilisateur du compte de service (
roles/iam.serviceAccountUser) - Administrateur de Compute (
roles/compute.admin) - Administrateur de l'espace de stockage (
roles/storage.admin) - Administrateur Kubernetes Engine (
roles/container.admin) - Administrateur de compte de service (
roles/iam.serviceAccountAdmin) - Administrateur de projet IAM (
roles/resourcemanager.projectIamAdmin) - Administrateur Service Usage (
roles/serviceusage.serviceUsageAdmin)
- Administrateur de TPU (
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_REGION: région dans laquelle se trouve votre réservation de TPU et où vous déployez votre cluster.YOUR_ZONE: zone où se trouve votre réservation de TPU et où vous déployez votre cluster.YOUR_BUCKET_NAME: nom unique d'un bucket Cloud Storage.YOUR_RESERVATION_NAME: nom de votre réservation de TPU v6e.YOUR_HF_TOKEN: votre jeton d'accès Hugging Face.
Par défaut, le script définit MODEL_NAME sur gemma4-31b (le nom du modèle MaxText pour google/gemma-4-31b-it) et CLUSTER_NAME sur gke-tpu-v6e. Si vous personnalisez CLUSTER_NAME, le nom doit commencer par une lettre minuscule, ne contenir que des lettres minuscules, des chiffres et des traits d'union, et comporter 20 caractères ou moins afin que les ID de compte de service générés ne dépassent pas la limite de 30 caractères.
Installer les dépendances de Cluster Toolkit
Pour suivre ce tutoriel à partir d'un client ou d'un poste de travail Linux ou macOS, suivez les étapes pertinentes de la section Installer les dépendances de la documentation de Cluster Toolkit.
Si vous utilisez Cloud Shell, vous pouvez ignorer cette section.
Installer Cluster Toolkit
Téléchargez et extrayez le bundle prédéfini pour la version spécifique de Cluster Toolkit définie dans CLUSTER_TOOLKIT_VERSION (v1.103.0) dans votre répertoire de travail actuel :
Authentifier votre environnement
Pour vous assurer que Cluster Toolkit peut provisionner des ressources et transférer des images vers Artifact Registry en votre nom, authentifiez la Google Cloud CLI et définissez vos Identifiants par défaut de l'application :
Créer votre cluster Cluster Toolkit
Pour créer et déployer un cluster Cluster Toolkit avec 32 puces TPU v6e, procédez comme suit :
Créez un bucket Cloud Storage :
Préparez la configuration du plan et copiez l'exemple de plan de déploiement dans un répertoire de travail isolé :
Mettez à jour
tmp/gke-tpu-v6e-advanced.yamlpour accorder au compte de service du pool de nœuds de votre cluster (gke-np-sa) le rôle d'administrateur de l'espace de stockage (roles/storage.admin) afin d'écrire des points de contrôle dans votre bucket Cloud Storage, remplacez le type de machine du pool de nœuds système pare2-standard-8et épinglez le pool de nœuds système à votre zone cible pour éviter les ruptures de stock de types de machines régionales :Utilisez la commande
gcluster deploypour déployer votre cluster Cluster Toolkit à l'aide du plantmp/gke-tpu-v6e-advanced.yamlet en transmettant les variables requises à l'aide de l'option--vars:
Convertir le modèle au format MaxText
Pour entraîner le modèle au format MaxText, vous devez le convertir du format Hugging Face au format MaxText.
Pour simplifier les commandes suivantes, utilisez la commande
gcluster job configpour configurer votre projet, votre cluster et votre emplacement par défaut :Utilisez la commande
gcluster job submitpour convertir le modèle du format Hugging Face au format MaxText et le stocker dans votre bucket Cloud Storage :La commande inclut l'option
--await-job-completion, ce qui signifie qu'elle attend dans votre terminal actuel que la conversion se termine.Facultatif : Pour diffuser les journaux de conversion pendant l'exécution du job, ouvrez un terminal distinct dans le répertoire de travail où vous avez extrait
gcluster, puis exécutez la commandegcluster job logs:Dans votre terminal d'origine, vérifiez que les fichiers du modèle converti sont disponibles dans votre bucket Cloud Storage :
Démarrer la charge de travail d'entraînement
Une fois le processus de conversion terminé, démarrez la charge de travail SFT :
La commande inclut l'option
--await-job-completion, ce qui signifie qu'elle attend dans votre terminal actuel que le job d'entraînement se termine.Facultatif : Pour diffuser les journaux d'entraînement en direct pendant l'exécution du job, ouvrez un terminal distinct dans le répertoire de travail où vous avez extrait
gcluster, puis exécutez la commandegcluster job logs:Une fois la compilation XLA initiale terminée, le coordinateur consigne la progression de la sortie pour chaque étape de l'exécution en 1 000 étapes au format
completed step: <step>, seconds: ..., TFLOP/s/device: ..., loss: ..., la perte d'entraînement diminuant d'environ1.57à l'étape 5 à environ0.82à l'étape 1 000. Avant de passer à la section suivante, attendez que l'étape 1000 se termine et que le résultat de la commande./gcluster job listaffiche l'état desftcommeSucceeded.Dans votre terminal d'origine, vérifiez que les points de contrôle d'entraînement SFT sont générés dans votre bucket Cloud Storage :
Convertir le modèle entraîné au format Hugging Face
Une fois la charge de travail d'entraînement terminée, reconvertissez le modèle au format Hugging Face :
La commande inclut l'option
--await-job-completion, ce qui signifie qu'elle attend dans votre terminal actuel que la conversion se termine.Facultatif : Pour diffuser les journaux de conversion en direct pendant l'exécution du job, ouvrez un terminal distinct dans le répertoire de travail où vous avez extrait
gcluster, puis exécutez la commandegcluster job logs:Dans votre terminal d'origine, vérifiez que les pondérations Hugging Face Safetensors finales sont générées dans votre bucket Cloud Storage :
Effectuer un nettoyage
Pour éviter des frais supplémentaires, utilisez la commande gcluster destroy pour supprimer les ressources créées au cours de ce tutoriel :
Étapes suivantes
- Pour en savoir plus sur Cloud TPU, consultez la Présentation de Cloud TPU.
- Pour en savoir plus sur l'architecture et la configuration du TPU
v6e-32, consultez TPU v6e.