Exécuter le modèle de reconnaissance vocale automatique

Ce tutoriel décrit l'entraînement d'un modèle de reconnaissance vocale automatique sur une ressource Cloud TPU. Pour ce faire, vous allez utiliser l'ensemble de données Librispeech ASR corpus, qui est publiquement accessible sur Tensor2Tensor.

Le modèle de reconnaissance vocale ne constitue qu'un des modèles de la bibliothèque Tensor2Tensor. Tensor2Tensor (T2T) est une bibliothèque de modèles et d'ensembles de données de deep learning ainsi qu'un ensemble de scripts permettant d'entraîner les modèles et de télécharger et préparer les données. Le modèle de reconnaissance vocale permet d'effectuer des transcriptions audio.

Objectifs

  • Créer un bucket Cloud Storage pour stocker votre ensemble de données et la sortie du modèle
  • Téléchargez et préparez l'ensemble de données de la bibliothèque Tensor2Tensor.
  • Exécuter la tâche d'entraînement
  • Vérifier les résultats

Coûts

Ce tutoriel utilise des composants facturables de Google Cloud, dont :

  • Instance
  • Cloud TPU
  • Cloud Storage

Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

Avant de commencer

Avant de commencer ce tutoriel, vérifiez que votre projet Google Cloud est correctement configuré.

  1. Connectez-vous à votre compte Google.

    Si vous n'en possédez pas déjà un, vous devez en créer un.

  2. Dans Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Cloud.

    Accéder à la page de sélection du projet

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.

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

Configurer vos ressources

Cette section fournit des informations sur la configuration des buckets Cloud Storage, des VM et des ressources Cloud TPU pour les tutoriels.

  1. Ouvrez une fenêtre Cloud Shell.

    Ouvrir Cloud Shell

  2. Créez une variable pour l'ID de votre projet.

    export PROJECT_ID=project-id
    
  3. Configurez l'outil de ligne de commande gcloud pour utiliser le projet dans lequel vous souhaitez créer Cloud TPU.

    gcloud config set project ${PROJECT_ID}
    
  4. Créez un bucket Cloud Storage à l'aide de la commande suivante :

    gsutil mb -p ${PROJECT_ID} -c standard -l europe-west4 -b on gs://bucket-name
    

    Ce bucket Cloud Storage stocke les données que vous utilisez pour entraîner votre modèle, ainsi que les résultats de l'entraînement. L'outil ctpu up utilisé dans ce tutoriel définit les autorisations par défaut pour le compte de service Cloud TPU. Si vous souhaitez utiliser des autorisations plus précises, vérifiez les autorisations de niveau d'accès.

    L'emplacement du bucket doit se trouver dans la même région que votre machine virtuelle (VM) et votre nœud TPU. Les VM et les nœuds TPU sont situés dans des zones spécifiques, qui sont des subdivisions au sein d'une région.

  5. Lancez les ressources Compute Engine et Cloud TPU requises à l'aide de la commande ctpu up.

    ctpu up --zone=europe-west4-a \
     --vm-only \
     --disk-size-gb=300 \
     --machine-type=n1-standard-8 \
     --tf-version=1.15.3 \
     --name=auto-speech-recog-tutorial
    .

    Pour plus d'informations sur l'utilitaire CTPU, consultez la section Référence CTPU.

  6. Lorsque vous y êtes invité, appuyez sur y pour créer vos ressources Cloud TPU.

    .

Une fois la commande ctpu up terminée, vérifiez que l'invite de l'interface système est passée de username@projectname à username@vm-name. Cette modification indique que vous êtes maintenant connecté à votre VM Compute Engine. Si vous n'êtes pas connecté à l'instance Compute Engine, exécutez la commande suivante :

gcloud compute ssh auto-speech-recog-tutorial --zone=europe-west4-a

À partir de là, le préfixe (vm)$ signifie que vous devez exécuter la commande sur l'instance de VM Compute Engine.

  1. Créez les variables d'environnement suivantes pour les répertoires :

    (vm)$ STORAGE_BUCKET=gs://bucket-name
    
    (vm)$ TPU_NAME=auto-speech-recog-tutorial
    (vm)$ DATA_DIR=$STORAGE_BUCKET/data/
    (vm)$ OUT_DIR=$STORAGE_BUCKET/output
    (vm)$ export TMP_DIR=~/tmp
    

Générer les ensembles de données d'entraînement et d'évaluation

Dans son script t2t-datagen, T2T propose des packages de génération de données pour de nombreux ensembles de données Open Source courants. Ce script télécharge les données, les prétraite et les prépare pour l'entraînement.

Sur la VM Compute Engine, effectuez les étapes ci-dessous :

  1. Utilisez le script t2t-datagen pour générer à la fois l'ensemble de données complet et la version épurée que vous utiliserez pour l'évaluation.

    L'import audio t2t-datagen utilise sox pour générer des ondulations normalisées. Installez-le sur votre machine virtuelle Compute Engine puis exécutez les commandes t2t-datagen suivantes.

    (vm)$  sudo apt-get install sox
    (vm)$  t2t-datagen --problem=librispeech --data_dir=$DATA_DIR --tmp_dir=$TMP_DIR
    (vm)$  t2t-datagen --problem=librispeech_clean --data_dir=$DATA_DIR --tmp_dir=$TMP_DIR

Le problème librispeech_train_full_test_clean effectue l'entraînement sur l'ensemble de données complet, mais l'évaluation seulement sur l'ensemble de données propre.

Vous pouvez également vous servir de librispeech_clean_small qui est une version plus petite de l'ensemble de données propre.

Vous pouvez afficher les données dans Cloud Storage en accédant à Google Cloud Console et en sélectionnant Stockage dans le menu de gauche. Cliquez sur le nom du bucket créé pour ce tutoriel.

Entraîner le modèle

Pour entraîner un modèle sur une ressource Cloud TPU, exécutez l'application d'entraînement en utilisant des lots de grande taille et des séquences tronquées :

(vm)$ t2t-trainer \
  --model=transformer \
  --hparams_set=transformer_librispeech_tpu \
  --problem=librispeech_train_full_test_clean \
  --train_steps=210000 \
  --eval_steps=3 \
  --local_eval_frequency=100 \
  --data_dir=$DATA_DIR \
  --output_dir=$OUT_DIR \
  --use_tpu \
  --cloud_tpu_name=$TPU_NAME

Une fois cette étape terminée, effectuez à nouveau l'entraînement sur davantage de pas, en utilisant une taille de lot inférieure et des séquences complètes. Cet entraînement dure environ 11 heures sur un nœud TPU v3-8.

(vm)$ t2t-trainer \
  --model=transformer \
  --hparams_set=transformer_librispeech_tpu \
  --hparams=max_length=295650,max_input_seq_length=3650,max_target_seq_length=650,batch_size=6 \
  --problem=librispeech_train_full_test_clean \
  --train_steps=230000 \
  --eval_steps=3 \
  --local_eval_frequency=100 \
  --data_dir=$DATA_DIR \
  --output_dir=$OUT_DIR \
  --use_tpu \
  --cloud_tpu_name=$TPU_NAME

Nettoyer

Pour éviter que les ressources utilisées dans ce tutoriel soient facturées sur votre compte Google Cloud Platform :

  1. Déconnectez-vous de l'instance Compute Engine, si vous ne l'avez pas déjà fait :

    (vm)$ exit
    

    Votre invite devrait maintenant être username@projectname, indiquant que vous êtes dans Cloud Shell.

  2. Dans Cloud Shell, exécutez la commande ctpu delete avec l'option --zone utilisée lors de votre configuration Cloud TPU pour supprimer votre VM Compute Engine et votre Cloud TPU :

    $ ctpu delete --zone=europe-west4-a \
      --name=auto-speech-recog-tutorial
    
  3. Exécutez ctpu status pour vérifier qu'il ne reste aucune instance allouée afin d'éviter des frais inutiles liés à l'utilisation des ressources TPU. La suppression peut prendre plusieurs minutes. Si vous n'avez plus d'instances allouées, une réponse de ce type s'affiche :

    2018/04/28 16:16:23 WARNING: Setting zone to "europe-west4-a"
    No instances currently exist.
            Compute Engine VM:     --
            Cloud TPU:             --
    
  4. Exécutez gsutil comme indiqué, en remplaçant bucket-name par le nom du bucket Cloud Storage que vous avez créé pour ce tutoriel :

    $ gsutil rm -r gs://bucket-name
    

Étape suivante

Dans ce tutoriel, vous avez entraîné le modèle de reconnaissance vocale automatique à l'aide d'un exemple d'ensemble de données. Les résultats de cet entraînement ne sont pas utilisables pour l'inférence dans la plupart des cas. 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.

Réglages d'hyperparamètres

Pour améliorer les performances du modèle avec votre ensemble de données, vous pouvez régler ses hyperparamètres. Vous trouverez des informations sur les hyperparamètres communs à tous les modèles compatibles avec des TPU sur GitHub. Des informations sur les hyperparamètres spécifiques au modèle sont disponibles dans le code source de chaque modèle. Pour en savoir plus sur ces réglages, consultez les pages Présentation des réglages d'hyperparamètres, Utiliser le service de réglage d'hyperparamètres et Régler les hyperparamètres.

Inférence

Une fois que vous avez entraîné votre modèle, vous pouvez l'utiliser pour l'inférence (également appelée prédiction). AI Platform est une solution basée sur le cloud permettant de développer, d'entraîner et de déployer des modèles de machine learning. Une fois un modèle déployé, vous pouvez utiliser le service AI Platform Prediction.