[PYTHON] Utilisez Docker et Jupyter comme méthode de distribution d'environnement d'exécution pour l'analyse des données et les ateliers liés à la visualisation

Environnement d'analyse et de visualisation des données facile à reproduire

Je donne parfois des conférences sur la façon d'utiliser divers outils au travail, mais le problème qui me fait mal en ce moment est de savoir comment distribuer l'exemple et l'environnement d'exécution du didacticiel préparés ici. Normalement, lors de l'exécution d'un flux de travail d'analyse de données, il est rare que seul un environnement d'exécution Python ou R simple soit requis. Dans la plupart des cas, Python est SciPy / NumPy / Pandas, et les conférences utilisant R pour les biologistes sont [Bioconductor](http: //www.bioconductor. Vous devez installer un outil standard tel que org /), puis installer des bibliothèques supplémentaires pour exécuter l'application souhaitée. Bien sûr, il est possible de distribuer un fichier de machine virtuelle contenant tout, mais il y a des problèmes tels que l'augmentation de la taille de remplissage à distribuer par vous-même et comment enregistrer / automatiser la procédure requise pour créer la machine virtuelle.

Heureusement, récemment, en combinant divers outils, il est devenu possible de reproduire l'ensemble de l'environnement pour effectuer des tâches relativement complexes. Le but de cet article est de partager la méthode expérimentale que j'ai récemment essayée dans Tutorial of a Society. Nous vous serions reconnaissants si vous pouviez signaler les problèmes et fournir des commentaires sur les améliorations. __ Cette méthode est destinée à être utilisée pour divers ateliers et tutoriels d'analyse et de visualisation de données, mais avec quelques modifications, elle peut également être utilisée comme kit de démarrage pour les hackers __.

Aligner l'environnement des participants

Si vous souhaitez faire un didacticiel, vous devez unifier l'environnement des participants. C'est bien si l'organisateur peut préparer toutes les machines à l'avance, mais si vous apportez vos propres machines, c'est un problème très gênant si les dépendances logicielles sont compliquées ou si l'installation elle-même n'est pas facile. Le jour de l'événement, "j'ai travaillé sur ma machine ..." arrive souvent. Pour résoudre ce problème, nous avons combiné les outils suivants.

GitHub GitHub est utilisé comme méthode de distribution de l'environnement et du code. Dans le cas de la distribution de machine virtuelle, cela n'est pas possible en raison de la taille du fichier, mais vous pouvez éviter cela en utilisant le Docker présenté ci-dessous.

Docker

Utilisez Docker pour la distribution de l'environnement pour l'analyse et la visualisation, y compris les dépendances. Un grand nombre d'environnements pratiques sont distribués via Docker Hub, et vous pouvez les utiliser tels quels, mais en réalité, il existe certaines dépendances. Sera ajouté. C'est un grand avantage de pouvoir en construire un nouveau en héritant de l'environnement public.

IPython Notebook / Jupyter Cette fois, j'ai introduit la visualisation des données graphiques en utilisant Python, j'ai donc utilisé IPython Notebook comme moyen de distribution d'exemples de code. Il existe de nombreux articles sur IPython Notebook (à partir de la prochaine version, la partie notebook et la partie language kernel seront indépendantes, et la partie note s'appellera Jupyter). Veuillez vous y référer. De plus, il existe un référentiel Docker Hub géré par le projet IPython lui-même, et [une image avec SciPy, NumPy, Pandas, etc. préinstallés](https://registry.hub.docker.com/u/ipython/ Puisque scipyserver /) est préparé, en le spécifiant comme parent et en écrivant le Dockerfile, l'ajout minimum est requis.

Procédure réelle

Public cible

Cette fois, les personnes qui travaillaient dans les laboratoires et les agences gouvernementales étaient au centre du public. En d'autres termes, les gens qui programment comme un moyen mais ne sont pas des programmeurs à plein temps. Donc, si vous ciblez des programmeurs, je pense que certaines des étapes ci-dessous peuvent être omises.

1. Annonces et installations de logiciels pour les étudiants

Afin de se concentrer sur les parties essentielles de la conférence et de ne pas perdre de temps sur l'installation, contactez d'abord les participants pour faire installer à l'avance le logiciel nécessaire sur leur ordinateur portable. L'avantage de cette méthode est que vous pouvez gérer n'importe quel flux de travail en installant simplement les deux suivants.

Git C'était inévitable car nous distribuions ce dont nous avions besoin via GitHub. C'est aussi une surcharge, mais il est difficile de simplifier cette partie, donc j'aimerais que vous vous en souveniez comme des connaissances qui peuvent être utilisées à l'avenir. Cependant, en particulier, si vous pouvez fork et cloner le référentiel GitHub existant, il n'y a aucun problème pour le moment.

Compte Github

Heureusement que tout le monde avait un compte cette fois, donc ça s'est bien passé, mais je dois vous dire que vous avez un compte à l'avance pour ne pas oublier cela.

Docker et Boot2docker

L'installation de Docker devrait être facile pour toute personne ayant des connaissances en informatique. Cette fois, la conférence était en anglais, alors je lui ai dit de se référer à cette vidéo. Il y a des frais, mais les trois premiers chapitres, y compris les instructions d'installation, sont disponibles gratuitement:

De plus, la documentation officielle est complète, donc si vous y faites référence, vous devriez presque certainement pouvoir la configurer. La plupart des participants disent souvent Windows ou Mac, il est donc important de tester l'exemple sur trois plates-formes, y compris Linux. Cette fois, environ 90% des participants étaient des Mac, donc c'était facile pour moi personnellement.

2. Préparation du référentiel GitHub pour la distribution d'exemples de code

Tout d'abord, préparez un référentiel GitHub en tant que conteneur pour tout ce que vous utilisez pour votre conférence, à l'exception des fichiers de données volumineux. Emportez ce dont vous avez besoin là-bas.

Dans le cas d'une conférence comme celle-ci, je pense que la structure de base du référentiel est la suivante.

~/g/vizbi-2015 git:master ❯❯❯ tree
.
├── Dockerfile
├── LICENSE
├── README.md
├── graph-tool-pub-key.txt
└── tutorials
    ├── Lesson_0_IPython_Notebook_Basics.ipynb
    ├── Lesson_1_Introduction_to_cyREST.ipynb
    ├── Lesson_2_Graph_Libraries.ipynb
    ├── Lesson_3_Visualization.ipynb
    ├── answers
    │   └── Lesson_1_Introduction_to_cyREST_answer.ipynb
    ├── data
    │   ├── galFiltered.gml
    │   ├── sample.dot
    │   └── yeast.json
    └── graph-tool-test.ipynb

3 directories, 13 files

Regardons le contenu spécifique.

Dockerfile C'est pour définir l'image utilisée dans la conférence. À proprement parler, vous pouvez déployer l'image vers Docker Hub sans cela, mais si les participants souhaitent ultérieurement étendre la leur, ils peuvent immédiatement créer eux-mêmes une nouvelle version. Il est préférable de le distribuer avec.

README.md Tout d'abord, écrivons les étapes jusqu'au point où vous pouvez exécuter le conteneur comme guide de démarrage rapide. Vous avez également besoin d'un lien vers la documentation détaillée. Je vais le réparer fréquemment, donc j'utiliserai le Wiki de GitHub etc. pour le document.

Répertoire réservé au bloc-notes (tutorials)

C'est une bonne idée de garder vos fichiers .ipynb ensemble pour garder vos répertoires de niveau supérieur propres. Enregistrez les notes viables pour une utilisation dans l'atelier réel ici.

Répertoire de données (tutorials / data)

Si les données utilisées dans l'atelier sont très petites, mettez-les également dans le référentiel. Je pense qu'il y a plusieurs opinions sur ce qui fait que c'est grand, mais quand il s'agit de mégaoctets de données, il est prudent d'envisager une méthode de distribution autre que de la gérer sur GitHub. Dans le cas des unités gigaoctets, il est primitif mais sûr d'utiliser la mémoire USB. Demandez-leur de copier et de faire pivoter un par un avant le début.

3. Tester dans un environnement réel

L'accent est mis ici sur la facilité avec laquelle plusieurs personnes peuvent partager le même environnement, nous n'apprendrons donc pas grand-chose sur Docker. Il suffit de vous dire qu'il s'agit d'un environnement d'exécution portable et extensible. Cependant, si vous ne communiquez pas fermement les concepts suivants, ce sera déroutant.

Data Volumes Puisqu'on suppose que vous apprendrez en réécrivant vous-même le contenu de la note, montez le volume de données de l'hôte avec l'option -v et utilisez-le. Assurez-vous de lire d'abord cette section pour en savoir plus sur cette fonctionnalité.

Confirmez que la modification du côté du conteneur et l'ajout de fichiers du côté de l'hôte sont reflétés en temps réel en leur demandant d'entrer dans le répertoire cloné et de l'exécuter avec les options suivantes. Avoir

-v $PWD:/notebook

__Remarque: Si vous utilisez Boot2Docker, l'option -v ne peut monter que le répertoire / Users (Mac OSX) ou C: \ Users (Windows) __. Veuillez noter que certaines personnes n'ont pas pu monter le répertoire actuel en spécifiant autre chose. Pour Linux, il n'y a aucune restriction.

Essayez ensuite d'exécuter tous les blocs-notes pour voir s'il y a des problèmes. Si vous pouvez travailler selon le démarrage rapide et exécuter sans erreur, il n'y a pas de problème.

4. Le jour

Je pense que la conférence va et vient entre les diapositives et les cahiers. Il est pratique d'utiliser un bureau virtuel (Mission Control sur Mac) pour basculer entre le bureau pour le glissement et le bureau pour l'exécution des notes.

Le contenu n'est pas très général et peut ne pas être utile, mais voici les diapositives et les notes:

problème

J'ai essayé cette procédure et j'ai remarqué des problèmes, alors prenez-en note.

Installer Docker

L'installation de Docker est assez facile, et bien qu'une documentation et des vidéos bien entretenues soient disponibles, il y avait encore des participants qui sont tombés sur l'installation. Il semble que n'importe qui puisse l'installer complètement à moins qu'il ne puisse être utilisé en double-cliquant sur le programme d'installation ou en utilisant un gestionnaire de paquets tel que brew / apt-get avec zéro paramètre.

Dans ce cas, il y avait une personne qui ne comprenait pas la partie de l'ajout d'une instruction d'exportation à .bashrc etc. et l'ajout de certaines variables d'environnement à cause de boot2docker.

Compétences requises et objectif final

Malheureusement, en raison du manque de connaissances préalables, il y avait une personne qui ne pouvait pas du tout suivre. Malheureusement, ces incompatibilités peuvent se produire, il est donc important de vous assurer que vous connaissez votre objectif ultime et les connaissances dont vous avez absolument besoin.

Tirage d'image

Comme vous le savez, exécuter Docker lui-même est très léger, mais la première fois que vous l'exécutez, le téléchargement de toutes les dépendances requises à partir du référentiel Docker Hub prend beaucoup de temps. Pour cette raison, j'ai demandé aux participants d'exécuter simplement l'image distribuée en tant que devoirs avec la commande run, mais je n'ai pas transmis fermement le sens nécessaire, il était donc très difficile de démarrer le conteneur sur le site. Certaines personnes ont pris du temps. Cette fois, le réseau du laboratoire était assez rapide, donc c'était plutôt bon, mais il y a des cas où cela n'est pas possible en premier lieu en raison de restrictions de bande passante. La documentation d'installation de Docker confirme l'opération en se connectant au shell du conteneur ubuntu, mais en plus, vous devez leur dire d'exécuter l'image utilisée la veille.

Résumé

C'était la première fois que j'utilisais cette méthode, donc je me demandais si cela fonctionnerait, mais j'ai réussi à la terminer. Nous continuerons à rechercher des méthodes plus efficaces et plus fiables à travers des tutoriels et d'autres moyens.

Recommended Posts

Utilisez Docker et Jupyter comme méthode de distribution d'environnement d'exécution pour l'analyse des données et les ateliers liés à la visualisation
Mettez Jupyter et Docker Compose dans votre Chromebook et utilisez-le comme un environnement de développement léger!
Visualisation et analyse des informations de localisation des données Twitter Stava
Outil de visualisation Python pour le travail d'analyse de données
Analyse des données pour améliorer POG 2 ~ Analyse avec le notebook jupyter ~
Préparer un environnement de langage de programmation pour l'analyse des données
Comment utiliser les outils d'analyse de données pour les débutants
Construction d'un environnement d'oreiller - Pour Docker + iPython (et OpenCV)