En utilisant GCP (GCE) + Docker + Jupyter Lab, j'ai pu créer un environnement de travail pour l'apprentissage automatique de la série python 3.6 qui utilise rigoureusement le GPU, je vais donc le résumer.
Divers modèles d'apprentissage automatique sortent chaque jour, et le code source est également disponible sur GitHub, et même si je veux me sentir libre de l'essayer, python est 3.6 ou supérieur, ou je dois utiliser GPU. Cependant, même si vous essayez de créer une instance de notebook sur la plate-forme IA de GCP,
Python 3.5 est disponible avec la version d'exécution 1.4 et supérieure d'AI Platform. Pour soumettre une tâche d'entraînement dans Python 3.5, définissez la version Python sur "3.5" et la version d'exécution sur 1.4 ou une version supérieure. Plateforme AI de gestion des versions d'exécution pour TensorFlow
Comme vous pouvez le voir, il semble que la version d'exécution fournie par le préréglage ne concerne que python 3.5. En d'autres termes, si vous voulez utiliser python 3.6 ou supérieur, vous devez le faire vous-même, donc je l'ai fait moi-même.
#Environnement de la machine hôte
~$ 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
#Environnement à l'intérieur du conteneur Docker
~$ 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
Depuis la console GCP, créez-le comme indiqué dans l'image ci-dessous. La distribution par défaut est Debian, mais j'étais accro à l'installation du NVIDIA Container Toolkit décrit ci-dessous, j'ai donc choisi Ubuntu parce que j'ai pu découvrir une méthode existante.
La commande de connexion est la suivante. Ouvrez le port localhost pour pouvoir toucher Jupyter Lab à partir du navigateur de votre PC.
~$ gcloud compute ssh --zone "ZONE" "INSTANCE_NAME" \
-- -L 8888:localhost:8888
La méthode de cette section imite la méthode de [Utilisation du GPU dans un conteneur Docker avec le conteneur NVIDIA Container Toolkit-CUBE SUGAR CONTAINER]. Veuillez vous référer au blog lié pour la méthode.
Vous pouvez vérifier si le GPU entre en contact avec le conteneur Docker en essayant ce qui suit.
~$ docker run --gpus all nvidia/cuda:9.0-base nvidia-smi
NVIDIA/nvidia-docker: Build and run Docker containers leveraging NVIDIA GPUs
Dans cette section, j'ai fait référence à [Créer un environnement de calcul pour Kaggle avec GCP et Docker --Qiita]. Veuillez consulter le lien pour la méthode détaillée. Cependant, comme cela sera décrit plus loin, certains détails diffèrent de l'article.
Le Dockerfile qui utilise python 3.6 est ci-dessous.
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
C'est presque le même que l'article, mais j'ai également ajouté un point d'installation de python3-distutils
pour résoudre les problèmes suivants.
Si vous souhaitez utiliser Python 3.6 sur Ubuntu 16.04 etc., utilisez ppa: jonathonf / python-3.6 comme indiqué ici. Il semble que le package ait été remplacé par la version 3.6.5 le 3 mai 2018, et lorsque j'ai mis à niveau là-bas, j'ai eu une erreur. ModuleNotFoundError: No module named 'distutils.sysconfig'。2018-05-07 - Qiita
J'ai fait le contenu de requrirements.txt
comme suit. Je pense qu'il est pratique d'inclure des bibliothèques qui sont souvent utilisées par défaut.
requrirements.txt
requests
numpy
pandas
pillow
matplotlib
jupyter
jupyterlab
scikit_learn
Lorsque Docker iamge enregistré dans GCR est docker pull
sur le serveur, configurez un conteneur.
~$ 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
---- nom
est approprié. comme vous voulez
---- gpus all
est une relation utilisant le NVIDIA Container Toolkit. --runtime = nvidia
n'est plus vieux
~$ docker exec -it ml-workspace-container /bin/bash
~$ jupyter lab --port 8888 --ip=0.0.0.0 --allow-root
À ce stade, vous pourrez voir Jupyter Lab dans votre navigateur.
Vous pouvez maintenant installer tensorflow comme vous le souhaitez et vous êtes libre d'expérimenter et de travailler. Enfin, n'oubliez pas d'arrêter l'instance GCE après l'expérience pour éviter la surcharge! w
J'espère que ça t'aide.
Recommended Posts