Kurs
Der Kurs Introduction to Deep Learning in Python von DataCamp gibt dir alles an die Hand, um Deep Learning auf deinem Laptop oder PC auszuführen. Früher oder später wirst du aber Modelle auf einer Grafikkarte (GPU) laufen lassen wollen.
Dieser Beitrag zeigt dir die nächsten Schritte!
Die meisten haben keine GPU im eigenen Rechner. In diesem Blogpost erfährst du deshalb, wie du eine GPU über die Amazon Web Services (AWS) Cloud nutzt.
Die Ausführung deiner Modelle auf einer GPU wie hier beschrieben kostet etwa 0,90 $ pro Stunde. Falls dein Laptop oder PC bereits eine GPU hat, kannst du diese lokal einrichten und so Geld sparen.
Beim ersten Mal sind einige Schritte nötig, um deine Cloud-Umgebung aufzusetzen. Ist sie einmal konfiguriert, kannst du sie künftig schnell und einfach weiterverwenden.
Ein AWS-Konto anlegen
Rufe https://aws.amazon.com/ auf, um ein AWS-Konto zu erstellen. Klicke auf Create an AWS Account.
Wähle I am a new user und gib deine E-Mail-Adresse ein. Anschließend wirst du durch ein Formular geführt, in dem du u. a. Name, E-Mail-Adresse und ein Passwort angibst.

Deinen Cloud-Server einrichten
Die Einrichtung deines Servers umfasst mehrere Schritte. Wir zeigen dir, wie du die Instanz stoppst, damit du nichts zahlst, wenn du sie nicht nutzt, und wie du sie nach der Ersteinrichtung schnell wieder startest.
Mit deinem Konto kannst du jederzeit zurück zu https://aws.amazon.com/ gehen und auf Sign In To Console klicken.

Amazon bietet eine riesige Bandbreite an Cloud-Services, was anfangs überwältigend wirken kann. Für uns ist der EC2-Service relevant (Elastic Cloud Compute). Links oben im Browser findest du das Service-Menü.

Öffne das Menü und wähle EC2, üblicherweise die erste Option. Du landest auf einer Seite mit dem Status aller laufenden EC2-Instanzen. Klicke in der Mitte auf Launch Instance.

Jede Instanz kommt mit einer bestimmten Software-Vorauswahl ("Machine Images"), die du festlegst. Wir nutzen ein Image aus dem AWS Marketplace, das für Deep Learning optimiert ist.
Wähle links AWS Marketplace.
Gib dann im Suchfeld deep learning ubuntu ein:

Unter den Treffern findest du u. a. Amazons offizielles Deep Learning AMI Ubuntu Version. Wähle dieses aus.

Anschließend siehst du eine Auswahl an Instanztypen, die sich in Preis und Rechenleistung unterscheiden.
GPU-Instanzen beginnen mit g2 oder p2. Empfohlen ist p2.xlarge für knapp unter 1 $/Std. Günstiger ist g2.2xlarge für ca. 0,65 $/Std., allerdings mit weniger Leistung.
Nach der Auswahl deines Instanztyps klicke unten auf Configure Instance Details. Wechsle dann oben im Menü zu 6. Configure Security Group.
Hier richten wir den Zugriff von deinem Rechner aus ein.
Jede Zeile definiert eine Zugriffsregel für deine Instanz.
Wir verwenden Jupyter-Notebooks, die über Port 8888 ausgeliefert werden. Falls dir das noch nichts sagt, siehst du gleich, wie es funktioniert.
Klicke zunächst auf Add Rule. Wähle als Protokoll TCP, als Port 8888 und als Quelle 0.0.0.0/0.

Klicke unten auf Review and Launch und anschließend auf Launch.
Nun folgt der letzte Sicherheitsschritt: die Auswahl eines Schlüsselpaares. Der Schlüssel ist eine Datei auf deinem Rechner, die zu einer Datei auf dem Server passt. So verhinderst du unbefugte Nutzung deines Servers. Teile den Schlüssel niemals und veröffentliche ihn nicht.
Wähle Create a new key pair, gib einen Namen ein und klicke auf Download Key Pair, um den Schlüssel herunterzuladen. Den brauchst du später für den Zugriff.

Kurz darauf siehst du einen Bildschirm wie diesen:

Die lange blau markierte Zeichenfolge ist der Name deiner Instanz. Klicke darauf, um zum EC2-Dashboard zu gelangen, das den laufenden Server anzeigt.
Glückwunsch! Dein Deep-Learning-Server läuft jetzt in der Cloud.
Mit deinem Server verbinden
Wir verbinden uns nun per ssh mit dem Server. Von dort starten wir einen Jupyter-Notebook-Server, den wir im Browser nutzen.
Auf macOS oder Linux verwendest du den Befehl ssh. Unter Windows nutzen viele dafür PuTTY.
Eventuell musst du die Zugriffsrechte deiner Schlüsseldatei anpassen. Unter macOS und Linux geht das mit:
chmod 400 my_private_key.pemAnschließend machst du den Schlüssel für die Anmeldung verfügbar mit:
ssh-add my_private_key.pemZum Einloggen brauchst du die IP-Adresse deines Servers. Du findest sie im EC2-Dashboard im Browser.

Melde dich an der Kommandozeile mit folgendem Befehl an:
ssh ubuntu@34.208.222.118Ersetze 34.208.222.118 durch die IP-Adresse deines Servers.
Nach der Anmeldung startest du mit dem Befehl ipython eine IPython-Shell. Importiere dort keras, um zu prüfen, ob alles funktioniert. Du solltest Meldungen sehen, dass CUDA verwendet wird – das bedeutet, keras greift auf die GPU zu.

Wenn du dich mit Linux, IPython und einem Linux-Editor wohlfühlst, kannst du so arbeiten. Manche nutzen zwei Fenster: eins für die ssh-Verbindung und IPython, ein weiteres für die ssh-Verbindung und den Editor.
Dein Jupyter Notebook einrichten
Für die meisten ist es jedoch einfacher, Jupyter-Notebooks einzurichten und im Browser zu programmieren. Dazu legen wir ein Passwort fest.
Als Erstes erzeugst du den Hash deines Wunschpassworts. In IPython geht das so:

Kopiere den ausgegebenen Hash, nachdem du das Passwort gesetzt hast. Den brauchst du gleich.
Tippe exit, um IPython zu verlassen.
Jetzt sagen wir Jupyter, welches Passwort es verwenden soll. Führe dafür diese Befehle aus:
jupyter notebook --generate-configmkdir certscd certssudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pemBearbeite dann ~/.jupyter/jupyter_notebook_config.py mit einem Editor. Ich nutze gern vim, also:
vim ~/.jupyter/jupyter_notebook_config.pyFüge am Anfang der Datei Folgendes ein:
c = get_config()c.IPKernelApp.pylab = 'inline' c.NotebookApp.certfile = u'/home/ubuntu/certs/mycert.pem' c.NotebookApp.ip = '*' c.NotebookApp.open_browser = False # Your password below will be whatever you copied earlier c.NotebookApp.password = u'sha1:941c93244463:0a28b4a9a472da0dc28e79351660964ab81605ae' c.NotebookApp.port = 8888Du kannst alles exakt so übernehmen und nur das Passwort ersetzen. Achtung: Nicht dein Klartext-Passwort einfügen, sondern den zuvor erzeugten Hash.
Im Browser mit Jupyter verbinden
Öffne deinen Browser und gib die Adresse deiner Instanz (aus dem EC2-Dashboard) gefolgt von :8888 ein.

Eventuell erscheint nun eine Sicherheitswarnung. Das ist erwartbar. In Chrome kannst du über "Erweitert" fortfahren und die Warnung überspringen.

Jetzt wirst du nach deinem Passwort gefragt.

Gib dein Passwort ein. Gemeint ist das Klartext-Passwort, das du in IPython zur Hash-Erzeugung verwendet hast – nicht der Hash selbst.
Glückwunsch, du bist eingeloggt!
Das Notebook verwenden
Erstelle im Browser über das Menü ein neues Python-Notebook.

Puh … Das war viel Arbeit. Ab jetzt geht es schnell
Die Notebook-Umgebung einzurichten, war aufwendig. Zum Glück ist das meiste einmalig. Du kannst deinen Server im EC2-Dashboard jederzeit stoppen, wenn du ihn nicht nutzt, und zahlst dann nichts.

Beim Stoppen bleiben alle deine Einstellungen erhalten, die Instanz läuft nur nicht weiter, bis du sie wieder startest – quasi wie eine Pause. Mit terminate würdest du hingegen alles löschen und müsstest beim nächsten Mal neu einrichten.
Da du stop gewählt hast, kannst du an einem anderen Tag im EC2-Dashboard einfach auf start klicken.

Nach dem Start bist du schnell wieder einsatzbereit. Deine Instanz erhält eine neue IP-Adresse. Du musst dich per ssh an die neue IP verbinden:
ssh ubuntu@34.208.26.73Im Fenster mit deiner ssh-Verbindung gibst du ein:
jupyter notebookDann wechselst du zurück in den Browser und kannst direkt weiterarbeiten.
Die Einrichtung war umfangreich, aber mit etwas Übung wirst du diese Umgebung oft und produktiv für spannende Deep-Learning-Projekte nutzen.
Wenn du tiefer einsteigen möchtest, schau dir diese DataCamp-Kurse an: