Ich möchte maschinelles Lernen ausprobieren → Tensorflow, richtig? Ich möchte es interaktiv im Web ausprobieren → Jupyter, oder? Ich möchte einfach eine Infrastruktur aufbauen → Docker, oder? Also habe ich es versucht, aber ich blieb stecken, wo ich das Passwort festlegen sollte, also werde ich die Lösung schreiben
Diejenigen, die sich für Folgendes bewerben
――Ich bin ein Infrastrukturingenieur, aber ich möchte maschinelles Lernen ausprobieren
Grundsätzlich würde ich es gerne mit meinem MacBook Air ausprobieren, aber offensichtlich habe ich nicht genügend Ressourcen. Wenn Sie es also fest tun möchten, ist die beste Lösung in der Cloud wie AWS oder GCP. Ich möchte es lokal treffen und dann in die Cloud bringen, daher ist Docker die einfachste und beliebteste Sache. Das Erstellen eines Jupyter ist mühsam, daher ist es wirklich einfach, einen Container zu verwenden, der alles enthält. (Wenn Sie versuchen, es in Ansible oder Chef zu setzen, bleibt es auf verschiedene Weise stecken ...)
Holen Sie sich zuerst das Bild. Es gibt verschiedene Arten von Jupyter-Bildern. Wählen Sie also eines entsprechend Ihrem Zweck aus. https://github.com/jupyter/docker-stacks
Ich möchte dieses Mal Tensorflow verwenden, daher werde ich Folgendes verwenden. https://github.com/jupyter/docker-stacks/tree/master/tensorflow-notebook
Docker ziehen lass uns ziehen
$ docker pull jupyter/tensorflow-notebook
Unable to find image 'jupyter/tensorflow-notebook:latest' locally
latest: Pulling from jupyter/tensorflow-notebook
75a822cd7888: Pulling fs layer
f74dd7a42a1f: Pulling fs layer
7b03c47d9699: Pull complete
ecef67eb4d88: Pull complete
bd6c8cee2aa9: Pull complete
8ecf884c467a: Pull complete
7dc68d7c7ffd: Pull complete
3369a456e292: Pull complete
e626c4a34300: Pull complete
619d5c673fb7: Pull complete
eff746881b74: Pull complete
fae5187ea9e1: Pull complete
e1fd76e4adb2: Pull complete
b5d2ba91f6a5: Pull complete
5804e217f19f: Pull complete
7719a427e59f: Pull complete
33ea9d473883: Pull complete
d28a865b24f6: Pull complete
7e2fa13ce090: Pull complete
15b63cba13fd: Pull complete
adcb147a9782: Pull complete
ce56ab01574f: Pull complete
aa6a6ae0b01e: Pull complete
2c54a9d73fcd: Pull complete
47c2872f3870: Pull complete
Digest: sha256:dd7b9e81c167647a87300043f21e3b37eee6d463815b86db9976c299cd4cc046
Status: Downloaded newer image for jupyter/tensorflow-notebook:latest
101e77006b40935607969dbad87e4540719ec55e66168d507f0ea8bb04ffe713
Möglicherweise wird ein Fehler angezeigt (siehe unten).
$ docker pull jupyter/tensorflow-notebook
Unable to find image 'jupyter/tensorflow-notebook:latest' locally
latest: Pulling from jupyter/tensorflow-notebook
75a822cd7888: Pulling fs layer
f74dd7a42a1f: Pulling fs layer
f74dd7a42a1f: Pull complete
ecef67eb4d88: Download complete
bd6c8cee2aa9: Download complete
8ecf884c467a: Download complete
7dc68d7c7ffd: Download complete
3369a456e292: Download complete
e626c4a34300: Download complete
619d5c673fb7: Download complete
eff746881b74: Download complete
fae5187ea9e1: Download complete
e1fd76e4adb2: Download complete
b5d2ba91f6a5: Downloading 96.62 MB/660.8 MB
5804e217f19f: Download complete
7719a427e59f: Downloading 126.5 MB/281.6 MB
33ea9d473883: Download complete
d28a865b24f6: Downloading 314.1 MB/314.1 MB
7e2fa13ce090: Waiting
15b63cba13fd: Waiting
adcb147a9782: Waiting
ce56ab01574f: Waiting
aa6a6ae0b01e: Waiting
2c54a9d73fcd: Waiting
47c2872f3870: Waiting
docker: write /var/lib/docker/tmp/GetImageBlob222925529: no space left on device.
See 'docker run --help'.
Die Ursache ist, dass das Bild etwa 5 G groß ist, sodass die Kapazität anscheinend nicht ausreicht. Wenn Sie also andere Bilder löschen, ist dies in Ordnung (der neuronale Stil ist zu groß).
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
poppen/trusty-ansible-serverspec latest e84a5c7341fd 10 weeks ago 691 MB
flyinprogrammer/serverspec latest 1b34b62345b3 12 weeks ago 154.4 MB
somatic/torch-fast-neural-style latest 97645d9c69e8 3 months ago 7.323 GB
amazon/amazon-ecs-agent latest a76825ffa321 3 months ago 10.84 MB
elenaalexandrovna/opencv-python3 latest 910fcd0fa477 4 months ago 594.7 MB
trafferty/docker-ipython-opencv latest 686f355ae522 19 months ago 8.676 GB
$ docker rmi a76825ffa321 910fcd0fa477 97645d9c69e8
Untagged: amazon/amazon-ecs-agent:latest
Untagged: amazon/amazon-ecs-agent@sha256:391a45a5b69a8d9fe1844310c4cf90e82e31cb167a93eb94d5a49b2b2456ad46
Deleted: sha256:a76825ffa321686b2df70a0be52fe5ecd52006a347cee5f07635b188655a5e86
...
$ docker run -it --rm -p 8888:8888 jupyter/tensorflow-notebook
1b11efc02512ab60a26909ced181a16e01db57160607bb5c54c2acacae30a20b
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb31e1a2fda1 jupyter/tensorflow-notebook "tini -- start-notebo" 6 seconds ago Up 1 seconds 0.0.0.0:8888->8888/tcp thirsty_kilby
Selbst wenn Sie auf http: // localhost: 8888 zugreifen, wird bei dieser Rate nur der Kennwortbildschirm angezeigt.
Starten Sie bash in einem Container mit Docker Exec
$ docker exec -it fb31e1a2fda1 /bin/bash
Führen Sie es in Python aus, geben Sie das Kennwort ein, das Sie zweimal festlegen möchten, und rufen Sie den Hashwert des Kennworts ab. Im folgenden Beispiel lautet der Hash-Wert sha1: hogehoge: fugafuga.
< python -c 'from notebook.auth import passwd;print(passwd())'
Enter password:
Verify password:
sha1:hogehoge:fugafuga
jovyan@fb31e1a2fda1:~/work$ exit
exit
Wenn Sie Docker anhängen, wird es an die Standardeingabe / -ausgabe von start-notebook.sh angehängt, die beim Starten des Containers ausgeführt wird, und Sie können keine Python-Befehle eingeben.
$ docker attach fb31e1a2fda1
★ Ich kann keine Befehle ausführen (nur das Protokoll betrachten)
ç^C[I 13:28:14.809 NotebookApp] Interrupted...
[I 13:28:14.810 NotebookApp] Shutting down kernels
$
Löschen Sie diesen Container, da er nicht mehr verwendet wird
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb31e1a2fda1 jupyter/tensorflow-notebook "tini -- start-notebo" 10 minutes ago Up 10 minutes 0.0.0.0:32768->8888/tcp tender_snyder
$ docker stop fb31e1a2fda1
fb31e1a2fda1
$ docker rm fb31e1a2fda1
fb31e1a2fda1
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Starten Sie den Container schließlich mit dem festgelegten Passwort Fügen Sie den zuvor erhaltenen Hash-Wert sha1: hogehoge: fugafuga in den Wert der Option NotebookApp.password in start-notebook.sh ein und führen Sie ihn aus.
docker run -d -p 8888:8888 jupyter/tensorflow-notebook start-notebook.sh --NotebookApp.password='sha1:hogehoge:fugafuga'
Jetzt können Sie zu http: // localhost: 8888 gehen und das oben festgelegte Passwort eingeben, um sich anzumelden. Danach spielen Sie bitte mit MNIST.
Sie können den Befehl openssl verwenden, oder? Ich habe folgendes getan, aber es hat nicht funktioniert
$ echo [password] | openssl sha1
Ich dachte sha1 wäre sha1, aber warum? Ist das Format anders?