Recherche de site Web

Comment former des modèles d'apprentissage profond Keras sur les GPU AWS EC2 (étape par étape)


Keras est une bibliothèque d'apprentissage en profondeur Python qui offre un accès simple et pratique aux puissantes bibliothèques numériques telles que TensorFlow.

L’exécution de grands modèles d’apprentissage profond nécessite beaucoup de temps de calcul. Vous pouvez les exécuter sur votre processeur, mais cela peut prendre des heures ou des jours pour obtenir un résultat. Si vous avez accès à un GPU sur votre bureau, vous pouvez considérablement accélérer le temps de formation de vos modèles de deep learning.

Dans cet article, vous découvrirez comment accéder aux GPU pour accélérer la formation de vos modèles d'apprentissage en profondeur en utilisant l'infrastructure Amazon Web Service (AWS). Pour quelques dollars de l'heure et souvent beaucoup moins cher, vous pouvez utiliser ce service depuis votre poste de travail ou votre ordinateur portable.

Démarrez votre projet avec mon nouveau livre Deep Learning With Python, comprenant des tutoriels pas à pas et les fichiers code source Python pour tous exemples.

Commençons.

  • Mise à jour d'octobre 2016 : exemples mis à jour pour Keras 1.1.0.
  • Mise à jour de mars 2017 : mise à jour pour utiliser la nouvelle AMI, Keras 2.0.2 et TensorFlow 1.0.
  • Mise à jour de février 2019 : mise à jour pour utiliser les nouvelles « AMI Deep Learning » et « p3.2xlarge ».

Présentation du didacticiel

Le processus est assez simple car la plupart du travail a déjà été fait pour nous.

Vous trouverez ci-dessous un aperçu du processus.

  1. Configurez votre compte AWS.
  2. Lancez votre instance AWS.
  3. Connectez-vous et exécutez votre code.
  4. Fermez votre instance AWS.

Remarque : l'utilisation d'une instance de serveur virtuel sur Amazon coûte de l'argent. Le coût est faible pour le développement de modèles ad hoc (par exemple, moins d'un dollar américain par heure), c'est pourquoi c'est si attrayant, mais ce n'est pas gratuit.

L'instance de serveur exécute Linux. Il est souhaitable, mais pas obligatoire, que vous sachiez comment naviguer sous Linux ou dans un environnement de type Unix. Nous exécutons simplement nos scripts Python, aucune compétence avancée n'est donc nécessaire.

1. Configurez votre compte AWS

Vous avez besoin d'un compte sur Amazon Web Services.

  • 1. Vous pouvez créer un compte via le portail Amazon Web Services et cliquer sur « Se connecter à la console ». De là, vous pouvez vous connecter en utilisant un compte Amazon existant ou créer un nouveau compte.

  • 2. Vous devrez fournir vos coordonnées ainsi qu'une carte de crédit valide qu'Amazon peut facturer. Le processus est beaucoup plus rapide si vous êtes déjà client Amazon et que votre carte de crédit est enregistrée.

Une fois que vous disposez d'un compte, vous pouvez vous connecter à la console Amazon Web Services.

Vous verrez une gamme de services différents auxquels vous pouvez accéder.

2. Lancez votre instance AWS

Maintenant que vous disposez d'un compte AWS, vous souhaitez lancer une instance de serveur virtuel EC2 sur laquelle vous pouvez exécuter Keras.

Lancer une instance est aussi simple que de sélectionner l’image à charger et de démarrer le serveur virtuel. Heureusement, il existe déjà une image disponible qui contient presque tout ce dont nous avons besoin. Elle s'appelle Deep Learning AMI (Amazon Linux) et a été créée et est maintenue par Amazon. Lançons-le comme exemple.

  • 1. Connectez-vous à votre console AWS si ce n'est pas déjà fait.

  • 2. Cliquez sur EC2 pour lancer un nouveau serveur virtuel.
  • 3. Sélectionnez « US West Orgeon » dans la liste déroulante située dans le coin supérieur droit. C'est important sinon vous ne pourrez pas trouver l'image que nous prévoyons d'utiliser.
  • 4. Cliquez sur le bouton « Lancer l'instance ».
  • 5. Cliquez sur « AMI communautaires ». Une AMI est une image machine Amazon. Il s'agit d'une instance gelée d'un serveur que vous pouvez sélectionner et instancier sur un nouveau serveur virtuel.

  • 6. Saisissez « Deep Learning AMI » dans la zone de recherche « Rechercher des AMI de communauté » et appuyez sur Entrée.

  • 7. Cliquez sur « Sélectionner » pour choisir l'AMI dans le résultat de la recherche.
  • 8. Vous devez maintenant sélectionner le matériel sur lequel exécuter l'image. Faites défiler vers le bas et sélectionnez le matériel « p3.2xlarge » (je recommandais les instances g2 ou g3 et les instances p2, mais les instances p3 sont plus récentes et plus rapides). Cela inclut un GPU Tesla V100 que nous pouvons utiliser pour augmenter considérablement la vitesse d'entraînement de nos modèles. Il comprend également 8 cœurs de processeur, 61 Go de RAM et 16 Go de RAM GPU. Remarque : l'utilisation de cette instance coûtera environ 3 USD/heure.

  • 9. Cliquez sur « Vérifier et lancer » pour finaliser la configuration de votre instance de serveur.
  • 10. Cliquez sur le bouton « Lancer ».
  • 11. Sélectionnez votre paire de clés.

    • Si vous possédez une paire de clés parce que vous avez déjà utilisé EC2, sélectionnez « Choisir une paire de clés existante » et choisissez votre paire de clés dans la liste. Cochez ensuite « Je » reconnais… ».
    • Si vous n'avez pas de paire de clés, sélectionnez l'option « Créer une nouvelle paire de clés » et entrez un « Nom de paire de clés » tel que keras-keypair. Cliquez sur le bouton « Télécharger la paire de clés ».

  • 12. Ouvrez un terminal et modifiez le répertoire où vous avez téléchargé votre paire de clés.
  • 13. Si vous ne l'avez pas déjà fait, limitez les autorisations d'accès à votre fichier de paire de clés. Ceci est requis dans le cadre de l’accès SSH à votre serveur. Par exemple:
cd Downloads
chmod 600 keras-aws-keypair.pem
  • 14. Cliquez sur « Lancer les instances ». Si c'est la première fois que vous utilisez AWS, Amazon devra peut-être valider votre demande, ce qui peut prendre jusqu'à 2 heures (souvent quelques minutes seulement).
  • 15. Cliquez sur « Afficher les instances » pour consulter l'état de votre instance.

Votre serveur est maintenant opérationnel et prêt à vous connecter.

3. Connectez-vous, configurez et exécutez

Maintenant que vous avez lancé votre instance de serveur, il est temps de vous connecter et de commencer à l'utiliser.

  • 1. Cliquez sur « Afficher les instances » dans votre console Amazon EC2 si ce n'est pas déjà fait.
  • 2. Copiez « IP publique » (en bas de l'écran dans Description) dans le presse-papiers. Dans cet exemple, mon adresse IP est 54.186.97.77. N'utilisez pas cette adresse IP, votre adresse IP sera différente.
  • 3. Ouvrez un terminal et modifiez le répertoire où vous avez téléchargé votre paire de clés. Connectez-vous à votre serveur via SSH, par exemple :
ssh -i keras-aws-keypair.pem ec2-user@54.186.97.77
  • 4. Lorsque vous y êtes invité, tapez « oui » et appuyez sur Entrée.

Vous êtes maintenant connecté à votre serveur.

L'instance vous demandera quel environnement Python vous souhaitez utiliser. Je recommande d'utiliser :

TensorFlow(+Keras2) with Python3 (CUDA 9.0 and Intel MKL-DNN)

Vous pouvez activer cet environnement virtuel en tapant :

source activate tensorflow_p36

Cela ne prendra qu'une minute.

Vous êtes maintenant prêt à commencer à entraîner des modèles de réseaux neuronaux d’apprentissage profond.

Vous cherchez quelque chose à essayer sur votre nouvelle instance, consultez ce tutoriel :

  • Développez votre premier réseau de neurones en Python avec Keras étape par étape

4. Fermez votre instance AWS

Lorsque vous avez terminé votre travail, vous devez fermer votre instance.

N'oubliez pas que vous êtes facturé en fonction de la durée d'utilisation de l'instance. C'est bon marché, mais vous ne voulez pas laisser une instance activée si vous ne l'utilisez pas.

  • 1. Déconnectez-vous de votre instance au terminal, vous pouvez par exemple taper :
exit
  • 2. Connectez-vous à votre compte AWS avec votre navigateur Web.
  • 3. Cliquez sur EC2.
  • 4. Cliquez sur « Instances » dans le menu de gauche.

  • 5. Sélectionnez votre instance en cours d'exécution dans la liste (elle peut déjà être sélectionnée si vous n'avez qu'une seule instance en cours d'exécution).

  • 6. Cliquez sur le bouton « Actions », sélectionnez « État de l'instance » et choisissez « Terminer ». Confirmez que vous souhaitez mettre fin à votre instance en cours d'exécution.

La fermeture de l'instance et sa suppression de votre liste d'instances peuvent prendre plusieurs secondes.

Trucs et astuces pour utiliser Keras sur AWS

Vous trouverez ci-dessous quelques conseils et astuces pour tirer le meilleur parti de l'utilisation de Keras sur les instances AWS.

  • Concevez une suite d'expériences à exécuter au préalable. Les expériences peuvent prendre beaucoup de temps et vous payez pour le temps que vous utilisez. Prenez le temps de concevoir un lot d'expériences à exécuter sur AWS. Mettez chacun dans un fichier séparé et appelez-les tour à tour à partir d'un autre script. Cela vous permettra de répondre à plusieurs questions sur une longue période, peut-être du jour au lendemain.
  • Exécutez des scripts en arrière-plan. Cela vous permettra de fermer votre terminal et d'éteindre votre ordinateur pendant que votre expérience est en cours.

Vous pouvez le faire facilement comme suit :

nohup /path/to/script >/path/to/script.log 2>&1 < /dev/null &

Vous pourrez ensuite vérifier l'état et les résultats dans votre fichier script.log ultérieurement. En savoir plus sur nohup.

  • Fermez toujours votre instance à la fin de vos tests. Vous ne voulez pas être surpris par une facture AWS très importante.
  • Essayez les instances ponctuelles pour une option moins chère mais moins fiable. Amazon vend le temps inutilisé sur son matériel à un prix beaucoup moins cher, mais au prix d'une éventuelle fermeture de votre instance à tout moment. Si vous êtes en train d’apprendre ou si vos expériences ne sont pas critiques, cela pourrait être une option idéale pour vous. Vous pouvez accéder aux instances ponctuelles à partir de l'option « Instance ponctuelle » dans le menu de gauche de votre console Web EC2.

Pour plus d'aide sur les recopies de ligne de commande à utiliser sur AWS, consultez l'article :

  • 10 recettes de ligne de commande pour le Deep Learning sur Amazon Web Services

Plus de ressources pour le Deep Learning sur AWS

Vous trouverez ci-dessous une liste de ressources pour en savoir plus sur AWS et la création d'un apprentissage profond dans le cloud.

  • Une introduction à Amazon Elastic Compute Cloud (EC2) si vous êtes nouveau dans tout cela
  • Une introduction à Amazon Machine Images (AMI)
  • AMI Deep Learning (Amazon Linux) sur AMI Marketplace.
  • Instances P3 EC2

Résumé

Dans cet article, vous avez découvert comment développer et évaluer vos grands modèles d'apprentissage profond dans Keras à l'aide de GPU sur Amazon Web Service. Vous avez appris :

  • Amazon Web Services avec Elastic Compute Cloud offre un moyen abordable d'exécuter de grands modèles d'apprentissage en profondeur sur du matériel GPU.
  • Comment configurer et lancer un serveur EC2 pour des expériences d'apprentissage en profondeur.
  • Comment mettre à jour la version Keras sur le serveur et confirmer que le système fonctionne correctement.
  • Comment exécuter des expériences Keras sur des instances AWS par lots en tant que tâches en arrière-plan.

Avez-vous des questions sur l'exécution de vos modèles sur AWS ou sur cet article ? Posez vos questions dans les commentaires et je ferai de mon mieux pour y répondre.

Articles connexes