Démarrer avec les Transformers sur Habana Gaudi
Commencer avec les Transformers sur Habana Gaudi.
Il y a quelques semaines, nous avons eu le plaisir d’annoncer que Habana Labs et Hugging Face allaient collaborer pour accélérer l’entraînement des modèles Transformer.
Les accélérations Habana Gaudi offrent jusqu’à 40% de meilleures performances au meilleur prix pour l’entraînement des modèles d’apprentissage automatique par rapport aux dernières instances Amazon EC2 basées sur GPU. Nous sommes très excités de pouvoir offrir ces avantages de performance au meilleur prix aux Transformers 🚀
Dans ce billet pratique, je vais vous montrer comment configurer rapidement une instance Habana Gaudi sur Amazon Web Services, puis affiner un modèle BERT pour la classification de texte. Comme d’habitude, tout le code est fourni afin que vous puissiez le réutiliser dans vos projets.
Commençons !
- Directeur des connaissances en apprentissage automatique
- Classification d’opinions avec Kili et HuggingFace AutoTrain
- Accélérer la formation de modèles volumineux en utilisant la parallélisation des données entièrement partagées de PyTorch
Configuration d’une instance Habana Gaudi sur AWS
La manière la plus simple de travailler avec les accélérations Habana Gaudi est de lancer une instance Amazon EC2 DL1. Ces instances sont équipées de 8 processeurs Habana Gaudi qui peuvent facilement être mis au travail grâce à l’image de machine virtuelle (AMI) Habana Deep Learning d’Amazon. Cette AMI est préinstallée avec le kit de développement logiciel (SDK) Habana SynapseAI® et les outils nécessaires pour exécuter des conteneurs Docker accélérés par Gaudi. Si vous souhaitez utiliser d’autres AMI ou conteneurs, des instructions sont disponibles dans la documentation Habana.
À partir de la console EC2 dans la région us-east-1, je clique d’abord sur Lancer une instance et je définis un nom pour l’instance (“habana-demo-julsimon”).
Ensuite, je recherche les AMI Habana sur le marché Amazon.
Je choisis l’AMI de base Habana Deep Learning (Ubuntu 20.04).
Ensuite, je choisis la taille de l’instance dl1.24xlarge (la seule taille disponible).
Ensuite, je sélectionne la paire de clés que j’utiliserai pour me connecter à l’instance avec ssh
. Si vous n’avez pas de paire de clés, vous pouvez en créer une sur place.
Comme étape suivante, je m’assure que l’instance autorise le trafic entrant ssh
. Je ne restreins pas l’adresse source pour simplifier, mais vous devriez certainement le faire dans votre compte.
Par défaut, cette AMI démarrera une instance avec 8 Go de stockage Amazon EBS, ce qui ne sera pas suffisant ici. J’augmente le stockage à 50 Go.
Ensuite, j’attribue un rôle Amazon IAM à l’instance. Dans la vie réelle, ce rôle devrait avoir l’ensemble minimal de permissions nécessaires pour exécuter votre tâche d’entraînement, comme la capacité de lire des données à partir de l’un de vos compartiments Amazon S3. Ce rôle n’est pas nécessaire ici car l’ensemble de données sera téléchargé depuis le hub Hugging Face. Si vous n’êtes pas familier avec IAM, je vous recommande vivement de lire la documentation de Démarrage.
Ensuite, je demande à EC2 de provisionner mon instance en tant qu’instance Spot, un excellent moyen de réduire le coût de 13,11 $ par heure.
Enfin, je lance l’instance. Quelques minutes plus tard, l’instance est prête et je peux me connecter à celle-ci avec ssh
. Les utilisateurs de Windows peuvent faire de même avec PuTTY en suivant la documentation.
ssh -i ~/.ssh/julsimon-keypair.pem [email protected]
Sur cette instance, la dernière étape de configuration consiste à récupérer le conteneur Habana pour PyTorch, le framework que j’utiliserai pour affiner mon modèle. Vous pouvez trouver des informations sur d’autres conteneurs pré-construits et sur la façon de créer les vôtres dans la documentation Habana.
docker pull \
vault.habana.ai/gaudi-docker/1.5.0/ubuntu20.04/habanalabs/pytorch-installer-1.11.0:1.5.0-610
Une fois l’image récupérée sur l’instance, je l’exécute en mode interactif.
docker run -it \
--runtime=habana \
-e HABANA_VISIBLE_DEVICES=all \
-e OMPI_MCA_btl_vader_single_copy_mechanism=none \
--cap-add=sys_nice \
--net=host \
--ipc=host vault.habana.ai/gaudi-docker/1.5.0/ubuntu20.04/habanalabs/pytorch-installer-1.11.0:1.5.0-610
Je suis maintenant prêt à affiner mon modèle.
Affiner un modèle de classification de texte sur Habana Gaudi
Je commence par cloner le référentiel Optimum Habana à l’intérieur du conteneur que je viens de démarrer.
git clone https://github.com/huggingface/optimum-habana.git
Ensuite, j’installe le package Optimum Habana à partir de la source.
cd optimum-habana
pip install .
Ensuite, je me rends dans le sous-répertoire contenant l’exemple de classification de texte et j’installe les packages Python requis.
cd examples/text-classification
pip install -r requirements.txt
Je peux maintenant lancer le travail d’entraînement, qui télécharge le modèle bert-large-uncased-whole-word-masking à partir du hub Hugging Face et l’affine sur la tâche MRPC du benchmark GLUE.
Veuillez noter que je récupère la configuration Habana Gaudi pour BERT depuis le hub Hugging Face, mais vous pouvez également utiliser la vôtre. De plus, d’autres modèles populaires sont pris en charge et vous pouvez trouver leur fichier de configuration dans l’organisation Habana.
python run_glue.py \
--model_name_or_path bert-large-uncased-whole-word-masking \
--gaudi_config_name Habana/bert-large-uncased-whole-word-masking \
--task_name mrpc \
--do_train \
--do_eval \
--per_device_train_batch_size 32 \
--learning_rate 3e-5 \
--num_train_epochs 3 \
--max_seq_length 128 \
--use_habana \
--use_lazy_mode \
--output_dir ./output/mrpc/
Après 2 minutes et 12 secondes, le travail est terminé et a obtenu un excellent score F1 de 0,9181, qui pourrait certainement s’améliorer avec plus d’époques.
***** métriques d'entraînement *****
epoch = 3.0
train_loss = 0,371
train_runtime = 0:02:12.85
train_samples = 3668
train_samples_per_second = 82,824
train_steps_per_second = 2,597
***** métriques d'évaluation *****
epoch = 3.0
eval_accuracy = 0,8505
eval_combined_score = 0,8736
eval_f1 = 0,8968
eval_loss = 0,385
eval_runtime = 0:00:06.45
eval_samples = 408
eval_samples_per_second = 63,206
eval_steps_per_second = 7,901
Enfin, je termine l’instance EC2 pour éviter des frais inutiles. En regardant le résumé des économies dans la console EC2, je constate avoir économisé 70% grâce aux instances Spot, ne payant que 3,93 $ par heure au lieu de 13,11 $.
Comme vous pouvez le constater, la combinaison de Transformers, Habana Gaudi et des instances AWS est puissante, simple et rentable. Essayez et faites-nous part de vos commentaires. Nous sommes ouverts à vos questions et suggestions sur le forum Hugging Face.
N’hésitez pas à contacter Habana pour en savoir plus sur la formation des modèles Hugging Face sur les processeurs Gaudi.
We will continue to update IPGirl; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- Une introduction à l’apprentissage par renforcement profond
- Accélération de l’inférence avec des pipelines Optimum et Transformers
- Directeur des connaissances en apprentissage automatique [Partie 3 Édition Finance]
- Bienvenue fastai sur le Hugging Face Hub
- Nous avons collecté 100 millions de dollars pour l’apprentissage automatique ouvert et collaboratif 🚀
- L’appel à candidatures pour le Programme des Ambassadeurs Étudiants est ouvert !
- Directeur des connaissances en apprentissage automatique [Partie 2 Édition SaaS]