it-swarm.com.de

Wie starte ich Tensorflow Docker Jupyter Notebook

Ich habe den Tensorflow-Docker-Container auf einer Ubuntu-Maschine installiert. Die Tensorflow Docker Setup-Anweisungen geben Sie an:

docker run -it b.gcr.io/tensorflow/tensorflow

Dies versetzt mich in das Docker-Containerterminal und ich kann Python ausführen und das Hello World-Beispiel ausführen. Ich kann auch.\Run_jupyter.sh manuell ausführen, um das Jupyter-Notebook zu starten. Ich kann das Notebook jedoch nicht vom Host aus erreichen.

Wie starte ich das Jupyter-Notebook so, dass ich es vom Host-Computer aus verwenden kann? Idealerweise möchte ich Docker verwenden, um den Container zu starten und Jupyter in einem einzigen Befehl zu starten.

48
Robert Graves

Für einen Linux-Host funktioniert die Antwort von Robert Graves, für Mac OS X oder Windows ist jedoch noch mehr zu tun, da das Docker in einer virtuellen Maschine ausgeführt wird. 

Starten Sie daher die Docker-Shell (oder eine beliebige Shell, wenn Sie Linux verwenden) und führen Sie den folgenden Befehl aus, um einen neuen TensorFlow-Container zu starten:

docker run -p 8888:8888 -p 6006:6006 b.gcr.io/tensorflow/tensorflow ./run_jupyter.sh

Für Mac OS X und Windows müssen Sie die folgenden Schritte nur einmal ausführen:

  1. Öffnen Sie VirtualBox
  2. Klicken Sie auf die Docker-VM (meine wurde automatisch als "Standard" bezeichnet).
  3. Öffnen Sie die Einstellungen, indem Sie auf Einstellungen klicken
  4. Öffnen Sie in den Netzwerkeinstellungen den Dialog zur Portweiterleitung
  5. Klicken Sie auf das + -Symbol, um einen weiteren Port hinzuzufügen, und verbinden Sie einen Port von Ihrem Mac mit VM, indem Sie das unten gezeigte Dialogfeld ausfüllen. In diesem Beispiel habe ich Port 8810 gewählt, da ich andere Notebooks mit Port 8888 ausführen kann  enter image description here
  6. Öffnen Sie dann einen Browser und stellen Sie eine Verbindung zu http: // localhost: 8810 (oder zu welchem ​​Port Sie im Abschnitt "Host - Port")
  7. Machen Sie Ihre schicke App zum maschinellen Lernen!
47
Craig

Mein einfacher, aber effizienter Workflow:

TL; DR-Version:

  1. Öffnen Sie Docker Quickstart Terminal. Wenn es bereits geöffnet ist, führen Sie $ cd aus.
  2. Führen Sie dieses einmal aus: $ docker run -it -p 8888:8888 -p 6006:6006 -v /$(pwd)/tensorflow:/notebooks --name tf b.gcr.io/tensorflow/tensorflow
  3. So starten Sie jedes Mal: ​​$ docker start -i tf

Wenn Sie sich nicht unter Windows befinden, sollten Sie /$(pwd) wahrscheinlich in $(pwd) ändern.

Sie erhalten einen leeren Ordner mit dem Namen tensorflow in Ihrem Basisverzeichnis, in dem Projektdateien wie Ipython Notebooks und Datasets dauerhaft gespeichert werden.

Erläuterung:

  1. cd, um sicherzustellen, dass Sie sich in Ihrem Heimatverzeichnis befinden.
  2. parameter:
    • -it steht für interaktiv, sodass Sie mit dem Container in der Terminalumgebung interagieren können. 
    • -v Host_folder:container_folder ermöglicht die Freigabe eines Ordners zwischen dem Host und dem Container. Der Hostordner sollte sich in Ihrem Home-Verzeichnis befinden. /$(pwd) wird in Windows 10 in //c/Users/YOUR_USER_DIR übersetzt. Dieser Ordner wird als notebooks-Verzeichnis in dem von Ipython/Jupyter Notebook verwendeten Container angezeigt. 
    • --name tf weist dem Container den Namen tf zu.
    • -p 8888:8888 -p 6006:6006 Zuordnung der Ports des Containers zum Host, erstes Paar für Jupyter-Notebook, das zweite für Tensorboard
  3. -i steht für interaktiv

TensorFlow auf der Wolke laufen lassen

17
Thoran

Nach weiterem Lesen der Docker Dokumentation habe ich eine Lösung, die für mich funktioniert:

docker run -p 8888:8888 -p 6006:6006 b.gcr.io/tensorflow/tensorflow ./run_jupyter.sh

Mit den Optionen -p 8888: 8888 und -p 6006: 6006 werden dem Host die Containerports an derselben Portnummer angezeigt. Wenn Sie nur -p 8888 verwenden, wird ein zufälliger Port auf dem Host zugewiesen.

Die ./run_jupyter.sh teilt dem Docker mit, was innerhalb des Containers ausgeführt werden soll.

Mit diesem Befehl kann ich einen Browser auf dem Host-Computer verwenden, um eine Verbindung zu http: // localhost: 8888/ herzustellen und auf das Jupyter-Notebook zuzugreifen.

UPDATE: Nachdem ich mit Docker unter Windows gerungen hatte, wechselte ich wieder zu einem Ubuntu-Rechner mit Docker. Mein Notebook wurde zwischen den Docker-Sitzungen gelöscht, was nach dem Lesen der Docker-Dokumentation sinnvoll ist. Hier ist ein aktualisierter Befehl, der auch ein Host-Verzeichnis in den Container einfügt und jupyter startet, um auf dieses gemountete Verzeichnis zu zeigen. Nun ist mein Notebook auf dem Host gespeichert und beim nächsten Start des Tensorflows verfügbar.

docker run -p 8888:8888 -p 6006:6006 -v /home/rob/notebook:/notebook b.gcr.io/tensorflow/tensorflow sh -c "jupyter notebook /notebook"
10
Robert Graves

Jupyter ist jetzt einsatzbereit Docker-Image für TensorFlow:

docker run -d -v $(pwd):/home/jovyan/work -p 8888:8888 jupyter/tensorflow-notebook

4
Rush

Diese Schritte haben für mich funktioniert, wenn Sie ein totaler Docker-Noob sind, der eine Windows-Maschine verwendet.

Versionen: Windows 8.1, Docker 1.10.3, Tensorflow r0.7

  1. Führen Sie das Docker Quickstart Terminal aus
  2. Notieren Sie sich nach dem Laden die IP-Adresse. Wenn Sie es nicht finden können, verwenden Sie diesen docker-machine ip und machen Sie eine Notiz. Nennen wir es 'IP-Adresse'. Will ungefähr so ​​aussehen: 192.168.99.104 (ich habe mir diese IP-Adresse ausgedacht)
  3. Fügen Sie diesen Befehl in das Docker-Terminal ein:

    docker run -p 8888:8888 -p 6006:6006 b.gcr.io/tensorflow/tensorflow

    Wenn Sie dies zum ersten Mal ausführen, wird das Image auf diesem leichten vm heruntergeladen und installiert. Dann sollte es sagen: "Das Jupyter-Notebook läuft um ..." -> Das ist ein gutes Zeichen!

  4. Öffnen Sie Ihren Browser unter: <your ip address (see above)>:8888. Z.B. 192.168.99.104:8888/
  5. Hoffentlich können Sie Ihre ipython-Dateien sehen.
4
Javiar Sandra

Um dies unter hyper-v auszuführen. Führen Sie die folgenden Schritte aus: 

1) Erstellen Sie eine virtuelle Docker-Maschine mit https://blogs.msdn.Microsoft.com/scicoria/2014/10/09/getting-docker-running-on-hyper-v-8-1-2012-r2/ Damit erhalten Sie einen funktionierenden Docker-Container. Sie können eine Verbindung über die Konsole oder über ssh herstellen. Ich würde mindestens 8 GB Speicherplatz einsetzen, da ich sicher bin, dass dies viel Speicherplatz benötigt. 

2) Führen Sie "ifconfig" aus, um die IP-Adresse des Docker VM zu ermitteln. 

3) Auf dem Docker-Shell-Eingabeaufforderungstyp: 

docker run -p 8888: 8888 -p 6006: 6006 -it b.gcr.io/tensorflow/tensorflow 

4) Stellen Sie über http:/[ifconfig-Adresse]: 8888/eine Verbindung zur Jupyter Workbench her.

2
kariato

Um die Dinge ein wenig aufzuräumen, möchte ich noch ein paar zusätzliche Erklärungen geben, da ich auch sehr an Docking mit Tensorflow gelitten habe. Ich beziehe mich hier auf dieses Video, was leider nicht in allen Fällen selbsterklärend ist. Ich gehe davon aus, dass Sie bereits Docker installiert haben. Der wirklich interessante allgemeine Teil des Videos beginnt in Minute 0:44, als er schließlich mit dem Docker begann. Bis dahin lädt er nur das Tensorflow-Repo in den Ordner herunter, den er dann in den Container einfügt. Sie können natürlich alles andere in den Container legen und später in der Docker-VM darauf zugreifen. 


  1. Zuerst führt er den langen Docker-Befehl docker run –dit -v /c/Users/Jay/:/media/disk –p 8000 –p 8888 –p 6006 b.gcr.io/tensorflow/tensorflow aus. Der Befehl "run" startet Container. In diesem Fall wird der Container "b.gcr.io/tensorflow/tensorflow" gestartet, dessen Adresse im tensorflow-Dockerinstallations-Tutorial angegeben wird. Der Container wird vom Docker heruntergeladen, falls er nicht bereits lokal verfügbar ist. Dann gibt er zwei weitere Arten von Argumenten an: Er hängt einen Ordner des Hostsystems am angegebenen Pfad zum Container an. Vergessen Sie NICHT, die Partition am Anfang anzugeben (zB "/ c /"). Außerdem erklärt er, dass Ports später mit dem Parameter -p von der Host-Maschine verfügbar sind. Von diesem Befehl erhalten Sie die [CONTAINER_ID] dieser Container-Ausführung zurück! Sie können die aktuell ausgeführten Container immer sehen, indem Sie in der Docker-Konsole "docker ps" ausführen. Ihr oben erstellter Container sollte in dieser Liste mit derselben ID angezeigt werden.


  2. Nächster Schritt: Wenn Ihr Container ausgeführt wird, möchten Sie jetzt etwas darin ausführen. In unserem Fall jupyter notebook oder tensorflow oder was auch immer: Um dies zu tun, müssen Sie das Bock auf dem neu erstellten Container ausführen: docker exec –ti [CONTAINER_ID] bash. Dieser Befehl startet jetzt eine Bash-Shell in Ihrem Container. Sie sehen dies, weil sich das "$" jetzt in root @ [CONTAINER_ID]: geändert hat. Von hier ist kein Weg zurück. Wenn Sie zum Docker-Terminal zurückkehren möchten, müssen Sie eine neue Docker-Konsole neu starten, wie er es in Minute 1:10 tut. Jetzt können Sie mit einer Bash-Shell im Container ausführen, was Sie möchten, und Jupiter oder Tensorflow oder was auch immer ausführen. Der Ordner des Host-Systems, den Sie im run-Befehl angegeben haben, sollte jetzt unter "/ media/disk" verfügbar sein. 


  3. Letzter Schritt beim Zugriff auf die Ausgabe VM. Es wollte immer noch nicht für mich klappen und ich konnte nicht auf mein Notebook zugreifen. Sie müssen immer noch die richtige IP-Adresse und den richtigen Port für den Zugriff auf das gestartete Notebook, die Tensorboard-Sitzung oder was auch immer finden. Ermitteln Sie zuerst die Haupt-IP mit docker-machine –ls. In dieser Liste erhalten Sie die URL. (Wenn es Ihr einziger Container ist, wird es als Standard bezeichnet.) Sie können den hier angegebenen Port weglassen. Dann erhalten Sie von docker ps die Liste der weitergeleiteten Ports. Wenn in der Liste 0.0.0.32776-> 6006/tcp steht, können Sie von der Hostmaschine aus auf den Port zugreifen, der an erster Stelle angegeben ist (Awkyard). In meinem Fall sagte das in dem Container ausgeführte Tensorboard "auf Port 6006 gestartet". Dann musste ich von meiner Hostmaschine aus http://192.168.99.100:32776/ eingeben, um darauf zuzugreifen.

-> Und das ist es! Es lief für mich so!

1
BaluJr.

Es gibt Ihnen das Terminal Prompt:

FOR /f "tokens=*" %i IN ('docker-machine env --Shell cmd vdocker') DO %i
docker run -it tensorflow/tensorflow:r0.9-devel

oder 

FOR /f "tokens=*" %i IN ('docker-machine env --Shell cmd vdocker') DO %i
docker run -it b.gcr.io/tensorflow/tensorflow:latest-devel

Sie sollten 'vdocker' haben oder vdocker in 'default' ändern.

0
Jung-Ho Park

Aus irgendeinem Grund bin ich auf ein weiteres Problem gestoßen, das ich über die angegebenen Beispiele hinaus mit dem --ip-Flag überwinden musste:

nvidia-docker run --rm \
  -p 8888:8888 -p 6006:6006 \
  -v `pwd`:/root \
  -it tensorflow/tensorflow:latest-devel-gpu-py3 sh -c "jupyter notebook --ip 0.0.0.0 ."

Und dann kann ich über http: // localhost: 8888 von meinem Rechner aus zugreifen. In gewisser Weise macht das Sinn; Innerhalb des Containers binden Sie an 0.0.0.0, der alle verfügbaren Adressen darstellt. Aber ob ich das tun muss, scheint unterschiedlich zu sein (z. B. habe ich Notebooks mit jupyter/scipy-notebook gestartet, ohne dies zu tun). 

In jedem Fall funktioniert der obige Befehl für mich und kann für andere von Nutzen sein.

0
Karl Rosaen