Dans cet article, nous allons créer un conteneur Docker pour l'environnement de développement Machine Learning (ML). Cette image est très utile si vous développez des modèles ML ou si vous avez besoin d'un bloc-notes Jupyter préconfiguré avec certaines des bibliothèques les plus utiles.
Récemment, nous avons publié un article Introduction rapide et simple aux graphiques Helm de Kubernetes en 10 minutes, dans lequel vous pouvez trouver des instructions sur l'utilisation de Helm pour déployer ce conteneur sur votre cluster Kubernetes.
Mise à jour pour 2020
- Mise à jour vers Python 3.6
- Résolution de nombreux problèmes de compilation
La dernière fois, nous avons créé un conteneur Docker avec Jupiter, Keras, Tensorflow, Pandas, Sklearn et Matplotlib. Soudain, j'ai compris que j'avais raté OpenCV pour les manipulations d'images et de vidéos Docker. Eh bien, j'ai passé toute la journée à préparer une nouvelle image. Et dans cet article, je vais vous montrer comment le faire beaucoup plus rapidement en utilisant l'image Docker officielle d'Anaconda.
Il y a deux façons de procéder.
Manière simple
Ce processus prend environ 7 minutes pour créer le conteneur de 3,11 Go.
Chemin d'Anaconda
Lorsque j'ai commencé à jouer avec ML en 2018, Anaconda était un moyen extrêmement rapide et simple de créer un conteneur Docker pour les expériences ML. C'était beaucoup plus rapide, puis de compiler OpenCV 3 pour Ubuntu 16.04. Aujourd'hui, c'est l'inverse.
J'utilise les mêmes sources, mais en changeant Dockerfile
.
Voici à quoi ça ressemble :
FROM continuumio/anaconda3
MAINTAINER "Andrei Maksimov"
RUN apt-get update && apt-get install -y libgtk2.0-dev && \
rm -rf /var/lib/apt/lists/*
RUN /opt/conda/bin/conda update -n base -c defaults conda && \
/opt/conda/bin/conda install python=3.6 && \
/opt/conda/bin/conda install anaconda-client && \
/opt/conda/bin/conda install jupyter -y && \
/opt/conda/bin/conda install --channel https://conda.anaconda.org/menpo opencv3 -y && \
/opt/conda/bin/conda install numpy pandas scikit-learn matplotlib seaborn pyyaml h5py keras -y && \
/opt/conda/bin/conda upgrade dask && \
pip install tensorflow 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"]
Comme vous pouvez le voir, nous installons uniquement libgtk2.0 pour le support OpenCV et tous les autres composants comme Terraform, Pandas, Scikit-learn, Matplotlib, Keras et autres en utilisant le gestionnaire de paquets conda.
Conteneur en cours d'exécution
Vous avez maintenant un conteneur de travail et il est temps de le démarrer. Créez un dossier dans le dossier de votre projet où nous stockerons tous nos Jupyter Noteboos 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:anaconda
Il démarrera le conteneur et exposera Jupyter sur le port 8888
et tableau de bord Tensorflow sur le port 6006
sur votre ordinateur local ou votre serveur selon l'endroit où vous exécutez cette commande.
Si vous ne souhaitez pas créer et gérer votre propre conteneur, n'hésitez pas à utiliser mon conteneur personnel :
docker run -it -p 8888:8888 -p 6006:6006 -d -v \
$(pwd)/notebooks:/notebooks amaksimov/python_data_science:anaconda
Installer des packages supplémentaires
Dès que vous avez lancé Jupyter, certains packages peuvent vous manquer et c'est normal. N'hésitez pas à lancer la commande suivante dans une cellule de votre notebook Jupyter :
!pip install requests
Ou pour conda :
!conda install scipy
J'espère que cet article vous a été utile. Si c'est le cas, n'hésitez pas à l'aimer ou à le republier. A bientôt !
Résumé
L'utilisation d'Anaconda comme image de base alourdit votre image Docker. Je veux dire VRAIMENT lourd.
Par exemple :
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
amaksimov/python_data_science anaconda 7021f28dfba1 29 minutes ago 6.36GB
amaksimov/python_data_science latest 3330c8eaec1c 2 hours ago 3.11GB
L'installation de tous les composants à l'intérieur de l'image de conteneur Ubuntu 20.04 LTS, y compris OpenCV 3, prend environ 7 minutes et l'image finale d'environ 3,11 Go.
Dans le même temps, le processus de création de conteneur Anaconda3 prend x2 fois plus de temps et vous donne une image x2 fois plus grande (~ 6,36 Go). Le processus de construction est beaucoup plus compliqué, alors c'était en 2018, et il m'a fallu un certain temps pour mettre à jour la configuration à un état de fonctionnement.
Nous espérons que vous avez trouvé cet article utile. Si oui, s'il vous plaît, aidez-nous à le diffuser dans le monde !