Dieser Artikel setzt die Docker-bezogene Artikelserie fort und zeigt, wie man einen Ubuntu 20.04 LTS-basierten Docker-Container für maschinelles Lernen erstellt. Wir installieren in der Umgebung:Python 3, Jupyter, Keras, Tensorflow, TensorBoard, Pandas, Sklearn, Matplotlib, Seaborn, pyyaml, h5py. Bereiten Sie Ihre persönliche ML-Umgebung in 3 Minuten vor, ohne Docker-Image-Erstellungszeit!
Aktualisierung 2020
Ich habe den Container auf die Ubuntu 20.04 LTS-Basis aktualisiert und den Docker-Build-Prozess beschleunigt. Jetzt bauen wir OpenCV nicht aus dem Quellcode, sondern installieren es von apt
.
Die Einrichtung der Umgebung ist eine häufige Frage, wenn Sie mit dem Erlernen von maschinellem Lernen (ML) beginnen. In diesem Artikel zeige ich Ihnen, wie Sie Ihren eigenen Docker-Container erstellen, einschließlich der folgenden Frameworks für einen komfortablen Start:
- Python 3
- Jupyter
- Keras
- Tensorflow
- TensorBoard
- Pandas
- Sklearn
- Matplotlib
- Seaborn
- pyyaml
- h5py
Dies sind die TOP 10 der am häufigsten verwendeten Python-Frameworks für Data Science, und Sie finden die meisten davon in jedem Anleitungsartikel im Internet. Im nächsten Artikel (How to build Python Data Science Docker container based on Anaconda) zeige ich, wie man das gleiche Image auf der Grundlage der Anaconda-Distribution erstellt.
Anforderungen
Sie müssen lediglich Docker und einen Texteditor auf Ihrem System installiert haben.
Projektstruktur
Hier ist die endgültige Projektstruktur:
$ tree -a python_data_science_container
$ python_data_science_container
├── Dockerfile
├── conf
│ └── .jupyter
│ └── jupyter_notebook_config.py
└── run_jupyter.sh
2 directories, 3 files
Dockerfile
Sie müssen lediglich einen Projektordner und einen Dateinamen Dockerfile
erstellen innen:
$ mkdir python_data_science_container
$ cd python_data_science_container
$ vim Dockerfile
Fügen Sie danach den folgenden Inhalt in das Dockerfile
ein :
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"]
Auf GitHub finden Sie immer aktuelle Beispiele für mein eigenes Dockerfile, das ich verwende, um meine persönliche Data Science-Containerumgebung zu erstellen (es ist auch kostenlos auf Docker Hub verfügbar).
Jupyter-Konfiguration
Sobald wir unseren Container und seine Komponenten deklariert haben, ist es an der Zeit, eine Konfiguration für Jupyter vorzubereiten. Erstellen Sie eine Datei jupyter_notebook_config.py mit folgendem Inhalt:
# 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
Wie Sie aus Dockerfile
erraten können , wir fügen es in /root/.jupyter/
ein Ordner während des Container-Erstellungsprozesses.
Startskript erstellen
Als letztes müssen wir ein Skript run_jupyter.sh
erstellen , die den Jupiter-Server während des Startvorgangs in unserem Container startet. Erstellen Sie eine mit folgendem Inhalt:
#!/usr/bin/env bash
jupyter notebook "$@"
Und machen Sie diese Datei ausführbar:
$ chmod +x run_jupyter.sh
Diese Datei wird standardmäßig jedes Mal in Ihrem Container gestartet, wenn Sie den neuen starten.
Container-Image erstellen
Die letzte Phase – Containererstellung. Führen Sie einfach den folgenden Befehl aus, um Ihren Docker-Container aus dem Projektverzeichnis zu erstellen:
$ docker build -f Dockerfile -t python_data_science_container .
Docker installiert während des Build-Prozesses alle erforderlichen Bibliotheken und Frameworks in Ihrem Container-Image und stellt es zur Verwendung zur Verfügung.
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 Notebooks 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
Es startet den Container und stellt Jupyter auf Port 8888 und Tensorflow Dashboard auf Port 6006 auf Ihrem lokalen Computer oder Ihrem Server bereit, je nachdem, wo Sie diesen Befehl ausführen.
Bitte beachten Sie, dass dieser Container nur für lokale Entwicklungszwecke erstellt wurde. ich Authentifizierung auf Jupyter in diesem Container entfernt, sodass sich jeder mit Port 8888 oder 6006 verbinden und den Python-Code der Ursache ausführen kann
Wenn Sie nur nach einer funktionierenden Lösung suchen
Wenn Sie keinen eigenen Container erstellen und pflegen möchten und die oben genannten Komponenten für Sie ausreichen, können Sie gerne meinen persönlichen Container verwenden, den ich normalerweise aktualisiere:
$ docker run -it -p 8888:8888 \
-p 6006:6006 \
-d \
-v $(pwd)/notebooks:/notebooks \
amaksimov/python_data_science
Ich hoffe, dass dieser Artikel für Sie hilfreich sein wird. Wenn Ihnen der Artikel gefällt, posten Sie ihn bitte über die gewünschten sozialen Medien erneut. Bis bald!