Je veux essayer l'apprentissage automatique → Tensorflow, non? Je veux l'essayer de manière interactive sur le Web → Jupyter, non? Je veux construire une infrastructure facilement → Docker, non? Alors je l'ai essayé, mais je suis resté coincé dans où définir le mot de passe, donc j'écrirai la solution
Ceux qui postulent à ce qui suit
――Je suis ingénieur infrastructure, mais je veux essayer l'apprentissage automatique --Docker je l'ai touché récemment, mais je ne connais pas les détails --Python je le touche un peu, mais je ne sais pas grand chose --Jupyter Est-ce que ça va? Je ne sais pas
En gros, j'aimerais l'essayer avec mon MacBook Air, mais je n'ai évidemment pas assez de ressources. Donc, si vous voulez le faire fermement, la meilleure solution est sur le cloud comme AWS ou GCP. Je veux le frapper localement, puis l'amener dans le cloud, donc la chose la plus simple et la plus populaire est Docker. Construire un Jupyter est un problème, il est donc très facile d'utiliser un conteneur qui contient tout. (Si vous essayez de le mettre dans Ansible ou Chef, il restera bloqué de différentes manières ...)
Tout d'abord, récupérez l'image. Il existe différents types d'images Jupyter ci-dessous, alors choisissez-en une en fonction de votre objectif. https://github.com/jupyter/docker-stacks
Je veux utiliser tensorflow cette fois, je vais donc utiliser ce qui suit. https://github.com/jupyter/docker-stacks/tree/master/tensorflow-notebook
docker pull tirons
$ 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
Vous pouvez obtenir une erreur comme indiqué ci-dessous.
$ 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'.
La cause est que l'image est d'environ 5G, il semble donc que la capacité soit insuffisante. Donc, si vous supprimez d'autres images, c'est OK (le style neuronal est trop grand)
$ 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
À ce rythme, même si vous accédez à http: // localhost: 8888, vous ne regarderez que l'écran de mot de passe.
Lancer bash dans un conteneur avec docker exec
$ docker exec -it fb31e1a2fda1 /bin/bash
Exécutez-le à partir de python, saisissez le mot de passe que vous souhaitez définir deux fois et obtenez la valeur de hachage du mot de passe. Dans l'exemple ci-dessous, la valeur de hachage est sha1: hogehoge: fugafuga.
< python -c 'from notebook.auth import passwd;print(passwd())'
Enter password:
Verify password:
sha1:hogehoge:fugafuga
jovyan@fb31e1a2fda1:~/work$ exit
exit
Si vous attachez le docker, il s'attachera à l'entrée / sortie standard de start-notebook.sh qui est exécutée au démarrage du conteneur, et vous ne pouvez pas taper de commandes python.
$ docker attach fb31e1a2fda1
★ Je ne peux exécuter aucune commande (en regardant simplement le journal)
ç^C[I 13:28:14.809 NotebookApp] Interrupted...
[I 13:28:14.810 NotebookApp] Shutting down kernels
$
Supprimer ce conteneur car il n'est plus utilisé
$ 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
Enfin, démarrez le conteneur avec le mot de passe défini Mettez la valeur de hachage que vous avez obtenue précédemment, sha1: hogehoge: fugafuga, dans la valeur de l'option NotebookApp.password dans start-notebook.sh et exécutez-la.
docker run -d -p 8888:8888 jupyter/tensorflow-notebook start-notebook.sh --NotebookApp.password='sha1:hogehoge:fugafuga'
Vous pouvez maintenant accéder à http: // localhost: 8888 et saisir le mot de passe que vous avez défini ci-dessus pour vous connecter. Après cela, veuillez jouer avec MNIST.
Vous pouvez utiliser la commande openssl, non? J'ai fait ce qui suit, mais ça n'a pas fonctionné
$ echo [password] | openssl sha1
Je pensais que sha1 était sha1, mais pourquoi? Le format est-il différent?
Recommended Posts