Dies ist ein Memorandum-Artikel für den Fall, dass Sie vergessen, Docker zu verwenden, weil Sie die Lernumgebung des maschinellen Lernens auf Docker verschoben haben.
Da es sich um eine grundlegende Mac-Prämisse handelt, habe ich keine Befehle für Windows geschrieben.
GitHub Die in diesem Artikel vorgestellte Docker-Datei wird auf GitHub veröffentlicht. GitHub:/kuboshu/pythonml
So erstellen Sie ein Docker-Image mit einer installierten Bibliothek für maschinelles Lernen und spielen mit maschinellem Lernen mithilfe des Jupyter-Notebook-Containers von außen.
Da Python verwendet wird, habe ich eine Bibliothek zum maschinellen Lernen von Python eingerichtet.
Erstellt basierend auf Ubuntu 20.04. Ich installiere im Grunde nur das Python-Paket mit pip, also mache ich nichts Besonderes.
FROM ubuntu:20.04
LABEL maintainer="kuboshu83"
ENV DEBIAN_FRONTEND noninteractive
ARG INSTALLDIR_PYOCR="/app/ocr"
RUN apt-get update && \
apt-get -y upgrade && \
apt-get install -y git \
make \
cmake \
gcc \
g++ \
wget \
zip \
curl && \
# ~~~~~Python-Installation~~~~~
apt-get install -y python3 python3-pip && \
ln -s $(which python3) $(dirname $(which python3))/python && \
ln -s $(which pip3) $(dirname $(which python3))/pip && \
# ~~~~~Installation von ML-bezogenen Bibliotheken für Python~~~~~
#Tensorflow und Pytorch sind groß. Kommentieren Sie sie aus, wenn Sie sie nicht benötigen.
#Die geschätzte Kapazität ist der Tensorfluss=1.2GB, pytorch=Es ist 2 GB.
# Tensorflow,Für andere ML-ähnliche Bibliotheken als Pytorch sind es ungefähr 2 GB.
pip install pystache \
numpy==1.18.5 \
pandas \
scikit-learn \
matplotlib \
jupyterlab \
pycaret \
lightgbm \
alembic==1.4.1 \
sqlalchemy==1.3.13 \
optuna && \
pip install tensorflow && \
pip install torch torchvision && \
# ~~~~~OpenCV-Installation~~~~~
pip install opencv-python && \
apt-get install -y libgl1-mesa-dev && \
# ~~~~Installieren Sie Tesseract~~~~~
apt-get install -y libleptonica-dev tesseract-ocr && \
# ~~~~Installieren Sie PyOCR~~~~~
pip install pyocr && \
mkdir -p /usr/local/share/tessdata/ && \
curl https://raw.githubusercontent.com/tesseract-ocr/tessdata_best/master/jpn.traineddata -sS -L -o /usr/share/tesseract-ocr/4.00/tessdata/jpn.traineddata && \
# ~~~~Installieren Sie MeCab~~~~
apt-get install -y mecab libmecab-dev mecab-ipadic && \
pip install --no-binary :all: mecab-python3 && \
pip install neologdn && \
#~~~~Arbeitsverzeichnis erstellen~~~~
mkdir -p /home/share
#Starten Sie die Python-Shell standardmäßig
CMD ["python"]
Sie können das Docker-Image mit dem folgenden Befehl erstellen. Da der gleiche Befehl in build.sh auf Github beschrieben ist, können Sie das Image auch erstellen, indem Sie build.sh ausführen.
docker build -t Bildname:Speicherort der Version Dockerfile
Wenn Sie share / im aktuellen Verzeichnis erstellen und den folgenden Befehl ausführen, wird Jupyter-notebook neben dem Container gestartet. Danach können Sie Jupyter-Notebook verwenden, indem Sie die angezeigte URL mit einem Browser öffnen. Bitte geben Sie eine geeignete Version des Docker-Images an. Im folgenden Beispiel wird v0.1.0 verwendet.
#Vom Container/home/Erstellen Sie ein Verzeichnis, das Sie mit share teilen möchten
> mkdir share
#Starten Sie den Container.
# -rm:Löschen Sie den Container gleichzeitig mit dem Stoppen des Containers.
# -it:Erforderlich, um das Terminal mit dem Container zu verwenden.
#Jupyter mag diesmal-Es ist unnötig, wenn Sie nur ein Notebook verwenden, aber irgendwie ist es enthalten.
# -p :Weisen Sie Port 8888 auf dem Host Port 8888 auf dem Container zu.
# -v :Gastgeber(Aktuelles Verzeichnis)/share/Der Kontainer/home/share/Montieren auf.
# -w :Das aktuelle Verzeichnis des Containers, wenn der Container gestartet wird/home/share/Zu.
# Jupyter-Das Labor läuft auf Port 8888.
> docker run --rm -it -p 8888:8888 -w /home/share -v $(pwd)/share:/home/share pythonml:v0.1.0 /usr/local/bin/jupyter lab --ip=0.0.0.0 --port 8888 --allow-root
Wenn Sie den Container starten, wird / home / share / für die Arbeit vorbereitet zum aktuellen Verzeichnis. Daher ist es einfach zu verwenden, wenn Sie dies für das Verzeichnis auf der Hostseite freigeben.
Ich möchte das Docker-Image vollständig automatisch erstellen, daher möchte ich nicht aufgefordert werden, es bei der Installation von Paketen manuell festzulegen. Daher wollte ich die interaktive Einstellung zum Zeitpunkt der Installation deaktivieren und daher Folgendes als Umgebungsvariablen festlegen.
ENV DEBIAN_FRONTEND noninteractive
--Referenziert (Tutorial zum Verständnis des Docker-Bildes: qiita @ zembutsu)
Zuerst habe ich den Befehl RUN häufig verwendet, ohne über irgendetwas nachzudenken, aber als ich das Bild mit dem Docker-Bild ls -a überprüfte, wurde das Bild der Zwischenschicht wie unten gezeigt in Massenproduktion hergestellt. Anscheinend erstellt Docker jedes Mal, wenn Sie einen Befehl in einer Docker-Datei verwenden, eine Zwischenebene und synthetisiert schließlich die Zwischenebenen, um das endgültige Bild zu erstellen. Aus diesem Grund haben wir die Anzahl der verwendeten Anweisungen so weit wie möglich reduziert.
Ich weiß es noch nicht, weil ich nicht verstehe, ob es ein Problem mit vielen mittleren Schichten gibt. Als ich jedoch die Bildliste anzeigte, fühlte ich mich unwohl, dass es viele \ <keine > gab, also versuchte ich, die Anzahl der Zwischenebenen zu reduzieren.
REPOSITORY TAG IMAGE ID
pythonml v0.1.0 xxxxxx
<none> <none> xxxxxx <=So was
<none> <none> xxxxxx <=So was
<none> <none> xxxxxx <=So was
<none> <none> xxxxxx <=So was
<none> <none> xxxxxx <=So was
<none> <none> xxxxxx <=So was
<none> <none> xxxxxx <=Das auch
ubuntu 20.04 xxxxxx
Dieses Mal habe ich gerade ein Docker-Image mit dem installierten Python-Paket erstellt und mir notiert, wie eine Umgebung erstellt wird, in der mit Jupyter-Notebook vom Host aus mit maschinellem Lernen gespielt werden kann. Ich habe noch einige Bibliotheken, mit denen ich spielen möchte, daher möchte ich sie in Zukunft hinzufügen.
Auch dieses Mal geben wir dem Erscheinungsbild der Docker-Datei Priorität. Da alle Bibliotheken mit apt-get oder pip abgelegt sind, gibt es ältere Versionen. Wenn ich Zeit habe, möchte ich aus dem Quellcode erstellen und die neueste Version installieren.
Recommended Posts