[PYTHON] Préparation de l'environnement d'exécution de PyTorch avec Docker Novembre 2019

Aperçu

--Préparer l'environnement d'exécution du Deep Learning by PyTorch avec le conteneur Docker --Docker version 19.03 ou ultérieure, si vous avez le pilote GPU du système d'exploitation hôte et nvidia-container-runtime, les autres seront confinés dans le conteneur ―― Dans la plupart des cas, vous pouvez reproduire l'environnement avec une seule commande.

Préparation

En gros, les préparatifs suivants sont nécessaires.

--docker version 19.03 ou ultérieure -Voir Documentation officielle (ce lien est pour Ubuntu)

Créer un Dockerfile

«CUDA» et «CuDNN» sont stockés dans le conteneur, et le pilote GPU du côté hôte est utilisé. Dans ce Dockerfile, Python 3.7.1 et le paquet Python sont installés sur la base de l'image contenant CUDA: 10.1 et CuDNN: 7 dans ʻUbuntu: 18.04`.

FROM nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04
 
WORKDIR /code
ENV PYTHON_VERSION 3.7.1
ENV HOME /root
ENV PYTHON_ROOT $HOME/local/python-$PYTHON_VERSION
ENV PATH $PYTHON_ROOT/bin:$PATH
ENV PYENV_ROOT $HOME/.pyenv
ENV TZ=Asia/Tokyo
ADD requirements.txt /code
RUN export DEBIAN_FRONTEND=noninteractive && \
    apt-get -y update && \
    apt-get -y upgrade && \
    apt-get -y install tzdata
RUN apt-get -y install git make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev && \
     apt-get -y install wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev && \
    git clone https://github.com/pyenv/pyenv.git $PYENV_ROOT && \
    $PYENV_ROOT/plugins/python-build/install.sh && \
    /usr/local/bin/python-build -v $PYTHON_VERSION $PYTHON_ROOT && \
    rm -rf $PYENV_ROOT && \
    pip install -r requirements.txt

Exemple du contenu de requirements.txt

requirements.txt


torch
torchvision

Utilisez l'environnement du conteneur

Tout d'abord, construisez le conteneur. Exécutez la commande suivante dans le répertoire où le Dockerfile est créé.

docker build . -t torch3.7

Entrez dans le conteneur et vérifiez si le GPU peut être reconnu. Si l'affichage suivant apparaît avec la commande nvidia-smi, c'est ok.

$ docker run -it --gpus all torch3.7 bash
$ nvidia-smi
 Tue Nov 19 15:01:12 2019       
 +-----------------------------------------------------------------------------+
 | NVIDIA-SMI 430.50       Driver Version: 430.50       CUDA Version: 10.1     |
 |-------------------------------+----------------------+----------------------+
 | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
 | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
 |===============================+======================+======================|
 |   0  GeForce GTX 166...  Off  | 00000000:1F:00.0 Off |                  N/A |
 | 45%   36C    P0     1W / 120W |      0MiB /  5944MiB |      0%      Default |
 +-------------------------------+----------------------+----------------------+
                                                                                
 +-----------------------------------------------------------------------------+
 | Processes:                                                       GPU Memory |
 |  GPU       PID   Type   Process name                             Usage      |
 |=============================================================================|
 |  No running processes found                                                 |
 +-----------------------------------------------------------------------------+

Enfin, confirmez que la torche de PyTorch.Tensor peut être chargée dans la mémoire sur le GPU. J'ai pu utiliser torch.Tensor sur le GPU.

$ python
>>> import torch
>>> torch.cuda.is_available()
True
>>> x = torch.Tensor([0, 1])
>>> x
tensor([0., 1.])
>>> x.cuda()
tensor([0., 1.], device='cuda:0')

Au fait ...

Il semble que le volume soit souvent utilisé de manière synchrone entre l'hôte et le conteneur. Dans ce cas, modifiez la commande suivante selon le cas et utilisez-la.

docker run -it -v /path/to/your_project_directory:/code --gpus all torch3.7 bash

Recommended Posts

Préparation de l'environnement d'exécution de PyTorch avec Docker Novembre 2019
Préparer l'environnement d'exécution de Python3 avec Docker
Remarque: préparez l'environnement de CmdStanPy avec docker
Créer un environnement d'exécution pour Jupyter Lab
L'histoire du partage de l'environnement pyenv avec plusieurs utilisateurs
Exemple d'environnement pytest pour réparer la base de données avec Docker
Implémenter le GPU PyTorch + avec Docker
Préparer l'environnement python3 avec Docker
Prédiction de la moyenne Nikkei avec Pytorch 2
Prédiction de la moyenne Nikkei avec Pytorch
Spécifiez le nom du projet de docker-compose avec l'intégration Docker de Pycharm
Sauvegardez la sortie de GAN une par une ~ Avec l'implémentation de GAN par PyTorch ~
Obtenez le nom d'hôte du PC hôte avec Docker sous Linux
jour de course des dockers (note)
Construire un environnement Mysql + Python avec docker
Prenez le journal d'exécution du céleri
Prédiction de la moyenne Nikkei avec Pytorch ~ Makuma ~
Comment surveiller l'état d'exécution de sqlldr avec la commande pv
Construction de l'environnement pytorch @ python3.8 avec pipenv
Reconstruisez l'environnement de développement de Django avec Docker! !! !! !!
Consigner périodiquement les valeurs des capteurs d'environnement Omron avec Raspberry Pi
Préparez l'environnement de développement avec anyenv
Création d'un environnement pour Flask / MySql / Apache / mod_wsgi / virtualenv avec Redhat7 (Python2.7) Novembre 2020
J'ai défini des variables d'environnement dans Docker et je les ai affichées en Python.
Préparer l'environnement de Chainer sur l'instance spot EC2 avec AWS Lambda
Enregistrement des valeurs du capteur d'environnement Omron avec Raspberry Pi (type USB)
Accéder à l'API Docker Remote avec des requêtes
J'ai vérifié le contenu du volume du docker
Exécutez IDCF Cloud CLI sur Docker
Créer un environnement Jupyter Lab (Python) avec Docker
Alignez la taille de la barre de couleurs avec matplotlib
Derrière le flyer: utiliser Docker avec Python
Vérifier l'existence du fichier avec python
À propos de l'environnement virtuel de Python version 3.7
Utilisation de virtualenv, un environnement d'exécution indépendant pour Python
Obtenez un environnement local pour DynamoDB avec Docker
La troisième nuit de la boucle avec pour
[Linux] Créer un environnement Jenkins avec Docker
Environnement de lancement avec LineBot + Heroku + Docker + Python
La deuxième nuit de la boucle avec pour
Compter le nombre de caractères avec écho
Construire un environnement de NGINX + NGINX Unit + MySQL avec Docker
[Linux] Construction de l'environnement Docker avec Amazon Linux 2
J'ai installé Pygame avec Python 3.5.1 dans l'environnement de pyenv sur OS X
[Vérification] Essayez d'aligner le groupe de points avec la fonction d'optimisation de pytorch Partie 1
L'histoire de l'apprentissage profond avec TPU
Hello World avec gRPC / go dans l'environnement Docker
Construire un environnement d'analyse avec Docker (jupyter notebook + PostgreSQL)
Environnement d'exécution sur le Web par "Project Jupyter"
Créez un environnement d'exécution pour chaque langue avec boot2docker
Paramètre pour afficher le journal de l'exécution de cron
[Note] Exportez le html du site avec python.
Augmentez la taille de la police du graphique avec matplotlib