Écrivons un article Qiita dans le système d'apprentissage automatique pour la première fois depuis longtemps! !! !! J'ai pensé, mais à chaque fois que c'était difficile de créer l'environnement, c'était un problème, donc c'était un méta-comme que j'ai essayé de créer un environnement pour cela? J'aimerais écrire un article.
Dans cet article, j'aimerais écrire sur la façon de configurer facilement un environnement python indépendant et de me connecter à partir d'un navigateur à l'aide de Docker-compose. Nous allons également écrire sur la façon d'exécuter du code de manière interactive à partir de VSCode ainsi que sur l'accès depuis un navigateur! Même si ce ne sont pas pour écrire Qiita, je pense qu'ils peuvent répondre à des requêtes telles que "Je veux l'exécuter dans un environnement d'exécution propre"!
Cet article ne couvre pas l'introduction de Docker, Docker-compose et VS Code. Si vous le recherchez, il sortira facilement (bien que Docker sur Windows semble être difficile). De plus, comme je suis spécialisé dans la science des données, le langage de programmation est Python3. Je n'écrirai pas en détail, mais R est également partiellement pris en charge. Puisque je suis un partisan d'Apple, j'utilise Mac comme système d'exploitation, mais je pense que cela fonctionnera probablement dans n'importe quel environnement tant que je peux utiliser Docker.
Dans cet article, nous allons suivre les étapes suivantes:
Le github officiel de jupyter référentiel docker-stacs dispose de nombreux outils pour créer un environnement python à l'aide de Jupyter. Par exemple, si vous voulez faire du Deep Learning avec tensorflow, allez dans tensorflow-notebook et cela ressemblera à ci-dessous. Vous pouvez voir qu'il y a un Dockerfile dans.
Dans ce Dockerfile
ARG BASE_CONTAINER=jupyter/scipy-notebook
Il y a une partie appelée, mais on dit que c'est une opération supplémentaire basée sur scipy-notebook Ca a du sens. Et si vous regardez scipy-notebook, le même
ARG BASE_CONTAINER=jupyter/minimal-notebook
Il est écrit cela. En effet, l'environnement de tensorflow est l'environnement de Scipy (pour la science des données par python de base) et tensorflow est ajouté, et l'environnement de Scipy est l'environnement dans lequel scikit-learn et pandas sont ajoutés à l'environnement minimal. Cela signifie qu'il y en a. Je n'entrerai pas dans les détails, mais il existe d'autres environnements Spark et R, et si vous utilisez le Dockerfile au besoin, l'environnement sera lancé d'un seul coup! De plus, comme il s'agit d'un Docker, si vous avez une bibliothèque que vous souhaitez ajouter personnellement, il vous suffit d'en ajouter un peu, ce qui est très pratique!
Alors, ouvrez d'abord le répertoire que vous souhaitez exécuter à partir du terminal et clonez ce référentiel.
$ git clone https://github.com/jupyter/docker-stacks.git
Et, par exemple, lorsque vous souhaitez utiliser base-notebook
$ cp -R ./docker-stacks/base-notebook ./
Si vous copiez l'outil, le téléchargement est terminé.
Il est difficile de démarrer jupyter à chaque fois ou d'écrire une commande qui spécifie le port, donc je vais le démarrer facilement en utilisant docker-compose.
docker-compose.yml
version: '3'
services:
#Nom du service jupyterlab(Nom du conteneur)Mis à
jupyterlab:
#Construire à partir de Dockerfile(Pour pouvoir écrire des paramètres supplémentaires)
build:
context: .
dockerfile: Dockerfile
#l'hôte./travail du conteneur/home/Monter sur jovyan
# Jovian means "related to Jupiter"
volumes:
- "./work:/home/jovyan"
#Définir l'utilisateur
user: root
environment:
B_UID: 1000
NB_GID: 100
GRANT_SUDO: "yes"
#Autoriser l'accès à l'appareil
privileged: true
#Mapper l'hôte 8888 au conteneur 8888
ports:
- "8888:8888"
#Redémarrer sauf arrêt
restart: unless-stopped
#Démarrez jupyterlab après avoir démarré le conteneur
command: start.sh jupyter lab --NotebookApp.token=''
C'est OK si vous créez le fichier ci-dessus dans la même couche que le Dockerfile (je suis directement sous le répertoire base-notebook). Cependant, si le port 8888 est utilisé par l'hôte, il est judicieux de définir XXXX: 8888 sur un numéro différent.
Après avoir fait ce qui précède, accédez au terminal et accédez au même niveau que docker-compose.yml.
$ docker-compose up -d
Frappez. Ensuite, au démarrage, tapez localhost: 8888 dans le navigateur![Image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265221/f45f76e0-4847 -8d03-4309-ddb2a79e5cd6.png) Le laboratoire Jupyter est ouvert comme ça. C'est vraiment simple. Puisque le volume est réglé sur ./work / home / jovyan, si vous créez un fichier à partir de l'accueil de jupyterlab, il sera reflété dans ./work du côté hôte. Ceci termine la construction de l'environnement python. Tout ce que vous avez à faire est d'installer les packages requis en fonction de l'article que vous souhaitez écrire, et de partager le Dockerfile pour la reproductibilité!
Cela suffit, mais cette fois, nous allons mettre au défi de créer un environnement d'exécution interactif avec VS Code. L'avantage de faire cela est que vous pouvez toujours exécuter partiellement le fichier py. Je pense qu'il est très pratique de pouvoir facilement déboguer et écrire des processus difficiles tels que le refactoring uniquement pour les fichiers ipynb.
Ensuite, je vais commencer à travailler immédiatement. Si VS Code avec Docker et Remote Desktop Extension sont installés, appuyez sur Commande + Maj + P pour ouvrir l'onglet de commande comme indiqué ci-dessous. Utilisez Ouvrir le dossier dans le conteneur pour ouvrir l'outil que vous venez de définir. (Dans mon cas, ouvrez le cahier de base)
Maintenant, lorsqu'on vous demande Config, sélectionnez From docker-compose. Alors attendez un peu, Si un tel écran est ouvert, l'accès au conteneur est réussi pour le moment.
En parlant de jupyter, tapez jupyter à partir de la recherche d'extension et installez-la affichée en haut.
Lorsque l'installation est terminée, le bouton "Recharger requis" apparaîtra comme indiqué ci-dessous, alors appuyez dessus pour recharger.
Après le rechargement, créons un fichier python en choisissant de manière appropriée jupyter_test.py dans ./work. Puis tapez "# %%" comme indiqué ci-dessous et vous verrez des commandes comme "Exécuter la cellule" au-dessus! Lorsque vous appuyez sur cette Run Cell, le code écrit dans le bloc jusqu'au prochain "# %%" sera exécuté de manière interactive. Si vous pouvez le confirmer, vous avez réussi!
Cette fois, avec la motivation d'écrire un article sur Qiita, j'ai présenté comment configurer facilement un environnement d'exécution python propre et reproductible, et j'ai même présenté comment l'exécuter de manière interactive avec VS Code. Même si vous n'écrivez pas de blog, il est pratique de pouvoir préparer plusieurs environnements python indépendants avec une seule commande. Après tout, j'ai réalisé à nouveau que Docker est incroyable (vocabulaire). À l'avenir, j'aimerais écrire quelques articles qui sont précieux en termes de science des données en utilisant cet environnement. Merci d'avoir regardé jusqu'au bout! !!