Ce tutoriel explique comment entraîner le modèle BERT (Bidirectional Encoder Representations from Transformers) sur AI Platform Training.
BERT est une méthode permettant de pré-entraîner des représentations du langage. Le pré-entraînement fait référence à la façon dont le modèle BERT est entraîné pour la première fois à partir d'une importante source de texte, telle que Wikipédia. Vous pouvez ensuite appliquer les résultats de l'entraînement à d'autres tâches de traitement du langage naturel, tels que des systèmes de questions-réponses et l'analyse des sentiments. BERT et AI Platform Training vous permettent d'entraîner de nombreux modèles de traitement du langage naturel en environ 30 minutes.
Pour en savoir plus sur BERT, consultez les ressources suivantes :
- Open Sourcing BERT: State-of-the-Art Pre-training for Natural Language Processing (BERT en Open source : pré-entraînement de pointe pour le traitement du langage naturel)
- BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (BERT : pré-entraînement de transformateurs bidirectionnels profonds pour la compréhension du langage)
Objectifs
- Créez un bucket Cloud Storage pour stocker la sortie du modèle.
- Exécuter la tâche d'entraînement
- Vérifier les résultats
Avant de commencer ce tutoriel, vérifiez que votre projet Google Cloud est correctement configuré.
Pour configurer un compte GCP, activer les API requises, puis installer et activer Google Cloud CLI, procédez comme suit :
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training & Prediction and Compute Engine APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training & Prediction and Compute Engine APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Préparer les données
Ce tutoriel ne nécessite aucun prétraitement ou téléchargement de données. Toutes les données et tous les points de contrôle de modèles requis sont à disposition dans des buckets de stockage public. Si ce processus vous intéresse, veuillez consulter le tutoriel Cloud TPU qui couvre la création de cet ensemble de données depuis la ligne de commande.
Envoyer une tâche d'entraînement
Pour envoyer une tâche, vous devez spécifier certains arguments de base associés à l'entraînement, ainsi qu'à l'algorithme BERT.
Arguments généraux liés à la tâche d'entraînement :
Arguments de la tâche d'entraînement | |
---|---|
Argument | Description |
job-id |
Identifiant unique de la tâche d'entraînement. Il vous permet de rechercher les journaux d'état de la tâche d'entraînement une fois celle-ci envoyée. |
job-dir |
Chemin d'accès à Cloud Storage, où AI Platform Training enregistre les fichiers d'entraînement après avoir effectué une tâche d'entraînement avec succès. |
scale-tier |
Spécifie les types de machines pour l'entraînement. Utilisez le type BASIC pour sélectionner une configuration sur une seule machine.
|
master-image-uri |
URI Container Registry permettant de spécifier le conteneur Docker à utiliser pour la tâche d'entraînement. Utilisez le conteneur de l'algorithme BERT intégré défini précédemment en tant que IMAGE_URI .
|
region |
Spécifiez la région disponible dans laquelle la tâche d'entraînement doit être exécutée. Pour ce tutoriel, vous pouvez utiliser la région us-central1 .
|
Arguments spécifiques à l'entraînement de l'algorithme BERT intégré avec l'ensemble de données fourni :
Arguments algorithmiques | ||
---|---|---|
Argument | Valeur | Description |
mode |
train_and_eval | Indiquez s'il faut ou non ajuster l'entraînement ou exporter le modèle. |
train_dataset_path |
gs://cloud-tpu-checkpoints/bert/classification/mnli_train.tf_record | Chemin d'accès Cloud Storage où les données d'entraînement sont stockées. |
eval_dataset_path |
gs://cloud-tpu-checkpoints/bert/classification/mnli_eval.tf_record | Chemin d'accès Cloud Storage où les données d'évaluation sont stockées. |
input_meta_data_path |
gs://cloud-tpu-checkpoints/bert/classification/mnli_meta_data | Chemin d'accès Cloud Storage où le schéma d'entrée est stocké. |
bert_config_file |
gs://cloud-tpu-checkpoints/bert/keras_bert/uncased_L-24_H-1024_A-16/bert_config.json | Chemin d'accès Cloud Storage où est stocké le fichier de configuration BERT. |
init_checkpoint |
gs://cloud-tpu-checkpoints/bert/keras_bert/uncased_L-24_H-1024_A-16/bert_model.ckpt | Démarrage du point de contrôle en vue d'une optimisation (généralement un modèle BERT pré-entraîné). |
train_batch_size |
32 | Taille de lot pour l'entraînement. |
eval_batch_size |
32 | Taille de lot pour l'évaluation. |
learning_rate |
2e-5 | Taux d'apprentissage utilisé par l'optimiseur Adam. |
num_train_epochs |
1 | Nombre d'époques d'entraînement à exécuter (uniquement disponible en mode train_and_eval ).
|
steps_per_loop |
1000 | Nombre d'étapes par boucle en mode graphique. |
Pour obtenir une liste détaillée de tous les autres indicateurs de l'algorithme BERT, reportez-vous à la documentation de référence de l'algorithme BERT intégré.
Exécuter la tâche d'entraînement
- Accédez à la page AI Platform > Tâches :
Page AI Platform > Tâches
En haut de la page, cliquez sur le bouton "Nouvelle tâche d'entraînement" puis sélectionnez "Entraînement de l'algorithme intégré".
Sélectionnez BERT comme algorithme d'entraînement
Utilisez le bouton "Parcourir" pour marquer les ensembles de données d'entraînement et d'évaluation dans votre bucket Cloud Storage puis pour choisir le répertoire de sortie.
Sur la page suivante, utilisez les valeurs d'argument ci-dessus pour configurer la tâche d'entraînement.
Attribuez un nom à votre tâche d'entraînement et utilisez le type de machine
BASIC_TPU
.Cliquez sur "Envoyer" pour démarrer votre tâche.
Comprendre votre répertoire de tâche
Après avoir terminé une tâche d'entraînement, AI Platform Training crée un modèle entraîné dans votre bucket Cloud Storage, accompagné d'autres artefacts. La structure de répertoire suivante apparaît dans votre répertoire JOB_DIR
:
- model/ (un répertoire TensorFlow SavedModel)
- saved_model.pb.
- assets/
- variables/
- summaries/ (journalisation de l'entraînement et de l'évaluation)
- eval/
- train/
- différents fichiers de point de contrôle (créés et utilisés pendant l'entraînement)
- point de contrôle
- ctl_checkpoint-1.data-00000-of-00002
- …
- ctl_checkpoint-1.index
Vérifiez que la structure de répertoires de votre fichier JOB_DIR
correspond à celle décrite dans la liste précédente :
gcloud storage ls -a $JOB_DIR/*
Déployer le modèle entraîné
AI Platform Prediction organise vos modèles entraînés à l'aide de ressources de modèle et de version. Un modèle AI Platform Prediction est un conteneur pour les versions de votre modèle de machine learning.
Pour déployer un modèle, vous devez créer une ressource de modèle dans AI Platform Prediction, créer une version de ce modèle, puis utiliser le modèle et la version pour demander des prédictions en ligne.
Découvrez comment déployer des modèles sur AI Platform Prediction.
Console
La page Tâches présente une liste de toutes vos tâches d'entraînement. Cliquez sur le nom de la tâche d'entraînement que vous venez d'envoyer.
Sur la page Détails de la tâche, vous pouvez afficher la progression générale de la tâche ou cliquer sur Afficher les journaux pour accéder à une vue plus détaillée de la progression.
Lorsque la tâche est réussie, le bouton Déployer un modèle apparaît en haut. Cliquez sur Déployer un modèle.
Sélectionnez "Déployer en tant que nouveau modèle" et saisissez un nom de modèle. Ensuite, cliquez sur Confirmer.
Sur la page Créer une version, saisissez un nom de version, tel que
v1
, et conservez les paramètres par défaut pour tous les autres champs. Cliquez sur Enregistrer.Sur la page Informations sur le modèle, le nom de votre version s'affiche. La création de la version prend quelques minutes. Lorsque la version est prête, une coche apparaît à côté de son nom.
Cliquez sur le nom de la version (
v1
) pour accéder à la page Informations sur la version. À l'étape suivante de ce tutoriel, vous allez envoyer une requête de prédiction.
Obtenir des prédictions en ligne
Lorsque vous demandez des prédictions, vous devez formater les données d'entrée au format JSON de la manière attendue par le modèle. Les modèles BERT actuels ne précalculent pas automatiquement les entrées.
Console
Sur la page Informations sur la version de
v1
, la version que vous venez de créer, vous pouvez envoyer un exemple de requête de prédiction.Sélectionnez l'onglet Test et utilisation.
Copiez l'exemple suivant dans le champ de saisie :
{ "instances": [ { "input_mask": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "input_type_ids":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "input_word_ids": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] } ] }
Cliquez sur Test.
Attendez quelques instants et un vecteur de prédiction devrait être renvoyé.
Étape suivante
Dans ce tutoriel, vous avez entraîné le modèle BERT à l'aide d'un exemple d'ensemble de données. Dans la plupart des cas, les résultats de cet entraînement ne sont pas utilisables pour l'inférence. Afin d'utiliser un modèle pour l'inférence, vous pouvez entraîner les données sur un ensemble de données accessible au public ou sur votre propre ensemble de données. Les modèles entraînés sur des appareils Cloud TPU nécessitent des ensembles de données au format TFRecord.
Vous pouvez utiliser l'exemple d'outil de conversion d'ensemble de données pour convertir un ensemble de données de classification d'images au format TFRecord. Si vous n'utilisez pas de modèle de classification d'images, vous devez convertir vous-même votre ensemble de données au format TFRecord. Pour en savoir plus, consultez la section TFRecord et tf.Example.
- Découvrez comment utiliser l'algorithme intégré BERT.