Cet article continuera la série d'articles liés à Docker et montrera comment créer un conteneur Docker basé sur Ubuntu 20.04 LTS pour Machine Learning. Nous allons installer dans l'environnement :Python 3, Jupyter, Keras, Tensorflow, TensorBoard, Pandas, Sklearn, Matplotlib, Seaborn, pyyaml, h5py. Préparez votre environnement ML personnel en 3 minutes, hors temps de création d'image Docker !
Mise à jour 2020
J'ai mis à jour le conteneur vers la base Ubuntu 20.04 LTS et accéléré le processus de construction de Docker. Maintenant, nous ne construisons pas OpenCV à partir de la source, mais l'installons à partir de apt
.
La configuration de l'environnement est une question courante lorsque vous commencez à apprendre Machine Learning (ML). Dans cet article, je vais vous montrer comment créer votre propre conteneur Docker, y compris les frameworks suivants pour un démarrage confortable :
- Python 3
- Jupyter
- Kéras
- Tensorflow
- TensorBoard
- Pandas
- Sklearn
- Matplotlib
- Seaborn
- pyyaml
- h5py
Ce sont les 10 meilleurs frameworks Python largement utilisés pour la science des données, et vous trouverez la plupart d'entre eux dans n'importe quel article pratique sur Internet. Dans le prochain article (Comment créer un conteneur Python Data Science Docker basé sur Anaconda), je montrerai comment créer la même image au-dessus de la distribution Anaconda.
Exigences
Tout ce dont vous avez besoin est Docker et l'éditeur de texte installés sur votre système.
Structure du projet
Voici la structure finale du projet :
$ tree -a python_data_science_container
$ python_data_science_container
├── Dockerfile
├── conf
│ └── .jupyter
│ └── jupyter_notebook_config.py
└── run_jupyter.sh
2 directories, 3 files
Fichier Docker
Tout ce que vous avez à faire est de créer un dossier de projet et un nom de fichier Dockerfile
à l'intérieur :
$ mkdir python_data_science_container
$ cd python_data_science_container
$ vim Dockerfile
Après cela, placez le contenu suivant dans le Dockerfile
:
FROM ubuntu:20.04
MAINTAINER "Andrei Maksimov"
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y \
libopencv-dev \
python3-pip \
python3-opencv && \
rm -rf /var/lib/apt/lists/*
RUN pip3 install tensorflow && \
pip3 install numpy \
pandas \
sklearn \
matplotlib \
seaborn \
jupyter \
pyyaml \
h5py && \
pip3 install keras --no-deps && \
pip3 install opencv-python && \
pip3 install imutils
RUN ["mkdir", "notebooks"]
COPY conf/.jupyter /root/.jupyter
COPY run_jupyter.sh /
# Jupyter and Tensorboard ports
EXPOSE 8888 6006
# Store notebooks in this mounted directory
VOLUME /notebooks
CMD ["/run_jupyter.sh"]
Vous pouvez toujours trouver des exemples à jour de mon propre Dockerfile sur GitHub, que j'utilise pour créer mon environnement de conteneur personnel Data Science (il est également disponible gratuitement sur Docker Hub).
Configuration Jupyter
Dès que nous avons déclaré notre conteneur et ses composants, il est temps de préparer une configuration pour Jupyter. Créez un fichier jupyter_notebook_config.py avec le contenu suivant :
# get the config object
c = get_config()
# in-line figure when using Matplotlib
c.IPKernelApp.pylab = 'inline'
c.NotebookApp.ip = '*'
c.NotebookApp.allow_remote_access = True
# do not open a browser window by default when using notebooks
c.NotebookApp.open_browser = False
# No token. Always use jupyter over ssh tunnel
c.NotebookApp.token = ''
c.NotebookApp.notebook_dir = '/notebooks'
# Allow to run Jupyter from root user inside Docker container
c.NotebookApp.allow_root = True
Comme vous pouvez le deviner à partir de Dockerfile
, nous le mettrons dans /root/.jupyter/
dossier pendant le processus de construction du conteneur.
Création d'un script de démarrage
La dernière chose que nous devons faire est de créer un script run_jupyter.sh
, qui lancera le serveur Jupiter à l'intérieur de notre conteneur lors de son processus de démarrage. Créez un avec le contenu suivant :
#!/usr/bin/env bash
jupyter notebook "$@"
Et rendez ce fichier exécutable :
$ chmod +x run_jupyter.sh
Ce fichier sera lancé à l'intérieur de votre conteneur par défaut chaque fois que vous démarrerez le nouveau.
Création d'une image de conteneur
La dernière étape - la création du conteneur. Exécutez simplement la commande suivante pour créer votre conteneur Docker à partir du répertoire du projet :
$ docker build -f Dockerfile -t python_data_science_container .
Docker installera toutes les bibliothèques et frameworks nécessaires à l'intérieur de votre image de conteneur pendant le processus de construction et le rendra disponible pour utilisation.
Conteneur en cours d'exécution
Vous avez maintenant un conteneur fonctionnel et il est temps de le démarrer. Créez un dossier dans le dossier de votre projet où nous stockerons tous nos Jupyter Notebooks avec le code source de nos projets :
$ mkdir notebooks
Et démarrez le conteneur avec la commande suivante :
$ docker run -it -p 8888:8888 \
-p 6006:6006 \
-d \
-v $(pwd)/notebooks:/notebooks \
python_data_science_container
Il démarrera le conteneur et exposera Jupyter au port 8888 et au tableau de bord Tensorflow sur le port 6006 sur votre ordinateur local ou votre serveur, selon l'endroit où vous exécutez cette commande.
Veuillez noter que ce conteneur a été créé uniquement à des fins de développement local. Je suppression de l'authentification sur Jupyter dans ce conteneur, afin que tout le monde puisse se connecter au port 8888 ou 6006 et exécuter le code de cause Python.
Si vous recherchez simplement une solution de travail
Si vous ne souhaitez pas créer et maintenir votre propre conteneur et que les composants susmentionnés vous suffiront, n'hésitez pas à utiliser mon conteneur personnel, que je mets à jour régulièrement :
$ docker run -it -p 8888:8888 \
-p 6006:6006 \
-d \
-v $(pwd)/notebooks:/notebooks \
amaksimov/python_data_science
J'espère que cet article vous sera utile. Si vous aimez l'article, veuillez le republier en utilisant les médias sociaux de votre choix. A bientôt !