Premiers pas avec l'algorithme BERT intégré

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 :

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 :

  1. 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.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  4. Activer les API AI Platform Training & Prediction and Compute Engine.

    Activer les API

  5. Installez Google Cloud CLI.
  6. Pour initialiser gcloudCLI, exécutez la commande suivante :

    gcloud init
  7. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  8. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  9. Activer les API AI Platform Training & Prediction and Compute Engine.

    Activer les API

  10. Installez Google Cloud CLI.
  11. Pour initialiser gcloudCLI, exécutez la commande suivante :

    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 terminé une tâche d'entraînement réussie.
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

  1. Accédez à la page AI Platform > Tâches :

Page AI Platform > Tâches

  1. 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é".

  2. Sélectionnez BERT comme algorithme d'entraînement

  3. 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.

  4. Sur la page suivante, utilisez les valeurs d'argument ci-dessus pour configurer la tâche d'entraînement.

  5. Attribuez un nom à votre tâche d'entraînement et utilisez le type de machine BASIC_TPU.

  6. 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 :

gsutil 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 model et de model. 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

  1. 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.

  2. 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.

  3. 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.

  4. Sélectionnez "Déployer en tant que nouveau modèle" et saisissez un nom de modèle. Ensuite, cliquez sur Confirmer.

  5. 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.

  6. 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.

  7. 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

  1. 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.

  2. 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]
            }
          ]
        }
    
  3. Cliquez sur Test.

    Attendez quelques instants et un vecteur de prédiction devrait être renvoyé.

Étapes suivantes

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.