In diesem Artikel erstellen wir einen Docker-Container für die Entwicklungsumgebung für maschinelles Lernen (ML). Dieses Bild ist sehr nützlich, wenn Sie ML-Modelle entwickeln oder ein vorkonfiguriertes Jupyter-Notebook mit einigen der nützlichsten Bibliotheken benötigen.
Kürzlich haben wir einen Artikel Quick And Simple Introduction to Kubernetes Helm Charts in 10 minutes veröffentlicht, in dem Sie Anweisungen zur Verwendung von Helm zur Bereitstellung dieses Containers in Ihrem Kubernetes-Cluster finden.
Update für 2020
- Aktualisiert auf Python 3.6.
- Viele Build-Probleme behoben.
Letztes Mal haben wir einen Docker-Container mit Jupiter, Keras, Tensorflow, Pandas, Sklearn und Matplotlib erstellt. Plötzlich verstand ich, dass ich OpenCV für Docker-Bild- und Videomanipulationen vermisst habe. Nun, ich verbrachte den ganzen Tag damit, einen neuen Image-Build vorzubereiten. Und in diesem Artikel zeige ich Ihnen, wie Sie es mit dem offiziellen Docker-Image von Anaconda viel schneller machen können.
Dafür gibt es zwei Möglichkeiten.
Einfacher Weg
Dieser Vorgang dauert ungefähr 7 Minuten, um den Container mit einer Größe von 3,11 GB zu erstellen.
Anaconda-Weg
Als ich 2018 anfing, mit ML zu spielen, war Anaconda eine superschnelle und einfachste Möglichkeit, Docker-Container für ML-Experimente zu erstellen. Es war viel schneller, dann OpenCV 3 für Ubuntu 16.04 zu kompilieren. Heute ist es umgekehrt.
Ich verwende dieselben Quellen, ändere aber Dockerfile
.
So sieht es aus:
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"]
Wie Sie sehen können, installieren wir nur libgtk2.0 für OpenCV-Unterstützung und alle anderen Komponenten wie Terraform, Pandas, Scikit-learn, Matplotlib, Keras und andere mit dem Conda-Paketmanager.
Laufender Container
Jetzt haben Sie einen funktionierenden Container und es ist Zeit, ihn zu starten. Erstellen Sie einen Ordner innerhalb des Ordners Ihres Projekts, in dem wir alle unsere Jupyter Noteboos mit dem Quellcode unserer Projekte speichern:
mkdir notebooks
Und starten Sie den Container mit dem folgenden Befehl:
docker run -it -p 8888:8888 -p 6006:6006 \
-d -v $(pwd)/notebooks:/notebooks \
python_data_science_container:anaconda
Der Container wird gestartet und Jupyter auf Port 8888
verfügbar gemacht und Tensorflow-Dashboard auf Port 6006
auf Ihrem lokalen Computer oder Ihrem Server, je nachdem, wo Sie diesen Befehl ausführen.
Wenn Sie keinen eigenen Container erstellen und pflegen möchten, können Sie gerne meinen persönlichen Container verwenden:
docker run -it -p 8888:8888 -p 6006:6006 -d -v \
$(pwd)/notebooks:/notebooks amaksimov/python_data_science:anaconda
Installation zusätzlicher Pakete
Sobald Sie Jupyter gestartet haben, fehlen möglicherweise einige Pakete für Sie und es ist in Ordnung. Fühlen Sie sich frei, den folgenden Befehl in einer Zelle Ihres Jupyter-Notebooks auszuführen:
!pip install requests
Oder für conda:
!conda install scipy
Ich hoffe, dieser Artikel war hilfreich für Sie. Wenn ja, bitte liken oder reposten. Bis bald!
Zusammenfassung
Die Verwendung von Anaconda als Basis-Image macht Ihr Docker-Image schwer. Ich meine WIRKLICH schwer.
Zum Beispiel:
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
Die Installation aller Komponenten im Ubuntu 20.04 LTS-Container-Image einschließlich OpenCV 3 dauert ca. 7 Minuten und das endgültige Image ca. 3,11 GB.
Gleichzeitig dauert der Erstellungsprozess des Anaconda3-Containers x2-mal länger und Sie erhalten ein x2-mal größeres Image (~6,36 GB). Der Erstellungsprozess ist viel komplizierter als im Jahr 2018, und ich brauchte eine Weile, um die Konfiguration auf einen funktionierenden Zustand zu aktualisieren.
Wir hoffen, Sie fanden diesen Artikel hilfreich. Wenn ja, helfen Sie uns bitte, es in der Welt zu verbreiten!