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 les composants facturables suivants de Google Cloud :
- Compute Engine
- Cloud TPU
- Cloud Storage
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.
-
Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.
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.
Ouvrez une fenêtre Cloud Shell.
Créez une variable pour l'ID de votre projet.
export PROJECT_ID=project-id
Configurez l'interface de ligne de commande Google Cloud 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 surAuthorize
en bas de la page pour permettre àgcloud
d'effectuer des appels d'API GCP avec vos identifiants.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
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. La CLI gcloud utilisée dans ce tutoriel configure 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.
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 du Cloud TPU à créer.
zone
- La zone dans laquelle vous prévoyez de créer votre Cloud TPU.
tf-version
- Version de TensorFlow
gcloud
installée 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 du Cloud TPU à créer.
Pour en savoir plus sur la commande
gcloud
, consultez la documentation de référence de gcloud.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 deusername@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.
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 :
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
utilisesox
pour générer des ondulations normalisées. Installez-le sur votre machine virtuelle Compute Engine puis exécutez les commandest2t-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.
Pour afficher les données sur Cloud Storage, accédez à Google Cloud Console, puis sélectionnez 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
Effectuer un nettoyage
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 supprimez les ressources individuelles.
Déconnectez-vous de la VM Compute Engine :
(vm)$ exit
Votre invite devrait maintenant être
user@projectname
, indiquant que vous êtes dans Cloud Shell.Dans Cloud Shell, utilisez la commande
gcloud compute tpus execution-groups
présentée ci-dessous pour supprimer votre VM Compute Engine et la ressource Cloud TPU.$ gcloud compute tpus execution-groups delete auto-speech-recog-tutorial \ --zone=europe-west4-a
Vérifiez que les ressources ont été supprimées en exécutant la commande
gcloud compute tpus execution-groups list
. La suppression peut prendre plusieurs minutes. Une réponse semblable à la suivante indique que vos instances ont bien été supprimées.$ gcloud compute tpus execution-groups list \ --zone=europe-west4-a
NAME STATUS
Supprimez votre bucket Cloud Storage à l'aide de
gsutil
, comme indiqué ci-dessous. Remplacez bucket-name par le nom de votre bucket Cloud Storage.$ gsutil rm -r gs://bucket-name
Étapes suivantes
Les tutoriels TensorFlow Cloud TPU permettent généralement d'entraîner le modèle à 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. Pour utiliser un modèle d'inférence, vous pouvez entraîner les données à partir d'un ensemble de données public ou de votre propre ensemble de données. Les modèles TensorFlow entraînés sur des Cloud TPU nécessitent généralement 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 page TFRecord et tf.Example.
Réglages d'hyperparamètres
Pour améliorer les performances du modèle sur 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 aux modèles 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 votre modèle entraîné, vous pouvez l'utiliser pour l'inférence (également appelée prédiction). AI Platform est une solution 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.
- Découvrez d'autres modèles Tensor2Tensor pour les TPU.
- Testez d'autres exemples TPU.
- Découvrez les outils TPU dans TensorBoard.