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.
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.
#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
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.
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
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
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
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
~$ 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.
Recommended Posts