Si vous ne connaissez pas Cloud TPU, nous vous recommandons de consulter le guide de démarrage rapide pour apprendre à créer une VM TPU.
Ce tutoriel vous explique comment entraîner le modèle GPT2 HuggingFace sur Cloud TPU.
Objectifs
- Créer une instance Cloud TPU
- Installer des dépendances
- Exécuter la tâche d'entraînement
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
- Compute Engine
- Cloud TPU
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Avant de commencer
Avant de commencer ce tutoriel, vérifiez que votre projet Google Cloud est correctement configuré.
- Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud.
Ce tutoriel utilise des composants facturables de Google Cloud. Consultez la grille tarifaire de Cloud TPU pour estimer vos coûts. Veillez à nettoyer les ressources que vous avez créées lorsque vous avez terminé, afin d'éviter des frais inutiles.
Entraîner HuggingFace GPT2 avec des Cloud TPU
Ouvrez une fenêtre Cloud Shell.
Créez une variable d'environnement pour votre ID de projet.
export PROJECT_ID=project-id
Configurez Google Cloud CLI pour utiliser le projet Google Cloud dans lequel vous souhaitez créer un Cloud TPU.
gcloud config set project ${PROJECT_ID}
La première fois que vous exécutez cette commande dans une nouvelle VM Cloud Shell, une page
Authorize Cloud Shell
s'affiche. Cliquez surAuthorize
en bas de la page pour autorisergcloud
à effectuer des appels d'API Google Cloud avec vos identifiants.Créez un compte de service pour le projet Cloud TPU.
Les comptes de service permettent au service Cloud TPU d'accéder à d'autres services Google Cloud.
$ gcloud beta services identity create --service tpu.googleapis.com --project $PROJECT_ID
La commande renvoie un compte de service Cloud TPU au format suivant :
service-PROJECT_NUMBER@cloud-tpu.iam.gserviceaccount.com
Créer une instance Cloud TPU
Créez une VM Cloud TPU à l'aide de la commande
gcloud
. La commande suivante crée un TPUv4-8
. Vous pouvez également créer un pod TPU en définissant l'option--accelerator-type
sur un type de pod, par exemplev4-32
.$ gcloud compute tpus tpu-vm create hf-gpt2 \ --zone=us-central2-b \ --accelerator-type=v4-8 \ --version=tpu-vm-tf-2.14.0
Connectez-vous à la VM Cloud TPU en exécutant la commande
ssh
suivante.gcloud compute tpus tpu-vm ssh hf-gpt2 --zone=us-central2-b
Installer des dépendances
Clonez le dépôt HuggingFace Transformers:
(vm)$ git clone https://github.com/huggingface/transformers.git (vm)$ cd transformers
Installez les dépendances :
(vm)$ pip install . (vm)$ pip install -r examples/tensorflow/_tests_requirements.txt (vm)$ cd examples/tensorflow/language-modeling (vm)$ pip install -r requirements.txt
Créez un répertoire temporaire:
(vm)$ mkdir /tmp/gpt2-wikitext
Exécuter le script d'entraînement
(vm)$ python3 run_clm.py \
--model_name_or_path distilgpt2 \
--max_train_samples 1000 \
--max_eval_samples 100 \
--num_train_epochs 1 \
--output_dir /tmp/gpt2-wikitext \
--dataset_name wikitext \
--dataset_config_name wikitext-103-raw-v1
Description des options de commande
model_name_or_path
- Nom du modèle à entraîner.
max_train_samples
- Nombre maximal d'échantillons à utiliser pour l'entraînement.
max_eval_samples
- Nombre maximal d'échantillons à utiliser pour l'évaluation.
num_train_epochs
- Nombre d'époques d'entraînement du modèle.
output_dir
- Répertoire de sortie du script d'entraînement.
dataset_name
- Nom de l'ensemble de données à utiliser.
dataset_config_name
- Nom de la configuration de l'ensemble de données
Une fois l'entraînement terminé, un message semblable au suivant s'affiche:
125/125 [============================] - ETA: 0s - loss: 3.61762023-07-07 21:38:17.902850: W tensorflow/core/framework/dataset.cc:956] Input of GeneratorDatasetOp::Dataset will not be optimized because the dataset does not implement the AsGraphDefInternal() method needed to apply optimizations. 125/125 [============================] - 763s 6s/step - loss: 3.6176 - val_loss: 3.4233 Configuration saved in /tmp/gpt2-wikitext/config.json Configuration saved in /tmp/gpt2-wikitext/generation_config.json Model weights saved in /tmp/gpt2-wikitext/tf_model.h5 D0707 21:38:45.640973681 12027 init.cc:191] grpc_shutdown starts clean-up now
Effectuer un nettoyage
Déconnectez-vous de l'instance de VM TPU:
(vm)$ exit
Votre invite devrait maintenant être
username@projectname
, indiquant que vous êtes dans Cloud Shell.Supprimez la ressource TPU.
$ gcloud compute tpus tpu-vm delete hf-gpt2 \ --zone=us-central2-b
Étapes suivantes
Essayez l'un des autres modèles de référence compatibles.