[PYTHON] Créez un environnement pour "Deep Learning from scratch" avec Docker

Apprentissage profond à partir de zéro

Je n'avais aucune connaissance de python ou de l'apprentissage automatique, mais il y a beaucoup de sujets dans l'actualité récente, et quand j'espérais pouvoir étudier simplement en touchant quelque chose, O'Reilly's [Deep Learning from scratch] ](Https://www.oreilly.co.jp/books/9784873117584/) était facile à comprendre et je l'ai acheté.

La partie mathématique a également été omise modérément, et c'était très intéressant à lire pour une personne légère qui veut connaître une preuve stricte ou une image plus comme moi. De plus, il était très facile de comprendre que ce qui était expliqué était expliqué au niveau de la source.

Donc, je pense que les gens qui écrivent habituellement du python ou quelque chose comme ça sont bons, mais si vous voulez l'essayer pour le moment, vous pouvez également ajouter python, numpy et matplotlib (vous pouvez le faire une fois) ) C'est un peu d'humeur, n'est-ce pas?

Ensuite, j'ai pensé que je le ferais avec Docker, mais j'étais un peu accro au dessin graphique (GUI) avec matplolib qui apparaît dans ce livre, donc je vais le laisser comme un article. (Cependant, j'ai réalisé plus tard que cela pourrait être un peu subtil, comme mettre certaines bibliothèques du côté mac et travailler avant de démarrer le conteneur.)

Environnement

Au début, j'ai pensé à le mettre dans un ensemble facilement, mais j'ai pensé à Jupiter notebook, mais ce n'était pas facile car il y avait environ 4G d'image Docker, et ce" Deep Learning from scratch "lui-même est" avec une bibliothèque minimale Cela semble être un concept de «faisons-le à partir de zéro», alors j'ai pensé que je voulais un environnement où seules les bibliothèques nécessaires pourraient être installées, alors je l'ai fait moi-même.

Mise en garde Cependant, comme mon environnement est mac, la partie principale de l'interface graphique est pour mac.

Environnement obligatoire

Semble être ce dont vous avez besoin dans l'exemple de ce livre.

Parmi ceux-ci, la partie de dessin de graphique (matplotlib) qui apparaît souvent dans ce livre peut être recommandée pour avoir un environnement GUI, mais si vous faites cela dans l'environnement Docker, vous pouvez dessiner le graphique à partir de l'environnement Docker. deviendra nécessaire.

Je n'ai jamais fait ça avant, donc je n'étais pas sûr de pouvoir le faire, mais quand j'ai cherché

Sautons l'interface graphique du conteneur Docker côté Mac et affichons-la

Il y avait un bel article. Quand je l'ai fait sur cette base, j'ai créé un environnement où je peux recommander ce livre de manière compacte.

Construction de l'environnement Docker

Étant donné que le fichier Docker lui-même ne contient que la bibliothèque, insérez la bibliothèque requise basée sur l'image python officielle de Docker hub.

FROM python:3.5.2

WORKDIR /var/python

RUN pip install \
        ipython \
        numpy \
        matplotlib

CMD ["ipython"]

Ainsi, dans le conteneur Docker créé dans cet environnement, par exemple,

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-3, 3, 0.1)
y = np.sin(x)
plt.plot(x, y)
plt.show()

Je veux exécuter un script comme celui-ci et dessiner un graphique côté mac.

Le contenu est le même que le lien ci-dessus, mais pour que le contenu du graphique soit envoyé du côté du conteneur Docker en fonction de l'adresse IP du côté mac,

--Installez le serveur X (XQuartz) côté mac. --Définissez un port pour recevoir le contenu du dessin du côté du conteneur Docker avec socat et passez-le au serveur X sous mac

En faisant ces deux points, j'ai pu dessiner le contenu du graphique de python fonctionnant sur Docker vers le côté mac.

Installation des bibliothèques requises

Mettez socat et XQuartz dans brew.

brew install socat
brew install caskroom/cask/brew-cask
brew cask install xquartz

Vous êtes maintenant prêt.

Construire Docker

La construction de Docker elle-même se fait avec le fichier Docker ci-dessus, comme d'habitude. Ici, le nom de l'image est python-dl.

docker build -t python-dl .

Courir!

Tout d'abord, préparez "X" côté mac.

socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"

Dans l'article de référence, ʻopen -a XQuartz` a été explicitement exécuté à l'avance, mais d'après ce que j'ai essayé, il semblait être lancé sans permission même s'il n'était pas exécuté à l'avance. ..

Maintenant que vous êtes prêt, démarrez le conteneur Docker.

Lors du démarrage de l'image construite précédemment, en passant l'adresse IP du côté mac comme adresse du serveur X au côté conteneur, l'interface graphique est dessinée de la bouche créée avec socat au côté mac.

Je pense que beaucoup de gens peuvent obtenir l'adresse IP du côté mac avec ʻipconfig en0`, donc afin d'obtenir l'adresse IP de ce contenu

ifconfig en0 | grep -v inet6 | grep inet | awk '{print $2 ":0"}'`

(En fait, l'adresse IP de mac est passée au conteneur: 0, donc le script est comme ci-dessus).

De plus, pour monter les sources de divers échantillons, démarrez le conteneur avec la commande suivante en tenant compte du montage du répertoire courant avec -v.

docker run --rm -it -e DISPLAY=$(ifconfig en0 | grep -v inet6 | grep inet | awk '{print $2 ":0"}') -v $(pwd):/var/python python-dl bash

Cela démarrera bash du côté du conteneur, donc en tant qu'échantillon, dans samples / sample01.py,

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-3, 3, 0.1)
y = np.sin(x)
plt.plot(x, y)
plt.show()

S'il y a

python samples/sample01.py

Donc, si le graphique suivant est dessiné côté mac, il réussit.

スクリーンショット 2016-12-10 13.56.37.png

Autre

Le contenu, y compris l'environnement (+ α) jusqu'à présent

https://github.com/pocari/python-dl-docker

Dans

Obtenez l'exemple de code du livre ensemble

L'exemple de ce livre est enregistré sur github, donc le référentiel de celui-ci estbook-sample Puisqu'il est enregistré comme sous-module de git sous le dossier appelé

--Reposito clone de cet article

  git clone https://github.com/pocari/python-dl-docker

--Cloner le code dans le répertoire de code d'exemple du livre

  git submodule update -i

Si vous le faites, vous pouvez également exécuter des exemples de livres.

Exemple) Après être entré dans le conteneur avec la commande docker run ci-dessus

cd samples/book-sample/ch07
python apply_filter.py

Ensuite, le résultat suivant sera affiché côté mac. スクリーンショット 2016-12-11 0.46.41.png

Recommended Posts

Créez un environnement pour "Deep Learning from scratch" avec Docker
Réaliser la construction d'environnement pour "Deep Learning from scratch" avec docker et Vagrant
Créez un environnement d'apprentissage automatique à partir de zéro avec Winsows 10
Préparez l'environnement pour le livre O'Reilly "Deep Learning from scratch" avec apt-get (Debian 8)
[Windows 10] Construction de l'environnement "Deep Learning from scratch"
Apprentissage profond à partir de zéro
Créez un environnement d'apprentissage automatique arbitraire avec GCP + Docker + Jupyter Lab
Apprentissage profond à partir de zéro 1 à 3 chapitres
Créer un environnement avec virtualenv
Créez un environnement pour l'automatisation des tests avec AirtestIDE (Astuces)
Reconstruction de l'environnement pour l'apprentissage automatique avec Miniconda (version Windows)
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 1
Un amateur a trébuché dans le Deep Learning ❷ fait à partir de zéro Note: Chapitre 5
Un amateur a trébuché dans le Deep Learning ❷ fait à partir de zéro Note: Chapitre 2
Apprentissage profond à partir de zéro (calcul des coûts)
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 3
De la construction de l'environnement au déploiement pour flask + Heroku avec Docker
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 7
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 5
Un amateur a trébuché dans le Deep Learning ❷ fait de zéro Note: Chapitre 1
Un amateur a trébuché dans le Deep Learning ❷ fait à partir de zéro Note: Chapitre 4
Créer une application Todo avec Django ① Créer un environnement avec Docker
Un amateur a trébuché dans le Deep Learning à partir de zéro.
Mémo d'apprentissage profond créé à partir de zéro
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 2
Tutoriel d'apprentissage en profondeur de la construction d'environnement
Création d'un environnement d'apprentissage automatique à partir de zéro (version windows10 + Anaconda + VSCode + Tensorflow + GPU)
[Deep Learning from scratch] Principales méthodes de mise à jour des paramètres pour les réseaux neuronaux
Apprentissage automatique avec docker (42) Programmation PyTorch pour l'apprentissage en profondeur par Ian Pointer
Créer un environnement pour Django x Apache x mod_wsgi avec Vagrant (Ubuntu 16.04)
Écrivez vos impressions sur l'édition du framework Deep Learning 3 créée à partir de zéro
[Mémo d'apprentissage] Le Deep Learning fait de zéro [Chapitre 7]
Apprentissage profond à partir de zéro (propagation vers l'avant)
Apprentissage profond / Apprentissage profond à partir de zéro 2-Essayez de déplacer GRU
Deep learning / Deep learning made from scratch Chapitre 6 Mémo
[Mémo d'apprentissage] Deep Learning fait de zéro [Chapitre 5]
Créer un environnement Python + uWSGI + Nginx avec Docker
[Mémo d'apprentissage] Le Deep Learning fait de zéro [Chapitre 6]
"Deep Learning from scratch" avec Haskell (inachevé)
Deep learning / Deep learning made from scratch Chapitre 7 Mémo
Enregistrement d'apprentissage de la lecture "Deep Learning from scratch"
[Deep Learning from scratch] À propos de l'optimisation des hyper paramètres
Mémo d'auto-apprentissage "Deep Learning from scratch" (partie 12) Deep learning
[Mémo d'apprentissage] Deep Learning fait de zéro [~ Chapitre 4]
Créez un environnement d'apprentissage pour le «Deep learning from scratch» avec Cloud9 (jupyter miniconda python3)
Mémo d'auto-apprentissage "Deep Learning from scratch" (glossaire illisible)
"Deep Learning from scratch" Mémo d'auto-apprentissage (n ° 9) Classe MultiLayerNet
Créez un environnement d'exécution pour chaque langue avec boot2docker
GitHub du bon livre "Deep Learning from scratch"
Construire un environnement Anaconda pour Python avec pyenv
Deep Learning from scratch Chapter 2 Perceptron (lecture du mémo)
[Mémo d'apprentissage] Apprentissage profond à partir de zéro ~ Mise en œuvre de l'abandon ~
Diverses commandes pour créer un environnement avec Apache
Créer un environnement de Nginx + uWSGI + Python (Django) avec docker
Apprentissage automatique à partir de zéro (apprentissage automatique appris avec Kaggle)
Résumé Python vs Ruby "Deep Learning from scratch"
Essayez de créer un environnement pour MayaPython avec VisualStudioCode
Mémo d'auto-apprentissage «Deep Learning from scratch» (10) Classe MultiLayerNet