Trainieren eines Deep-Learning-Modells

mit AWS Deep Learning Containers auf Amazon EC2

AWS Deep Learning Containers (DL Containers) sind Docker-Images, die mit Deep-Learning-Frameworks vorinstalliert sind, um die schnelle Implementierung von benutzerdefinierten Machine-Learning-Umgebungen zu vereinfachen, indem sie es Ihnen ermöglichen, den komplizierten Prozess der Erstellung und Optimierung von Umgebungen zu überspringen.

Mithilfe von AWS DL Containers können Entwickler und Daten-Wissenschaftler Machine Learning schnell zu ihren containerisierten Anwendungen, die auf Amazon Elastic Container Service for Kubernetes (Amazon EKS), selbstverwalteten Kubernetes-Services, Amazon Elastic Container Service (Amazon ECS) und Amazon EC2 bereitgestellt werden, hinzufügen.

In diesem Tutorial trainieren Sie ein TensorFlow-Machine-Learning-Modell auf einer Amazon-EC2-Instance mithilfe von AWS Deep Learning Containers.

Über dieses Tutorial
Zeit 10 Minuten                                           
Kosten Weniger als 1 USD
Anwendungsfall Machine Learning
Produkte AWS Deep Learning Containers, Amazon EC2, Amazon ECR
Zielgruppe Entwickler, Daten-Wissenschaftler
Wissensstand Einsteiger
Letzte Aktualisierung 27. März 2019

1. Bei AWS registrieren

Für dieses Tutorial benötigen Sie ein AWS-Konto. Für die Verwendung von AWS Deep Learning Containers im Rahmen dieses Tutorials fallen keine zusätzlichen Gebühren an. Sie zahlen nur für die Amazon-c5.large-Instance, die in diesem Tutorial verwendet wird. Der Preis nach dem Durchführen der Beendigungsschritte am Ende dieses Tutorials beläuft sich auf weniger als 1 USD. 

2. Hinzufügen von Berechtigungen für den Zugriff auf Amazon ECR

AWS-Deep-Learning-Container-Images werden in Amazon Elastic Container Registry (ECR) gehostet, eine vollständig verwaltete Docker-Container-Registry, die Entwicklern das Speichern, Verwalten und Bereitstellen von Docker-Container-Images erleichtert. In diesem Schritt gewähren Sie einem vorhandenen IAM-Benutzer Berechtigungen für den Zugriff auf Amazon ECR (mithilfe der AmazonECS_FullAccess-Richtlinie).

Falls Sie keinen vorhandenen IAM-Benutzer haben, finden Sie weitere Informationen in der IAM-Dokumentation.

a. Navigieren zur IAM-Konsole

Öffnen Sie die AWS-Managementkonsole, damit Sie diese Schritt-für-Schritt-Anleitung geöffnet lassen können. Wenn der Bildschirm vollständig geladen ist, geben Sie Ihren Benutzernamen und das Passwort ein, um zu beginnen. Geben Sie dann IAM in die Suchleiste ein und wählen Sie IAM aus, um die Servicekonsole zu öffnen.

AWS Management Console

b. Auswählen von Benutzern

Wählen Sie im Navigationsbereich links Benutzer aus.

3b-new

c. Hinzufügen von Berechtigungen

Jetzt fügen Sie einem neu erstellten oder vorhandenen IAM-Benutzer Berechtigungen hinzu. Wählen Sie auf der Zusammenfassungsseite für IAM-Benutzer Berechtigungen hinzufügen aus.

3c

d. Hinzufügen der ECS-Richtlinie für Vollzugriff

Wählen Sie Vorhandene Richtlinien direkt anfügen aus und suchen Sie nach ECS_FullAccess. Wählen Sie die Richtlinie Amazon_FullAccess aus und klicken Sie weiter, bis Sie Überprüfen und Berechtigungen hinzufügen erreichen.

3d-new

e. Hinzufügen einer Inline-Richtlinie

Wählen Sie auf der Zusammenfassungsseite für IAM-Benutzer Inline-Richtlinie hinzufügen aus.

3e-new

f. Einfügen der JSON-Richtlinie

Wählen Sie die Registerkarte JSON aus und fügen Sie die folgende Richtlinie ein:

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

Speichern Sie diese Richtlinie als ECR und wählen Sie Richtlinie erstellen aus.

 

3f-new

3. Starten einer AWS-Deep-Learning-Base-AMI-Instance

In diesem Tutorial verwenden wir AWS Deep Learning Containers auf AWS Deep Learning Base Amazon Machine Images (AMIs), die bereits über erforderliche Abhängigkeiten wie Nvidia-Treiber, Docker und Nvidia-Docker verfügen. Mit diesen Paketen können Sie Deep Learning Containers auf jedem beliebigen AMI ausführen.

a. Navigieren zur EC2-Konsole

Kehren Sie zum Startbildschirm der AWS-Managementkonsole zurück und geben Sie EC2 in die Suchleiste ein. Wählen Sie dann EC2 aus, um die Service-Konsole zu öffnen.

step_2

b. Starten einer Amazon-EC2-Instance

Navigieren Sie erneut zur Amazon-EC2-Konsole und wählen Sie die Schaltfläche Instance starten aus.

step_4a-new

c. Auswählen des AWS Deep Learning Base AMI

Wählen Sie links die Registerkarte AWS Marketplace aus und suchen Sie nach Deep Learning Base – Ubuntu. Wählen Sie Deep Learning Base AMI (Ubuntu) aus. Sie können auch Deep Learning Base AMI (Amazon Linux) auswählen.

step_4b-new

d. Auswählen des Instance-Typs

Wählen Sie einen Amazon-EC2-Instance-Typ aus. Sie verwenden den Amazon Web Service "Amazon Elastic Compute Cloud (EC2)" zur Erstellung und Ausführung virtueller Maschinen in der Cloud. Diese virtuellen Maschinen bezeichnet AWS als "Instances".

In diesem Tutorial verwenden wir eine c5.large-Instance. Sie können allerdings auch aus zusätzlichen Instance-Typen wählen, einschließlich GPU-basierter P3-Instances.

Wählen SieÜberprüfen und Starten aus.

step_4c-new

e. Starten Ihrer Instance

Überprüfen Sie die Details Ihrer Instance und wählen Sie Starten aus.

step_4d-new

f. Erstellen einer neuen Datei mit einem privaten Schlüssel

Auf dem nächsten Bildschirm werden Sie dazu aufgefordert, ein bestehendes Schlüsselpaar auszuwählen oder ein neues zu erstellen. Ein Schlüsselpaar wird für den sicheren Zugriff auf Ihre Instance mithilfe von SSH verwendet. AWS speichert den öffentlichen Teil des Schlüsselpaars. Diesen Teil können Sie sich wie ein Türschloss vorstellen. Sie laden den privaten Teil des Schlüsselpaars herunter und verwenden ihn. Diesen Teil können Sie sich wie einen Türschlüssel vorstellen.

Wählen Sie Neues Schlüsselpaar erstellen aus und geben Sie ihm einen Namen. Wählen Sie dann Schlüsselpaar herunterladen aus und speichern Sie Ihren Schlüssel an einem sicheren Speicherort. Wenn Sie Ihren Schlüssel verlieren, können Sie nicht mehr auf Ihre Instance zugreifen. Wenn Ihr Schlüssel in den Besitz einer anderen Person gerät, kann diese Person auf Ihre Instance zugreifen.

Falls Sie zuvor eine Datei mit einem privaten Schlüssel erstellt haben, auf die Sie noch Zugriff haben, können Sie stattdessen Ihren vorhandenen privaten Schlüssel verwenden, indem Sie Vorhandenes Schlüsselpaar auswählen wählen.

step_4e-new

g. Anzeigen der Instance-Details

Wählen Sie die Instance-ID aus, um die Details Ihrer neu erstellten Amazon-EC2-Instance in der Konsole anzuzeigen. 

step_4f-new

4. Herstellen einer Verbindung mit der Instance

In diesem Schritt stellen Sie mithilfe von SSH eine Verbindung zur neu gestarteten Instance her. In den Anweisungen unten wird eine Mac-/Linux-Umgebung verwendet Falls Sie Windows verwenden, folgen Sie Schritt 4 dieses Tutorials.

a. Suchen Sie den öffentlichen DNS Ihrer Instance und kopieren Sie ihn.

Kopieren Sie auf der Registerkarte Beschreibung den öffentlichen DNS (IPv4) Ihrer Amazon-EC2-Instance.

step_5a-new

b. Öffnen des Befehlszeilenterminals

Verwenden Sie im Terminal die folgenden Befehle, um in das Verzeichnis zu wechseln, in dem sich Ihr Sicherheitsschlüssel befindet. Stellen Sie anschließend über SSH eine Verbindung zu Ihrer Instance her.

cd /Users/<your_username>/Downloads/

chmod 0400 <your .pem filename>

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

5. Anmelden bei Amazon ECR

AWS-Deep-Learning-Container-Images werden in Amazon Elastic Container Registry (ECR) gehostet, eine vollständig verwaltete Docker-Container-Registry, die Entwicklern das Speichern, Verwalten und Bereitstellen von Docker-Container-Images erleichtert. In diesem Schritt melden Sie sich an und verifizieren den Zugriff auf Amazon ECR.

a. Konfigurieren Ihrer EC2-Instance mit Ihren AWS-Anmeldeinformationen

Sie müssen Ihre AWS-Zugriffsschlüssel-ID und Ihren geheimen Zugriffsschlüssel bereitstellen. Falls Sie diese Informationen noch nicht haben, können Sie hier eine Zugriffsschlüssel-ID und einen geheimen Zugriffsschlüssel erstellen.

step_6a-new

b. Anmelden bei Amazon ECR

Sie verwenden den Befehl unten für die Anmeldung bei Amazon ECR:

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

Hinweis: Sie müssen "$" und die Klammern in Ihren Befehl einschließen. Nach Abschluss dieses Schrittes wird "Anmeldung erfolgreich" angezeigt.

 

step_6b-new

6. Ausführen des TensorFlow-Trainings mit Deep Learning Containers

In diesem Schritt verwenden wir ein AWS-Deep-Learning-Container-Image für das TensorFlow-Training auf CPU-Instances mit Python 3.6.

a. Ausführen von AWS Deep Learning Containers

Sie werden jetzt AWS Deep Learning Container-Images auf Ihrer EC2-Instance mithilfe des Befehls weiter unten ausführen. Dieser Befehl ruft automatisch das Deep Learning Container-Image ab, falls es noch nicht lokal vorhanden ist.

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

Hinweis: Dieser Schritt kann je nach Größe des Images einige Minuten dauern. Falls Sie eine GPU-Instance nutzen, verwenden Sie "nvidia-docker" anstelle von "docker". Nach dem erfolgreichen Abschluss dieses Schrittes geben Sie eine Bash-Aufforderung für Ihren Container ein.

 

7a-new

b. Abrufen eines Beispielmodells für das Training

Wir werden das Keras-Repository, das beispielhafte Python-Skripts zum Trainieren von Modellen umfasst, klonen.

git clone https://github.com/fchollet/keras.git
7b-new

c. Starten des Trainings

Starten Sie das Training des autorisierten MNIST-CNN-Modells mithilfe des folgenden Befehls:

python keras/examples/mnist_cnn.py

Sie haben das Training für Ihren AWS Deep Learning Container jetzt erfolgreich abgeschlossen.

 

7c-new

7. Beenden Ihrer Ressourcen

In diesem Schritt beenden Sie die Amazon-EC2-Instance, die Sie während dieses Tutorials erstellt haben.

Wichtig: Das Beenden von Ressourcen, die nicht aktiv genutzt werden, senkt die Kosten und ist eine bewährte Methode. Wenn Sie Ihre Ressourcen nicht beenden, können Gebühren für Ihr Konto anfallen.

a. Auswählen Ihrer ausgeführten Instance

Wählen Sie in der Amazon-EC2-Konsole Ausgeführte Instances aus.

 

8a-new

b. Beenden Ihrer EC2-Instance

Wählen Sie die von Ihnen erstellte EC2-Instance und dann Aktionen > Instance-Zustand > Beenden aus.

8b-new

c. Bestätigen der Beendigung

Sie werden aufgefordert, das Beenden zu bestätigen. Wählen Sie Ja, beenden aus.

Hinweis: Dieser Vorgang kann einige Sekunden dauern. Sobald Ihre Instance beendet wurde, wechselt der Instance-Zustand in der EC2-Konsole zu beendet.

 

8c-new

Herzlichen Glückwunsch!

Sie haben erfolgreich ein MNIST-CNN-Modell mit TensorFlow unter Verwendung von AWS Deep Learning Containers trainiert.

Sie können AWS DL Containers für Training und Inferenz auf CPU- und GPU-Ressourcen auf Amazon EC2, Amazon ECS, Amazon EKS und Kubernetes verwenden.

Verwenden Sie diese zuverlässigen Deep-Learning-Images, die hinsichtlich Leistung und Größe auf AWS optimiert wurden, um eigene benutzerdefinierte Deep-Learning-Umgebungen zu erstellen.

War dieses Tutorial hilfreich?

Vielen Dank
Bitte teilen Sie uns mit, was Ihnen gefallen hat.
Es tut uns leid Sie zu enttäuschen
Ist etwas veraltet, verwirrend oder ungenau? Bitte helfen Sie uns, dieses Tutorial zu verbessern, indem Sie Feedback geben.