[PYTHON] Vorbereiten der Ausführungsumgebung von PyTorch mit Docker November 2019

Überblick

Vorbereitung

Es sind ungefähr die folgenden Vorbereitungen erforderlich.

--docker Version 19.03 oder höher -Siehe Offizielle Dokumentation (dieser Link ist für Ubuntu)

Erstellen Sie eine Docker-Datei

"CUDA" und "CuDNN" werden im Container gespeichert, und der GPU-Treiber auf der Hostseite wird verwendet. In dieser "Docker-Datei" werden "Python 3.7.1" und das Python-Paket basierend auf dem Image installiert, das "CUDA: 10.1" und "CuDNN: 7" in "Ubuntu: 18.04" enthält.

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

Beispiel für den Inhalt von require.txt

requirements.txt


torch
torchvision

Verwenden Sie die Containerumgebung

Bauen Sie zuerst den Container. Führen Sie den folgenden Befehl in dem Verzeichnis aus, in dem die Docker-Datei erstellt wird.

docker build . -t torch3.7

Geben Sie den Container ein und prüfen Sie, ob die GPU erkannt werden kann. Wenn die folgende Anzeige mit dem Befehl nvidia-smi angezeigt wird, ist dies in Ordnung.

$ 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                                                 |
 +-----------------------------------------------------------------------------+

Stellen Sie abschließend sicher, dass der Torch.Tensor von PyTorch in den Speicher der GPU geladen werden kann. Ich konnte torch.Tensor auf der GPU verwenden.

$ 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')

Apropos ...

Es scheint, dass das Volume häufig synchron zwischen dem Host und dem Container verwendet wird. Ändern Sie in diesem Fall den folgenden Befehl entsprechend und verwenden Sie ihn.

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

Recommended Posts

Vorbereiten der Ausführungsumgebung von PyTorch mit Docker November 2019
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
Hinweis: Bereiten Sie die Umgebung von CmdStanPy mit Docker vor
Erstellen Sie eine Ausführungsumgebung für Jupyter Lab
Die Geschichte des Teilens der Pyenv-Umgebung mit mehreren Benutzern
Beispiel einer Pytest-Umgebung zum Reparieren der Datenbank mit Docker
Implementieren Sie PyTorch + GPU mit Docker
Bereiten Sie die Python3-Umgebung mit Docker vor
Vorhersage des Nikkei-Durchschnitts mit Pytorch 2
Vorhersage des Nikkei-Durchschnitts mit Pytorch
Geben Sie den Projektnamen von Docker-Compose mit Docker-Integration von Pycharm an
Speichern Sie die Ausgabe von GAN nacheinander ~ Mit der Implementierung von GAN durch PyTorch ~
Rufen Sie den Hostnamen des Host-PCs mit Docker unter Linux ab
Der Tag des Dockerlaufs (Hinweis)
Erstellen Sie eine MySQL + Python-Umgebung mit Docker
Nimm das Ausführungsprotokoll von Sellerie
Vorhersage des Nikkei-Durchschnitts mit Pytorch ~ Makuma ~
So überwachen Sie den Ausführungsstatus von sqlldr mit dem Befehl pv
pytorch @ python3.8 Umgebungskonstruktion mit pipenv
Erstellen Sie die Entwicklungsumgebung von Django mit Docker neu! !! !! !!
Protokollieren Sie die Omron-Umgebungssensorwerte regelmäßig mit Raspberry Pi
Bereiten Sie die Entwicklungsumgebung mit anyenv vor
Erstellen einer Umgebung für Flask / MySql / Apache / mod_wsgi / virtualenv mit Redhat7 (Python2.7) November 2020
Ich habe Umgebungsvariablen in Docker festgelegt und in Python angezeigt.
Bereiten Sie die Umgebung von Chainer auf der EC2-Spot-Instanz mit AWS Lambda vor
Protokollierung der Omron-Umgebungssensorwerte mit Raspberry Pi (USB-Typ)
Greifen Sie mit Requests auf die Docker Remote API zu
Ich habe den Inhalt des Docker-Volumes überprüft
Führen Sie IDCF Cloud CLI auf Docker aus
Erstellen Sie mit Docker eine Jupyter Lab (Python) -Umgebung
Richten Sie die Größe der Farbleiste an der Matplotlib aus
Hinter dem Flyer: Docker mit Python verwenden
Überprüfen Sie die Existenz der Datei mit Python
Informationen zur virtuellen Umgebung von Python Version 3.7
Verwenden von virtualenv, einer unabhängigen Ausführungsumgebung für Python
Holen Sie sich mit Docker eine lokale Umgebung für DynamoDB
Die dritte Nacht der Runde mit für
[Linux] Erstellen einer Jenkins-Umgebung mit Docker
Starten Sie die Umgebung mit LineBot + Heroku + Docker + Python
Die zweite Nacht der Runde mit für
Zählen Sie die Anzahl der Zeichen mit Echo
Erstellen Sie mit Docker eine Umgebung aus NGINX + NGINX Unit + MySQL
[Linux] Aufbau einer Docker-Umgebung mit Amazon Linux 2
Ich habe Pygame mit Python 3.5.1 in der Umgebung von pyenv unter OS X installiert
[Überprüfung] Versuchen Sie, die Punktgruppe an der Optimierungsfunktion von Pytorch Part 1 auszurichten
Die Geschichte des tiefen Lernens mit TPU
Hallo Welt mit gRPC / go in Docker-Umgebung
Erstellen einer Analyseumgebung mit Docker (Jupyter Notebook + PostgreSQL)
Ausführungsumgebung im Web von "Project Jupyter"
Erstellen Sie mit boot2docker eine Ausführungsumgebung für jede Sprache
Einstellung zur Ausgabe des Protokolls zur Ausführung von cron
[Hinweis] Exportieren Sie das HTML der Site mit Python.
Erhöhen Sie die Schriftgröße des Diagramms mit matplotlib