Construction de l'environnement de keras et tensorflow, laboratoire de Jupyter par docker et connexion à Jupyter par redirection de port

Aperçu

Construisez les environnements gpu et jupyterlab de Keras avec docker. J'omettrai l'installation de docker pour voir ce qu'est docker. De plus, j'expliquerai brièvement la redirection de port.

Tirage d'image

Tirez l'image avec la dernière balise gpu dans tensorflow docker hub. Si le tag est le plus récent, cuda ne peut pas être utilisé. Voici quoi faire

$ sudo docker pull tensorflow/tensorflow:latest-gpu

Vérifiez l'image

$ sudo docker images
REPOSITORY                        TAG                 IMAGE ID            CREATED             SIZE
tensorflow/tensorflow             latest-gpu          20fd065e3887        7 weeks ago         3.15GB

Installez les modules et jupyter dont vous pourriez avoir besoin

Module à installer

Cette fois je vais importer

Créez un conteneur Docker à partir de l'image avant l'importation. Entrez en tant que root lors de la création de l'environnement.

$ sudo docker run -it tensorflow/tensorflow:latest-gpu

mises à jour pip et apt

# pip install --upgrade pip
# apt-get update -y

Préparation à l'installation d'opencv

Voir ci-dessous Création d'un environnement d'exécution Python TensorFlow et OpenCV avec Docker

# apt-get install -y libopencv-dev

Ça prend beaucoup de temps.

Installation des modules requis

# pip install matplotlib opencv-python keras
# pip install jupyterlab

Tester si le module peut être importé

# python
Python 3.6.9 (default, Jul 17 2020, 12:50:27)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib
>>> import numpy
>>> import cv2
>>> import keras
2020-09-20 01:02:34.313977: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1
>>> import tensorflow

Ça a l'air bien. Vous pouvez quitter le mode interactif avec `` Ctrl + d ''. J'ai installé jupyterlab avec ceci, mais je dois faire une redirection de port pour l'exécuter. Si vous souhaitez voir la procédure d'exécution détaillée, veuillez lire cet article jusqu'à la fin.

Validation d'image

Avant de tester le laboratoire jupyter, validez le conteneur dans l'image. En d'autres termes, il enregistre l'état actuel de diverses installations. Quittez le conteneur en exécutant `` Ctrl + p, Ctrl + q ''.

Vérification des conteneurs en cours d'exécution

$ sudo docker ps -n=-1
CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS              PORTS                  NAMES
a24503258ede        tensorflow/tensorflow:latest-gpu   "/bin/bash"              24 minutes ago      Up 24 minutes                              romantic_gauss

Engagement de conteneur

$ sudo docker commit a24503258ede keras-jupyter

sudo docker commit (ID de conteneur) (nom de l'image que vous souhaitez donner). Après cela, si vous créez une image nommée keras-jupyter, le conteneur que vous avez créé jusqu'à présent sera terminé.

Arrêter le conteneur

Arrêtez le conteneur précédent une fois.

$ sudo docker stop a245
$ sudo docker ps -n=-1
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES

L'ID de conteneur répond d'abord avec environ 4 caractères.

À propos de la redirection de port

Je vais vérifier le fonctionnement de jupyterlab à partir de maintenant, mais je vais expliquer brièvement la redirection de port.

Qu'est-ce que la redirection de port?

Actuellement, j'essaie de connecter ssh au serveur à partir de mon propre ordinateur personnel comme indiqué dans la figure ci-dessous, d'exécuter docker dessus et de démarrer jupyterlab dessus. Cependant, comme jupyterlab est géré sur le navigateur, il est nécessaire de créer une autre route de connexion vers jupyterlab en plus de la connexion ssh.

スクリーンショット 2020-09-20 2.12.33.png

Par conséquent, la création d'une route de connexion (tunnel) autre que ssh afin que vous puissiez vous connecter à jupyter même sur le navigateur s'appelle ** redirection de port **. En ajoutant des options à chaque commande comme indiqué dans la figure ci-dessous, vous pouvez ouvrir un tunnel en plus du port 22 de ssh. スクリーンショット 2020-09-20 2.35.37.png スクリーンショット 2020-09-20 2.35.49.png

Cependant, cette fois, tous les numéros de port ont été modifiés pour des raisons d'explication, mais il serait préférable d'unifier tous les ports de redirection de port sur 8888 etc. afin de ne pas faire d'erreur. Maintenant, vérifions si la redirection de port est effectuée via le test jupyterlab.

Redirection de port vers jupyterlab

Redirection de port dans ssh

Tout d'abord, connectez-vous au serveur localement avec ssh.

$ ssh [email protected] -L 8800:x.x.x.x:8880

Ajoutez des options telles que -L {numéro de port local}: {ip serveur}: {numéro de port que vous souhaitez connecter avec le serveur}.

Port avant avec docker

Ajoutez `` -p 8880: 8888 '' aux options. En conséquence, lorsque le docker est accédé à partir du serveur, le port du serveur 8880 est connecté au docker 8888.

$ sudo docker run -it -p 8880:8888 keras-jupyter

Cela a conduit le numéro local 8800 au numéro docker 8888.

Démarrer jupyterlab

Ensuite, démarrez jupyterlab sur le conteneur avec la commande suivante.

# jupyter lab --port 8888 --ip=* --allow-root

Explication des commandes suivantes

La sortie est la suivante``http://127.0.0.1:8888/?token=614f6e5d410a1c459baa691ee28fdd0e2593c4644189a09e```Copie.


[W 02:52:43.023 LabApp] WARNING: The notebook server is listening on all IP addresses and not using encryption. This is not recommended.
[I 02:52:43.028 LabApp] JupyterLab extension loaded from /usr/local/lib/python3.6/dist-packages/jupyterlab
[I 02:52:43.028 LabApp] JupyterLab application directory is /usr/local/share/jupyter/lab
[I 02:52:43.030 LabApp] Serving notebooks from local directory: /
[I 02:52:43.030 LabApp] Jupyter Notebook 6.1.4 is running at:
[I 02:52:43.030 LabApp] http://0829a84d25eb:8888/?token=614f6e5d410a1c459baa691ee28fdd0e2593c4644189a09e
[I 02:52:43.030 LabApp]  or http://127.0.0.1:8888/?token=614f6e5d410a1c459baa691ee28fdd0e2593c4644189a09e
[I 02:52:43.030 LabApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

###Connexion à Jupyter Modifiez une partie de l'url précédente comme suit et collez-la dans votre navigateur local.

http://localhost:8800/?token=614f6e5d410a1c459baa691ee28fdd0e2593c4644189a09e

Vous pouvez maintenant vous connecter au jupyter fonctionnant sur le serveur par redirection de port.

##De côté Lors de l'exécution de docker, la liaison de l'utilisateur avec docker et serveur n'est pas expliquée en détail ici, mais il est préférable d'enregistrer la commande docker run dans alias et de l'utiliser comme suit.


alias docker-run-keras = 'sudo docker run -v /etc/group:/etc/group:ro -v /etc/passwd:/etc/passwd:ro -v $HOME:$HOME -u $(id -u $USER):$(id -g $USER) -it --gpus 2 -p 8888:8888 --shm-size 30g keras-jupyter

Recommended Posts

Construction de l'environnement de keras et tensorflow, laboratoire de Jupyter par docker et connexion à Jupyter par redirection de port
[Construction de l'environnement] Erreur de démarrage avec Docker! Étapes pour activer Hyper-V et redémarrer Docker
[Docker] Construisez l'environnement d'exécution de Jupyter Lab avec Docker
Présentez Docker à l'environnement de développement et à l'environnement de test des applications Rails et MySQL existantes
Créer un environnement Kaggle à l'aide de Docker officiel et de vscode
Méthode de construction de l'environnement et dépanneur au moment du développement conjoint (rails, docker et github)
Comment démarrer par environnement avec Spring Boot de Maven
Construction d'un environnement d'analyse de données avec Docker (mémorandum personnel)
[Rails 6.0, Docker] J'ai essayé de résumer la construction de l'environnement Docker et les commandes nécessaires pour créer un portfolio