Former un modèle de deep learning

avec des AWS Deep Learning Containers sur Amazon EC2

Les AWS Deep Learning Containers (DL Containers) sont des images Docker dans lesquelles sont préinstallés des frameworks de deep learning et destinées à faciliter le déploiement rapide d'environnements de machine learning personnalisés. La simplification et l'accélération s'expliquent par l'élimination des tâches complexes de création et d'optimisation de vos environnements de A à Z.

Grâce aux DL Containers, les développeurs et scientifiques des données peuvent rapidement ajouter le machine learning à leurs applications conteneurisées et déployées sur Amazon Elastic Container Service for Kubernetes (Amazon EKS), un environnement Kubernetes autogéré, Amazon Elastic Container Service (Amazon ECS) et Amazon EC2.

Dans ce didacticiel, vous allez former un modèle de machine learning TensorFlow sur une instance Amazon EC2 en utilisant les AWS Deep Learning Containers.

À propos de ce didacticiel
Durée 10 minutes                                           
Coût Moins de 1 USD
Cas d’utilisation Machine learning
Produits AWS Deep Learning Containers, Amazon EC2, Amazon ECR
Public ciblé Développeurs, scientifiques des données
Niveau Débutant
Dernière mise à jour 27 mars 2019

1. S'inscrire à AWS

Vous avez besoin d'un compte AWS pour suivre ce didacticiel. L’utilisation des AWS Deep Learning Containers avec ce didacticiel n’entraîne aucun frais supplémentaire. Vous ne payez que l’instance Amazon c5.large utilisée dans ce didacticiel, ce qui reviendra à moins de 1 USD une fois toutes les étapes terminées à la fin de ce didacticiel. 

2. Ajouter des autorisations pour l’accès à Amazon ECR

Les images AWS Deep Learning Container sont hébergées sur Amazon Elastic Container Registry (ECR), un registre de conteneurs Docker entièrement géré qui permet aux développeurs de stocker, gérer et déployer facilement des images de conteneur Docker. À cette étape, vous allez autoriser un utilisateur IAM existant à accéder à Amazon ECR (à l’aide de la stratégie AmazonECS_FullAccess).

Si vous n’avez pas d’utilisateur IAM, référez-vous à la documentation IAM pour obtenir plus d’informations.

a. Accès à la console IAM

Ouvrez AWS Management Console afin de maintenir ouvert le guide détaillé. Lorsque cet écran se charge, saisissez votre nom d'utilisateur et votre mot de passe pour commencer. Saisissez ensuite IAM dans la barre de recherche, puis sélectionnez IAM pour ouvrir la console de service.

b. Sélection des utilisateurs

Dans le volet de navigation sur la gauche, cliquez sur Utilisateurs.

c. Ajout des autorisations

Vous allez à présent ajouter des autorisations à un nouvel utilisateur IAM que vous avez créé ou déjà existant. Sur la page récapitulative des utilisateurs IAM, sélectionnez Ajouter des autorisations.

d. Ajout de la stratégie ECS_FullAccess

Sélectionner Joindre directement des stratégies existantes et recherchez ECS_FullAccess. Sélectionnez la stratégie Amazon_FullAccess et cliquez sur Vérifier puis sur Ajouter des autorisations.

e. Ajout d’une stratégie en ligne

Sur la page récapitulative des utilisateurs IAM, sélectionnez Ajouter une stratégie en ligne.

f. Copie de la stratégie JSON

Sélectionnez l’onglet JSON et collez la stratégie suivante :

{
       "Version": "2012-10-17",
       "Statement": [
              {
                     "Action": "ecr:*",
                     "Effect": "Allow",
                     "Resource": "*"
              }
       ]
}

Enregistrez cette stratégie sous « ECR » et sélectionnez Créer une stratégie.

 

3. Lancement d’une instance d’AMI AWS Deep Learning Base

Dans ce didacticiel, nous allons utiliser les AWS Deep Learning Containers sur des Amazon Machine Images (AMI) AWS Deep Learning Base, qui sont préalablement équipées des dépendances nécessaires telles que les pilotes Nvidia, docker et nvidia-docker. Grâce à ces packages, vous pouvez exécuter des Deep Learning Containers sur n’importe quelle AMI.

a. Accès à la console EC2

Revenez à l’écran d’accueil d’AWS Management Console et saisissez EC2 dans la barre de recherche, puis sélectionnez EC2 pour ouvrir la console de service.

b. Lancement d’une instance Amazon EC2

Revenez à la console Amazon EC2 et cliquez sur le bouton Lancer une instance.

c. Sélection de l'AMI AWS Deep Learning Base

Cliquez sur l'onglet AWS Marketplace sur la gauche, puis recherchez deep learning base ubuntu. Sélectionnez l'AMI Deep Learning Base (Ubuntu). Vous pouvez également sélectionner l’AMI Deep Learning Base (Amazon Linux).

d. Sélection du type d’instance

Sélectionnez un type d’instance Amazon EC2. Amazon Elastic Compute Cloud (EC2) est le service AWS servant à créer et exploiter des machines virtuelles dans le cloud. AWS appelle ces machines virtuelles des « instances ».

Pour ce didacticiel, nous allons utiliser une instance c5.large, mais vous pouvez choisir d’autres types d'instances, notamment des instances P3 basées sur GPU.

Sélectionnez Vérifier et lancer.

e. Lancement de votre instance

Vérifiez les détails de votre instance et sélectionnez Lancer.

f. Création d’un nouveau fichier clé privé

Sur l'écran suivant, vous allez devoir choisir une paire de clés existante ou en créer une. Une paire de clés sert à accéder en toute sécurité à votre instance à l’aide du protocole SSH. AWS stocke la partie publique de la paire de clés qui fonctionne comme une serrure pour la maison. Vous téléchargez et utilisez la partie privée de la paire de clés qui fonctionne comme une clé pour la serrure.

Sélectionnez Créez une nouvelle paire de clés et nommez-la. Sélectionnez ensuite Télécharger la paire de clés et stockez votre clé dans un emplacement sûr. Si vous perdez votre clé privée, vous ne pourrez pas accéder à votre instance. Si quelqu’un d’autre a accès à votre clé, il pourra accéder à votre instance.

Si vous avez créé auparavant un fichier de clé privé auquel vous avez encore accès, vous pouvez utiliser la clé privée existante en sélectionnant Sélectionner un paire de clés existante.

g. Consultation des détails d’instance

Sélectionnez l’ID d’instance pour consulter les détails relatifs à l’instance Amazon EC2 que vous venez de créer dans la console. 

4. Connexion à votre instance

Durant cette étape, vous allez vous connecter à l’instance que vous venez de lancer à l’aide du protocole SSH. Les instructions ci-dessous font référence à un environnement Mac/Linux. Si vous utilisez Windows, passez à l’étape 4 de ce didacticiel.

a. Recherche et copie du DNS public de votre instance

Sous l’onglet Description, copiez le DNS public de votre instance Amazon EC2 (IPv4).

b. Ouverture de votre terminal de ligne de commande

Dans votre terminal, utilisez les commandes suivantes pour accéder au répertoire dans lequel se trouve votre clé de sécurité, puis connectez-vous à votre instance à l'aide du protocole SSH.

cd /Users/<your_username>/Downloads/

chmod 0400 <your .pem filename>

ssh -L localhost:8888:localhost:8888 -i <your .pem filename> ubuntu@<your instance DNS>

5. Connexion à Amazon ECR

Les images AWS Deep Learning Container sont hébergées sur Amazon Elastic Container Registry (ECR), un registre de conteneurs Docker entièrement géré qui permet aux développeurs de stocker, gérer et déployer facilement des images de conteneur Docker. Durant cette étape, vous allez vous connecter à Amazon ECR et en vérifier l’accès.

a. Configuration de votre instance EC2 avec vos identifiants AWS

Vous devez indiquer votre ID de clé d’accès AWS et votre clé d’accès secrète. Si vous ne disposez pas encore de ces informations, vous pouvez cliquer ici pour créer un ID de clé d’accès et une clé d’accès secrète.

b. Connexion à Amazon ECR

Vous allez utiliser la commande ci-dessous pour vous connecter à Amazon ECR :

$(aws ecr get-login --region us-east-1 --no-include-email --registry-ids 763104351884)

Remarque : vous devez inclure le symbole « $ » et des parenthèses dans votre commande. Vous verrez « Connexion réussie » à la fin de cette étape.

 

6. Exécution de la formation TensorFlow avec les Deep Learning Containers

Durant cette étape, vous allez utiliser une image d’AWS Deep Learning Container pour la formation TensorFlow sur des instances CPU avec Python 3.6.

a. Exécution d’AWS Deep Learning Containers

Vous allez à présent exécuter des images d’AWS Deep Learning Container sur votre instance EC2 à l’aide de la commande ci-dessous. Cette commande va automatiquement extraire l’image de Deep Learning Container si elle n’existe pas en local.

docker run -it 763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-training:1.13-cpu-py36-ubuntu16.04

Remarque : cette étape peut prendre quelques minutes, suivant la taille de l’image. Si vous utilisez une instance GPU, utilisez « nvidia-docker » au lieu de « docker ». Une fois cette étape terminée avec succès, vous allez saisir une invite bash pour votre conteneur.

 

b. Extraction d’un modèle d’exemple pour la formation

Nous allons cloner le répertoire Keras, qui comprend des exemples de script Python pour la formation des modèles.

git clone https://github.com/fchollet/keras.git

c. Démarrage de la formation

Commencez à former le modèle canonique MNIST CNN à l’aide de la commande suivante :

python keras/examples/mnist_cnn.py

Vous venez de démarrer la formation avec votre AWS Deep Learning Container.

 

7. Résiliation de vos ressources

Durant cette étape, vous allez résilier l’instance Amazon EC2 que vous avez créée au cours de ce didacticiel.

Important : il est conseillé de résilier les ressources qui ne sont pas utilisées de façon active, afin de réduire les coûts. Des ressources non résiliées peuvent entraîner des frais sur votre compte.

a. Sélection de l’instance en cours d’exécution

Dans la console Amazon EC2, sélectionnez Instances en cours d’exécution.

 

b. Résiliation de votre instance EC2

Sélectionnez l'instance EC2 que vous avez créée, puis choisissez Actions > État de l’instance > Résilier.

c. Confirmation de la résiliation

Un message va vous demander de confirmer votre résiliation. Sélectionnez Oui, résilier.

Remarque : ce processus peut durer quelques secondes. Une fois votre instance résiliée, État de l’instance indique Résiliée dans la console EC2.

 

Félicitations !

Vous venez de former un modèle MNIST CNN avec TensorFlow à l’aide d’AWS Deep Learning Containers.

Les AWS DL Containers peuvent vous servir à former inférer sur des ressources CPU et GPU sur Amazon EC2, Amazon ECS, Amazon EKS et Kubernetes.

Servez-vous de ces images de deep learning stables, optimisées pour les performances et l’évolutivité sur AWS, pour créer vos propres environnements de deep learning.

Ce didacticiel vous a-t-il été utile ?