[PYTHON] Erstellen Sie mit GCP + Docker + Jupyter Lab eine beliebige Umgebung für maschinelles Lernen

Überblick

Mit GCP (GCE) + Docker + Jupyter Lab konnte ich eine Arbeitsumgebung für maschinelles Lernen der Python 3.6-Serie erstellen, in der die GPU konsequent verwendet wird. Daher werde ich sie zusammenfassen.

Hintergrund

Täglich kommen verschiedene Modelle für maschinelles Lernen heraus, und der Quellcode ist auch auf GitHub verfügbar. Obwohl ich es gerne ausprobieren möchte, ist Python 3.6 oder höher oder ich muss eine GPU verwenden. Selbst wenn Sie versuchen, eine Notebook-Instanz auf der AI-Plattform von GCP zu erstellen,

Python 3.5 ist mit AI Platform Runtime Version 1.4 und höher verfügbar. Um einen Schulungsjob in Python 3.5 einzureichen, setzen Sie die Python-Version auf "3.5" und die Laufzeitversion auf 1.4 oder höher. [Runtime Version Management AI-Plattform für TensorFlow]

Wie Sie sehen können, scheint die von der Voreinstellung bereitgestellte Laufzeitversion nur bis zu Python 3.5 zu reichen. Mit anderen Worten, wenn Sie Python 3.6 oder höher verwenden möchten, müssen Sie es selbst erstellen, also habe ich es selbst erstellt.

Umwelt diesmal erstellt

#Host-Computer-Umgebung
~$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"

~$ uname -r
5.0.0-1025-gcp

~$ sudo docker version
Client: Docker Engine - Community
 Version:           19.03.5
 API version:       1.40
 Go version:        go1.12.12
 Git commit:        633a0ea838
 Built:             Wed Nov 13 07:29:52 2019
 OS/Arch:           linux/amd64
 Experimental:      false
Server: Docker Engine - Community
 Engine:
  Version:          19.03.5
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.12
  Git commit:       633a0ea838
  Built:            Wed Nov 13 07:28:22 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.10
  GitCommit:        b34a5c8af56e510852c35414db4c1f4fa6172339
 runc:
  Version:          1.0.0-rc8+dev
  GitCommit:        3e425f80a8c931f88e6d94a8c831b9d5aa481657
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

#Umgebung im Docker-Container
~$ python -V
Python 3.6.9

~$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130

Instanz erstellen

Erstellen Sie es über die GCP-Konsole wie in der Abbildung unten gezeigt. Die Standarddistribution ist Debian, aber ich war süchtig nach der Installation des unten beschriebenen NVIDIA Container Toolkit. Deshalb habe ich mich für Ubuntu entschieden, weil ich eine vorhandene Methode entdecken konnte.

スクリーンショット 2019-11-19 13.26.55.png スクリーンショット 2019-11-19 13.27.02.png スクリーンショット 2019-11-19 13.27.09.png

Der Anmeldebefehl lautet wie folgt. Öffnen Sie den localhost-Port, damit Sie Jupyter Lab über den Browser Ihres PCs berühren können.

~$ gcloud compute ssh --zone "ZONE" "INSTANCE_NAME" \
    -- -L 8888:localhost:8888

Berühren Sie die GPU im Docker-Container

Die Methode in diesem Abschnitt ahmt die Methode von [Verwenden der GPU in einem Docker-Container mit NVIDIA Container Toolkit-CUBE SUGAR CONTAINER] nach. Die Methode entnehmen Sie bitte dem verlinkten Blog.

Sie können überprüfen, ob die GPU mit dem Docker-Container in Kontakt kommt, indem Sie Folgendes versuchen.

~$ docker run --gpus all nvidia/cuda:9.0-base nvidia-smi

NVIDIA/nvidia-docker: Build and run Docker containers leveraging NVIDIA GPUs

Erstellen Sie eine Docker-Datei für Ihre Lieblingsumgebung und senden Sie sie an GCR

In diesem Abschnitt habe ich auf Erstellen einer Berechnungsumgebung für Kaggle mit GCP und Docker - Qiita verwiesen. Die detaillierte Methode finden Sie unter dem Link. Wie später beschrieben wird, gibt es jedoch einige Details, die vom Artikel abweichen.

Die Docker-Datei, die Python 3.6 verwendet, befindet sich unten.

FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04

# install basic dependencies
RUN apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends \
    sudo git wget cmake nano vim gcc g++ build-essential ca-certificates software-properties-common \
    && rm -rf /var/lib/apt/lists/*

# install python 3.6
RUN add-apt-repository ppa:deadsnakes/ppa \
    && apt-get update \
    && apt-get install -y python3.6 python3-distutils \
    && wget -O ./get-pip.py https://bootstrap.pypa.io/get-pip.py \
    && python3.6 ./get-pip.py \
    && ln -s /usr/bin/python3.6 /usr/local/bin/python3 \
    && ln -s /usr/bin/python3.6 /usr/local/bin/python

# install common python packages
ADD ./requirements.txt /tmp
RUN pip install pip setuptools -U && pip install -r /tmp/requirements.txt

# set working directory
WORKDIR /root/user

# config and clean up
RUN ldconfig \
    && apt-get clean \
    && apt-get autoremove

Es ist fast das gleiche wie der Artikel, aber ich habe auch eine Punkt-Installation von "Python3-Distutils" hinzugefügt, um die folgenden Probleme zu beheben.

Wenn Sie Python 3.6 unter Ubuntu 16.04 usw. verwenden möchten, verwenden Sie ppa: jonathonf / python-3.6 wie hier gezeigt. Es scheint, dass das Paket am 03. Mai 2018 durch 3.6.5 ersetzt wurde, und als ich dort ein Upgrade durchführte, wurde eine Fehlermeldung angezeigt. ModuleNotFoundError: No module named 'distutils.sysconfig'。2018-05-07 - Qiita

Ich habe den Inhalt von requrirements.txt wie folgt erstellt. Ich denke, es ist praktisch, Bibliotheken einzuschließen, die häufig standardmäßig verwendet werden.

requrirements.txt


requests
numpy
pandas
pillow
matplotlib
jupyter
jupyterlab
scikit_learn

Richten Sie einen Docker-Container auf dem Server ein

Wenn Docker iamge, das in GCR registriert ist, Docker Pull auf dem Server ist, richten Sie einen Container ein.

~$ docker run --name ml-workspace-container --gpus all \ 
    -p 8888:8888 -v ~/ml-workdir:/root/user/ml-workdir -itd \
    gcr.io/YOUR_PROJECT/IMAGE_NAME:TAG /bin/bash 

---- name ist angemessen. wie es Dir gefällt ---- gpus all ist eine Beziehung, die das NVIDIA Container Toolkit verwendet. --runtime = nvidia ist nicht mehr alt

Betreten Sie den Container und starten Sie Jupyter Lab

~$ docker exec -it ml-workspace-container /bin/bash
~$ jupyter lab --port 8888 --ip=0.0.0.0 --allow-root

Zu diesem Zeitpunkt können Sie Jupyter Lab in Ihrem Browser sehen.

Jetzt können Sie Tensorflow nach Belieben installieren und können experimentieren und arbeiten. Vergessen Sie nicht, Ihre GCE-Instanz nach dem Experiment anzuhalten, um ein Überladen zu vermeiden! w

Ich hoffe es hilft dir.

Verweise

Recommended Posts

Erstellen Sie mit GCP + Docker + Jupyter Lab eine beliebige Umgebung für maschinelles Lernen
Erstellen Sie mit Docker eine Umgebung für "Deep Learning von Grund auf neu"
Erstellen Sie mit Docker eine Jupyter Lab (Python) -Umgebung
Erstellen Sie eine Umgebung mit virtualenv
Erstellen Sie mit Winsows 10 eine maschinelle Lernumgebung von Grund auf neu
So erstellen Sie schnell eine maschinelle Lernumgebung mit Jupyter Notebook mit UbuntuServer 16.04 LTS
Neuerstellung der Umgebung für maschinelles Lernen mit Miniconda (Windows-Version)
Maschinelles Lernen mit Jupyter Notebook in einer OCI Always Free-Umgebung (17.12.2019)
Erstellen einer Todo-App mit Django ① Erstellen Sie eine Umgebung mit Docker
Aufbau einer Auto-Sklearn-Umgebung, die maschinelles Lernen halbautomatisiert (Mac & Docker)
So erstellen Sie schnell eine maschinelle Lernumgebung mit Jupyter Notebook mit UbuntuServer 16.04 LTS mit anaconda
Lernen Sie maschinelles Lernen jederzeit und überall in der bedarfsgesteuerten Jupyter Notebook-Umgebung
So erstellen Sie eine NVIDIA Docker-Umgebung
Erstellen Sie mit Docker eine Python + uWSGI + Nginx-Umgebung
Schnelle Schritte zum Erstellen einer maschinellen Lernumgebung mit Jupyter Notebook unter macOS Sierra mit anaconda
Aufbau einer KI / maschinellen Lernumgebung mit Python
Erstellen einer Analyseumgebung mit Docker (Jupyter Notebook + PostgreSQL)
Erstellen Sie mit Sympy + Jupyter die stärkste Taschenrechnerumgebung
Erstellen Sie mit Docker eine Umgebung aus Nginx + uWSGI + Python (Django)
Erstellen Sie eine Python-Umgebung für maschinelles Lernen mit Containern
Aufbau einer virtuellen Umgebung mit Docker + Flask (Python) + Jupyter-Notebook
Einfaches maschinelles Lernen mit AutoAI (Teil 4) Jupyter Notebook
Eine einfache Möglichkeit, ein Importmodul mit jupyter zu erstellen
Erstellen Sie mit Python eine Entwicklungsumgebung für maschinelles Lernen
Erstellen Sie eine Zufallszahl mit einer beliebigen Wahrscheinlichkeitsdichte
Erstellen Sie eine Open AI Gym-Umgebung mit Bash unter Windows 10
Erstellen Sie mit AirtestIDE eine Umgebung für die Testautomatisierung (Tipps)
Ich habe versucht, mit Python (Mac OS X) eine Umgebung für maschinelles Lernen zu erstellen.
Erstellen einer virtuellen Anaconda-Umgebung für die Verwendung mit Azure Machine Learning und Verknüpfen mit Jupyter
Ich habe mit Docker eine API erstellt, die den vorhergesagten Wert des maschinellen Lernmodells zurückgibt
Erstellen Sie ein originales Random Dot Stereogram (RDS) aus 2D-Fotos mit Tiefenschätzung durch maschinelles Lernen
Erstellen Sie eine Umgebung für maschinelles Lernen mit Python unter MacOSX
Erstellen Sie mit VirtualBox und Ubuntu eine Scikit-Lernumgebung für maschinelles Lernen
Erstellen Sie eine App für maschinelles Lernen mit ABEJA Platform + LINE Bot
Minimales Makefile und buildout.cfg, um eine Umgebung mit buildout zu erstellen
Erstellen Sie mit VSCode & Docker Desktop eine einfache Python-Entwicklungsumgebung
Erstellen Sie eine GPU-Umgebung mit GCP und kaggle offiziellem Image (Docker)
Einstellungen der Python3-basierten maschinellen Lernumgebung auf dem Mac (Koexistenz mit Python2)
Maschinelles Lernen mit Pokemon gelernt
Eine Einführung in das maschinelle Lernen
Maschinelles Lernen mit Python! Vorbereitung
Bereiten Sie die Python3-Umgebung mit Docker vor
Maschinelles Lernen Minesweeper mit PyTorch
Erstellen Sie eine maschinelle Lernumgebung
Beginnend mit maschinellem Python-Lernen
Wechseln Sie die virtuelle Umgebung mit Jupiter
Versuchen Sie es mit Kaggle leicht maschinell
Erstellen einer Windows 7-Umgebung für eine Einführung in das maschinelle Lernen mit Python
So verwenden Sie das Jupyter-Notebook, ohne Ihre Umgebung mit Docker zu verschmutzen
Maschinelles Lernen mit Docker (42) Programmieren von PyTorch für Deep Learning Von Ian Pointer
Erstellen einer HPC-Lernumgebung mit Docker Compose (C, Python, Fortran)
Erstellen Sie mit Vagrant (Ubuntu 16.04) eine Umgebung für Django x Apache x mod_wsgi.
So erstellen Sie mit AWS Lambda eine serverlose API für maschinelles Lernen
Bis Sie Jupyter in Docker starten
Ich habe maschinelles Lernen mit liblinear versucht