Entraîner un modèle à l'aide de TPU7x (Ironwood)
Ce document explique comment provisionner des ressources TPU7x et fournit un exemple de déploiement d'une charge de travail d'entraînement à l'aide de MaxText et de Cluster Toolkit.
TPU7x est la première version de la famille Ironwood,le TPU de septième génération de Google Cloud. La génération Ironwood est conçue pour l'entraînement et l'inférence d'IA à grande échelle. Pour en savoir plus, consultez TPU v7.
Pour obtenir d'autres exemples optimisés pour TPU7x, consultez Training Recipes for Ironwood TPU sur GitHub.
Déployer une charge de travail d'entraînement avec MaxText et Cluster Toolkit
Utilisez Cluster Toolkit pour créer des clusters GKE prêts pour la production et exécuter des charges de travail d'entraînement.
Les sections suivantes expliquent comment déployer une charge de travail d'entraînement à l'aide de MaxText et de Cluster Toolkit.
Avant de commencer
Avant de commencer, procédez comme suit :
- Assurez-vous de disposer d'un projet Google Cloud pour lequel la facturation est activée.
- Installez et initialisez Google Cloud CLI.
- Installez Cluster Toolkit.
Définissez les variables d'environnement suivantes :
export PROJECT_ID=YOUR_PROJECT_ID export ZONE=YOUR_ZONE export CLUSTER_NAME=YOUR_CLUSTER_NAME export BASE_OUTPUT_DIR="gs://YOUR_BUCKET_NAME"
Remplacez les éléments suivants :
- YOUR_PROJECT_ID : ID de votre projet Google Cloud .
- YOUR_ZONE : zone dans laquelle créer le cluster.
- YOUR_CLUSTER_NAME : nom du nouveau cluster.
- YOUR_BUCKET_NAME : nom de votre bucket Cloud Storage, qui sera le répertoire de sortie pour l'entraînement du modèle.
Si vous n'avez pas de bucket Cloud Storage, créez-en un à l'aide de la commande suivante :
gcloud storage buckets create ${BASE_OUTPUT_DIR} \ --project=${PROJECT_ID} \ --location=US \ --default-storage-class=STANDARD \ --uniform-bucket-level-access
Déployer le cluster TPU7x (Ironwood)
Déployez un cluster GKE TPU7x en suivant les instructions de la section Déployer un cluster GKE TPU7x. Assurez-vous que la topologie du pool de nœuds de votre cluster correspond aux exigences de votre charge de travail d'entraînement (par exemple, 4x4x8 pour l'exemple de charge de travail MaxText ci-dessous).
Créer et importer l'image Docker MaxText
Créez et transférez l'image Docker MaxText :
# Clone MaxText
git clone https://github.com/AI-Hypercomputer/maxtext.git
cd maxtext
git checkout maxtext-tutorial-v1.0.0
# Build the Docker image
bash docker_build_dependency_image.sh MODE=stable JAX_VERSION=0.8.2
export CLOUD_IMAGE_NAME="${USER}-maxtext-runner"
bash docker_upload_runner.sh CLOUD_IMAGE_NAME=${CLOUD_IMAGE_NAME}
Définir la commande d'entraînement MaxText
Préparez la commande permettant d'exécuter votre script d'entraînement dans le conteneur Docker.
Le modèle MaxText 1B est une configuration du framework MaxText conçue pour entraîner un modèle de langage avec environ un milliard de paramètres. Utilisez ce modèle pour tester les petites échelles de chips. Les performances ne sont pas optimisées.
export MAXTEXT_COMMAND="JAX_PLATFORMS=tpu,cpu \
ENABLE_PJRT_COMPATIBILITY=true \
python3 src/MaxText/train.py src/MaxText/configs/base.yml \
base_output_directory=${BASE_OUTPUT_DIR} \
dataset_type=synthetic \
per_device_batch_size=2 \
enable_checkpointing=false \
gcs_metrics=true \
run_name=maxtext_training \
steps=30"
Déployer la charge de travail d'entraînement
Envoyez votre tâche d'entraînement à l'aide de gcluster job submit. Pour en savoir plus sur les options d'envoi de tâches, consultez le Guide des tâches Cluster Toolkit :
gcluster job submit \
--name="maxtext-1b-$(date +%H%M)" \
--cluster=${CLUSTER_NAME} \
--project=${PROJECT_ID} \
--location=${ZONE} \
--compute-type=tpu7x-standard-4t \
--topology=4x4x8 \
--image="gcr.io/${PROJECT_ID}/${CLOUD_IMAGE_NAME}" \
--command="${MAXTEXT_COMMAND}"
Les noms de charge de travail doivent être uniques dans le cluster. Dans cet exemple, $(date
+%H%M) est ajouté au nom de la charge de travail pour garantir l'unicité.
Étapes suivantes
- Utilisez la plate-forme Google Cloud ML Diagnostics pour optimiser et diagnostiquer vos charges de travail.
- Exécuter une charge de travail d'entraînement à l'aide d'une recette optimisée pour TPU7x
- Exécuter un microbenchmark TPU7x