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 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. Assurez-vous que la facturation est activée pour votre projet 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}
    

    La première fois que vous exécutez cette commande dans une nouvelle VM Cloud Shell, une page Authorize Cloud Shell s'affiche. Cliquez sur Authorize en bas de la page pour permettre à gcloud d'effectuer des appels d'API GCP avec vos identifiants.

  4. Créez un compte de service pour le projet Cloud TPU.

    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
    

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

  6. Lancez les ressources Compute Engine et Cloud TPU requises à l'aide de la commande gcloud compute tpus execution-groups.

    $ gcloud compute tpus execution-groups create \
     --name=auto-speech-recog-tutorial \
     --zone=europe-west4-a \
     --tf-version=1.15.5 \
     --machine-type=n1-standard-8 \
     --disk-size=600 \
     --accelerator-type=v3-8
    

    Description des options de commande

    name
    Nom de la ressource Cloud TPU à créer.
    zone
    Zone dans laquelle vous prévoyez de créer votre Cloud TPU.
    tf-version
    La version de Tensorflow que gcloud installe sur la VM.
    machine-type
    Type de machine de la VM Compute Engine à créer.
    disk-size-gb
    Taille du disque dur en Go de la VM créée par la commande gcloud.
    accelerator-type
    Type de Cloud TPU à créer.

    Pour en savoir plus sur la commande gcloud, consultez la documentation de référence de gcloud.

  7. La configuration que vous avez spécifiée apparaît. Saisissez y pour approuver ou n pour annuler.

    Une fois l'exécution de la commande gcloud terminée, vérifiez que l'invite de l'interface système est passée de username@project à username@vm-name. Cette modification indique que vous êtes maintenant connecté à votre VM Compute Engine.

    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 lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et les ressources individuelles.

  1. Déconnectez-vous de la VM Compute Engine :

    (vm)$ exit
    

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

  2. Dans Cloud Shell, exécutez la commande gcloud compute tpus execution-groups ci-dessous pour supprimer votre VM Compute Engine et le Cloud TPU.

    $ gcloud compute tpus execution-groups delete auto-speech-recog-tutorial \
      --zone=europe-west4-a
    
  3. Vérifiez que les ressources ont été supprimées en exécutant gcloud compute tpus execution-groups list. La suppression peut prendre plusieurs minutes. Si vous obtenez une réponse semblable à celle présentée ci-dessous, vos instances ont bien été supprimées.

    $ gcloud compute tpus execution-groups list \
      --zone=europe-west4-a
    
       NAME             STATUS
    
  4. Supprimez votre bucket Cloud Storage à l'aide de gsutil, comme illustré ci-dessous. Remplacez bucket-name par le nom de votre bucket Cloud Storage.

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