dockerをインストールする(Ubuntu 18.04 )
docker-install
REF
https://docs.docker.com/engine/install/ubuntu/
環境
- Ubuntu 18.04.4
必須パッケージのインストール
sudo apt update sudo apt install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common
GPG-keyの追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo apt-key fingerprint 0EBFCD88
リポジトリの追加
sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
dockerのインストール
sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io
sudoなしで起動できるようにする
# $USERをdockerグループに追加する sudo usermod -aG docker $USER # dockerが使用するソケットを一般ユーザでも読み込み出来るようにする sudo chmod 666 /var/run/docker.sock
動作確認
# version確認 docker --version # Docker version 19.03.8, build afacb8b7f0 # 動作確認 docker run hello-world
以上。
Ubuntuでローカル内のIPを調べる
arp-scan
sshで接続したいPCのIPを調べるときに便利。
インストール
sudo apt install arp-scan
使い方
sudo arp-scan -I enp3s0 -l # enp3s0はNICのインターフェイス名
結果
nterface: wlp3s0, datalink type: EN10MB (Ethernet) Starting arp-scan 1.9 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/) 192.168.x.xxx aa:xx:bb:xx:95:xx NEC AccessTechnica, Ltd. 192.168.x.xxx aa:xx:bb:03:75:xx (Unknown) 192.168.x.xxx aa:xx:bb:e3:70:xx (Unknown) 192.168.x.xxx aa:xx:bb:e2:c6:xx (Unknown) 192.168.x.xxx aa:xx:bb:02:07:xx (Unknown) 192.168.x.xxx aa:xx:bb:1c:4b:xx (Unknown) 192.168.x.xxx aa:xx:bb:2e:cc:xx (Unknown) 192.168.x.xxx aa:xx:bb:6b:ec:xx Hewlett Packard 192.168.x.xxx aa:xx:bb:75:ec:xx (Unknown) 192.168.x.xxx aa:xx:bb:b6:fc:xx (Unknown) 192.168.x.xxx aa:xx:bb:08:60:xx (Unknown) 11 packets received by filter, 0 packets dropped by kernel Ending arp-scan 1.9: 256 hosts scanned in 2.278 seconds (112.38 hosts/sec). 11 responded ```` 以上。
OpenPoseを試してみた。
OpenPose-Tensorflow
本家CaffeベースのOpenPoseを試したが・・・
Check failed: error == cudaSuccess (2 vs. 0) out of memory
で断念。
Tensorflow版はうまく動いた。
- 20/05/08
- Ubuntu18.04.4
- GeForce RTX 2060
- Docker version 19.03.8
REF
https://github.com/ildoonet/tf-pose-estimation
- dockerコンテナ上に環境を構築して実行した。
1. docker container
dockerfile
FROM nvidia/cuda:10.2-cudnn7-devel-ubuntu18.04 ENV DEBIAN_FRONTEND=noninteractive \ LC_ALL=C.UTF-8 \ LANG=C.UTF-8 RUN apt update && apt install -y --no-install-recommends \ git curl wget \ python3-dev \ cython3 \ python3-tk \ libgtk2.0-dev \ swig \ imagemagick \ && rm -rf /var/lib/apt/lists/* RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py \ && python3 get-pip.py \ && rm get-pip.py RUN pip3 install --no-cache-dir \ numpy \ tensorflow-gpu==1.15 \ opencv-python==3.4.5.20 WORKDIR /workspace RUN git clone https://www.github.com/ildoonet/tf-pose-estimation \ && cd tf-pose-estimation \ && pip3 install -r requirements.txt WORKDIR /workspace/tf-pose-estimation/tf_pose/pafprocess RUN swig -python -c++ pafprocess.i && python3 setup.py build_ext --inplace WORKDIR /workspace/tf-pose-estimation/models/graph/cmu RUN bash download.sh
build image
mkdir docker-build cd docker-build # dockerfileを作成 sudo gedit dockerfile docker build -t openpose-tensorflow:1.15 .
run container
xhost + docker run -it --rm --gpus all \ -e DISPLAY=$DISPLAY \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -v /etc/group:/etc/group:ro \ -v /etc/passwd:/etc/passwd:ro \ -u $(id -u $USER):$(id -g $USER) \ -w /workspace/tf-pose-estimation/ \ openpose-tensorflow:1.15
2. Run demo
python3 run.py --model=mobilenet_thin --resize=432x368 --image=./images/p1.jpg
result image
- INFO inference image: ./images/p1.jpg in 0.2125 seconds
以上。
MaskRCNNを試してみた。
MaskRCNN-tensorflow-keras
- 20/05/06
- Ubuntu18.04.4
- GeForce RTX 2060
- Docker version 19.03.8
Ref
https://github.com/matterport/Mask_RCNN
1. 実行環境の構築
事前準備
- ローカルにリポジトリをクローンしてあとで編集可能にする。
- 学習済みweightsもローカルにダウンロードしておく。
# リポジトリをクローン git clone https://github.com/matterport/Mask_RCNN cd Mask_RCNN sudo rm -r .git # wightsをダウンロード mkdir weights wget -P ./weights https://github.com/matterport/Mask_RCNN/releases/download/v2.0/mask_rcnn_coco.h5
コンテナイメージの作成
- dockerfileからイメージをビルド
- https://github.com/matterport/Mask_RCNN#installationを参照
FROM nvidia/cuda:10.1-devel-ubuntu18.04 # FROM nvcr.io/nvidia/tensorflow:20.02-tf1-py3 ENV DEBIAN_FRONTEND=noninteractive \ LC_ALL=C.UTF-8 \ LANG=C.UTF-8 RUN apt update && apt install -y --no-install-recommends \ git curl \ python3-dev \ python3-tk \ libgtk2.0-dev \ imagemagick \ && rm -rf /var/lib/apt/lists/* RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py \ && python3 get-pip.py \ && rm get-pip.py # MaskRCNN requirements WORKDIR /workspace RUN git clone https://github.com/matterport/Mask_RCNN WORKDIR /workspace/Mask_RCNN # requirements.txtを修正 RUN sed -i -e 's/tensorflow>=1.3.0/tensorflow==1.3.0/g' requirements.txt \ && sed -i -e 's/opencv-python/opencv-python==3.4.5.20/g' requirements.txt \ && sed -i -e 's/keras>=2.0.8/keras==2.2.0/g' requirements.txt \ && pip3 install -r requirements.txt \ && python3 setup.py install # coco pythonapi RUN pip3 install pycocotools WORKDIR /workspace ENV QT_X11_NO_MITSHM=1 CMD ["/bin/bash"]
# dockerfileの作成 mkdir docker-build cd docker-build sudo gedit dockerfile # dockerfileを作成 # コンテナイメージのビルド docker build -t maskrcnn-tensorflow/keras .
2. 推論用コードの作成
- demo.ipyndをpyコードに変換し、修正したdemo.pyを作成した。
- ipynd > py は
jupyter nbconvert --to script demo.ipynb
#!/usr/bin/env python # coding: utf-8 # # Mask R-CNN Demo # # A quick intro to using the pre-trained model to detect and segment objects. import os import sys import random import math import numpy as np import skimage.io import matplotlib import matplotlib.pyplot as plt # Root directory of the project # ROOT_DIR = os.path.abspath("../") ROOT_DIR = os.path.abspath("/workspace/Mask_RCNN") # Import Mask RCNN sys.path.append(ROOT_DIR) # To find local version of the library from mrcnn import utils import mrcnn.model as modellib from mrcnn import visualize # Import COCO config sys.path.append(os.path.join(ROOT_DIR, "samples/coco/")) # To find local version import coco # Directory to save logs and trained model MODEL_DIR = os.path.join(ROOT_DIR, "logs") # Local path to trained weights file # COCO_MODEL_PATH = os.path.join(ROOT_DIR, "mask_rcnn_coco.h5") COCO_MODEL_PATH = os.path.join(ROOT_DIR, "weights/mask_rcnn_coco.h5") # Download COCO trained weights from Releases if needed if not os.path.exists(COCO_MODEL_PATH): utils.download_trained_weights(COCO_MODEL_PATH) # Directory of images to run detection on IMAGE_DIR = os.path.join(ROOT_DIR, "images") # ## 1.Configurations class InferenceConfig(coco.CocoConfig): # Set batch size to 1 since we'll be running inference on # one image at a time. Batch size = GPU_COUNT * IMAGES_PER_GPU GPU_COUNT = 1 IMAGES_PER_GPU = 1 config = InferenceConfig() config.display() # ## 2.Create Model and Load Trained Weights # Create model object in inference mode. model = modellib.MaskRCNN(mode="inference", model_dir=MODEL_DIR, config=config) # Load weights trained on MS-COCO model.load_weights(COCO_MODEL_PATH, by_name=True) # ## 3.Class Names # COCO Class names # Index of the class in the list is its ID. # For example, to get ID of the teddy bear class, # use: class_names.index('teddy bear') class_names = ['BG', 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light', 'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', 'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear', 'hair drier', 'toothbrush'] # ## 4.Run Object Detection # Load a random image from the images folder file_names = next(os.walk(IMAGE_DIR))[2] image = skimage.io.imread(os.path.join(IMAGE_DIR, random.choice(file_names))) # Run detection results = model.detect([image], verbose=1) # Visualize results r = results[0] visualize.display_instances(image, r['rois'], r['masks'], r['class_ids'], class_names, r['scores'])
3. 推論を試行
- コンテナを起動して実行
# コンテナを起動 # cd Mask_RCNN xhost + docker run -it --rm --gpus all \ -e DISPLAY=$DISPLAY \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -v /etc/group:/etc/group:ro \ -v /etc/passwd:/etc/passwd:ro \ -u $(id -u $USER):$(id -g $USER) \ -v $PWD:/workspace/Mask_RCNN \ -w /workspace/Mask_RCNN \ maskrcnn-tensorflow/keras # 推論を試行 cd sample python3 demo.py
結果画像例
以上。
PytorchでYOLOv3とYOLOv4の推論を実行した。
- 20/05/03
- Ubuntu18.04.4
- GeForce RTX 2060
- Docker version 19.03.8
- Darknetより扱いやすい
- Yolov4も実行できた。
Darknetは以下の記事参照
1. Dockerで実行環境を構築
# Pull Image docker pull ultralytics/yolov3:v0 # Rename Image docker tag ultralytics/yolov3:v0 yolo-pytorch docker image rm ultralytics/yolov3:v0 # Make Workspace mkdir YOLOv3-PyTorch cd YOLOv3-PyTorch # Clone repogitry git clone https://github.com/ultralytics/yolov3.git cd yolov3 sudo rm -r .git # Run Container # $PWD=~/YOLOv3-PyTorch/yolov3 docker run -it --rm \ --gpus all \ --ipc=host \ -v /etc/group:/etc/group:ro \ -v /etc/passwd:/etc/passwd:ro \ -u $(id -u $USER):$(id -g $USER) \ -v $PWD:/workspace/yolov3 \ -w /workspace/yolov3 \ yolo-pytorch
2. 推論を実行
## on Container # Inference yolov3-tiny python3 detect.py --cfg cfg/yolov3-tiny.cfg --weights yolov3-tiny.pt --img-size 416 --source data/samples/zidane.jpg
Results are stored in /workspace/yolov3/output
3. Darknet weight to Pytorch weight
weights
を/yolov3/weights
に格納する。
weightsを変換
# YOLOv4 python3 -c "from models import *; convert('cfg/yolov4.cfg', 'weights/yolov4.weights')" mv converted.pt yolov4.pt # YOLOv3 python3 -c "from models import *; convert('cfg/yolov3.cfg', 'weights/yolov3.weights')" mv converted.pt yolov3.pt
4. Inference YOLOv4 & YOLOv3
Sofia TerzoniによるPixabayからの画像
Inference
# Yolov4 処理時間:0.040s python3 detect.py --cfg cfg/yolov4.cfg --weights yolov4.pt --img-size 608 --source data/samples/japan-4141578_1920.jpg --output output_yolov4_608 # Yolov3 処理時間:0.019s python3 detect.py --cfg cfg/yolov3.cfg --weights yolov3.pt --img-size 416 --source data/samples/japan-4141578_1920.jpg --output output_yolov3_416 # Yolov3-tiny 処理時間:0.005s python3 detect.py --cfg cfg/yolov3-tiny.cfg --weights yolov3-tiny.pt --img-size 416 --source data/samples/japan-4141578_1920.jpg --output output_yolov3-tiny
YOLOv4 結果画像
YOLOv3 結果画像
YOLOv3-tiny 結果画像
以上。
DarknetでYolov4の推論を実行してみた。
- 20/05/02
- Ubuntu18.04.4
- GeForce RTX 2060
- Docker version 19.03.8
1. Darknetコンテナを作成
dockerfileで一気に作成したかったがうまく行かなかったので以下の手順を踏んだ。
dockerfile
FROM nvcr.io/nvidia/cuda:10.2-cudnn7-devel-ubuntu18.04 ENV DEBIAN_FRONTEND=noninteractive # OpenCV # ref:https://www.pyimagesearch.com/2020/02/03/how-to-use-opencvs-dnn-module-with-nvidia-gpus-cuda-and-cudnn/ RUN apt update && apt install -y --no-install-recommends \ build-essential cmake unzip pkg-config \ libjpeg-dev libpng-dev libtiff-dev \ libavcodec-dev libavformat-dev libswscale-dev \ libv4l-dev libxvidcore-dev libx264-dev \ libgtk-3-dev \ libatlas-base-dev gfortran \ ffmpeg \ python3-dev nano curl git \ && rm -rf /var/lib/apt/lists/* RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py RUN python3 get-pip.py && rm get-pip.py RUN pip3 install --no-cache-dir \ numpy WORKDIR /opt ENV CV_VER=3.4.0 RUN curl -L https://github.com/opencv/opencv/archive/${CV_VER}.zip -o opencv-${CV_VER}.zip \ && curl -L https://github.com/opencv/opencv_contrib/archive/${CV_VER}.zip -o opencv_contrib-${CV_VER}.zip RUN unzip opencv-${CV_VER}.zip \ && unzip opencv_contrib-${CV_VER}.zip \ && rm opencv-${CV_VER}.zip opencv_contrib-${CV_VER}.zip # pascal(GTX1060 ...) -D CUDA_ARCH_BIN=6.1 WORKDIR /opt/opencv-${CV_VER} RUN mkdir build && cd build \ && cmake -D WITH_CUDA=ON \ -D WITH_CUDNN=ON \ -D OPENCV_DNN_CUDA=ON \ -D ENABLE_FAST_MATH=1 \ -D CUDA_FAST_MATH=1 \ -D CUDA_ARCH_BIN=7.5 \ -D WITH_CUBLAS=1 \ -D BUILD_opencv_python3=ON \ -D BUILD_opencv_python2=OFF \ -D BUILD_TESTS=OFF \ -D BUILD_PERF_TESTS=OFF \ -D BUILD_EXAMPLES=OFF \ -D CMAKE_BUILD_TYPE=RELEASE \ -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-${CV_VER}/modules \ -D CMAKE_INSTALL_PREFIX=/usr/local .. \ && make -j"$(nproc)" \ && make install -j"$(nproc)" \ && make clean RUN echo $(pkg-config --modversion opencv)
Darknetコンテナの作成・起動
# OpenCV-CUDAコンテナ作成 cd docker-build docker build -t opencv/cuda:3.4.0 . # コンテナ起動 docker run -it --rm --gpus all -w /workspace opencv/cuda:3.4.0 # Darknetをコンパイル git clone https://github.com/AlexeyAB/darknet.git \ && cd darknet \ && mkdir build-release \ && cd build-release \ && cmake .. \ && make \ && make install \ && make clean # コンテナから抜ける(ctl+p ctrl+q) # コンテナIDを確認 docker container ls # コンテナをイメージ化 docker commit <container id> darknet:yolov4 # コンテナを止める docker stop <container id> # コンテナにマウントするディレクトリを作成 cd ~/Darknet mkdir -p data/{weights,cfg,inputs,outputs} # 学習済みwightsをダウンロード wget --inet4-only -P ./weights https://pjreddie.com/media/files/yolov3.weights \ https://pjreddie.com/media/files/yolov3-tiny.weights \ https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.weights # コンテナを起動する xhost + docker run -it --rm --gpus all \ -e DISPLAY=$DISPLAY \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -v /etc/group:/etc/group:ro \ -v /etc/passwd:/etc/passwd:ro \ -u $(id -u $USER):$(id -g $USER) \ -v ~/Darknet/data:/workspace/data \ -w /workspace/darknet \ darknet:yolov4
2. 推論の試行
# 1画像の推論結果を画面表示する(./predictions.jpgとして結果画像も作成される) ./darknet detector test cfg/coco.data cfg/yolov4.cfg /workspace/data/weights/yolov4.weights data/dog.jpg # ホスト側で確認できるようにデータを移動する(もっと良い方法があれば・・・) mv ./predictions.jpg /workspace/data/outputs/dog-predictions.jpg # 複数画像の推論結果を画面表示する(filelistの最後の画像のみ./predictions.jpgとして作成される) # /data内のjpgファイルを/workspace/data/inputsにコピーする cp data/*.jpg /workspace/data/inputs/ # filelistを作成する cd /workspace/data/inputs/ find $PWD -name "*.jpg" > filelist.txt # filelist.txtを渡して実行 cd /workspace/darknet ./darknet detector test cfg/coco.data cfg/yolov4.cfg /workspace/data/weights/yolov4.weights </workspace/data/inputs/filelist.txt # 複数画像の推論結果を保存する(入力画像と同じディレクトリに同名のtxtファイルができる) ./darknet detector test cfg/coco.data cfg/yolov4.cfg /workspace/data/weights/yolov4.weights -dont_show -save_labels </workspace/data/inputs/filelist.txt # 確認 cat /workspace/data/inputs/dog.txt 58 0.9106 0.2290 0.0476 0.0789 16 0.2877 0.6653 0.2401 0.5495 7 0.7477 0.2140 0.2874 0.1618 1 0.4473 0.4807 0.5964 0.5186
3. yolov4 vs yolov3 vs Yolov3-tiny
Sofia TerzoniによるPixabayからの画像
# Yolov4 処理時間:36.516000 msec ./darknet detector test cfg/coco.data cfg/yolov4.cfg /workspace/data/weights/yolov4.weights /workspace/data/inputs/japan-4141578_1920.jpg # Yolov3 処理時間:16.956000 msec ./darknet detector test cfg/coco.data cfg/yolov3.cfg /workspace/data/weights/yolov3.weights /workspace/data/inputs/japan-4141578_1920.jpg #Yolov3-tiny 処理時間:3.018000 msec ./darknet detector test cfg/coco.data cfg/yolov3-tiny.cfg /workspace/data/weights/yolov3-tiny.weights /workspace/data/inputs/japan-4141578_1920.jpg
Yolov4 結果画像
Yolov3 結果画像
Yolov3-tiny 結果画像
以上。
DockerでGPUを使用する
DockerコンテナでGPUを使用するための備忘録
1. PCがGPUを認識しているか確認する
lspci -vv|grep -i nvidia ##################################################################################################### 01:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1) (prog-if 00 [VGA controller]) Kernel modules: nvidiafb, nouveau 01:00.1 Audio device: NVIDIA Corporation GP107GL High Definition Audio Controller (rev a1)
2. 既存のグラフィックドライバ(nouveau)の無効化
nouveauが有効か確認 (何も出なければ無効)
lsmod | grep -i nouveau ################################################## 1892352 3 mxm_wmi 16384 1 nouveau ttm 102400 1 nouveau drm_kms_helper 180224 1 nouveau drm 491520 6 drm_kms_helper,ttm,nouveau i2c_algo_bit 16384 1 nouveau wmi 32768 3 wmi_bmof,mxm_wmi,nouveau video 49152 1 nouveau
nouveauを無効化
# /etc/modprobe.d/blacklist-nouveau.confを作成 sudo gedit /etc/modprobe.d/blacklist-nouveau.conf # 以下を入力 ################################################# blacklist nouveau options nouveau modeset=0 # initramfsの更新 $ sudo update-initramfs -u # 再起動 $ sudo reboot # 再起動後、画面の解像度が低くなれば無効化OK
3. cuda-driversのインストール
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600 sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub sudo add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /" sudo apt-get update sudo apt-get -y install cuda-drivers # 再起動 sudo reboot
driverが有効化を確認
nvidia-smi ############################################################################### Fri Mar 13 21:57:50 2020 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 440.64.00 Driver Version: 440.64.00 CUDA Version: 10.2 | |-------------------------------+----------------------+----------------------+ | 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 105... On | 00000000:01:00.0 On | N/A | | 41% 36C P8 N/A / 75W | 223MiB / 4038MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 1400 G /usr/lib/xorg/Xorg 18MiB | | 0 1444 G /usr/bin/gnome-shell 46MiB | | 0 1765 G /usr/lib/xorg/Xorg 86MiB | | 0 1893 G /usr/bin/gnome-shell 67MiB | +-----------------------------------------------------------------------------+
4. Dockerをインストール
sudo apt update sudo apt install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo apt-key fingerprint 0EBFCD88 sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io # version確認(dockerがインストールできているか確認) sudo docker --version ######################################## Docker version 19.03.8, build afacb8b7f0
5. Dockerをsudoなしで起動できるようにする
sudo usermod -aG docker kinacon
6. DockerでGPUを起動できるようにする
nvidia-container-runtimeのインストール
curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | \ sudo apt-key add - distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | \ sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list sudo apt update sudo apt install nvidia-container-runtime # 再起動 sudo reboot
7. コンテナでGPUの状態を確認
コンテナでGPUを認識できるか確認
docker run --gpus all --rm nvidia/cuda nvidia-smi ############################################################################### Fri Mar 13 13:49:53 2020 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 440.64.00 Driver Version: 440.64.00 CUDA Version: 10.2 | |-------------------------------+----------------------+----------------------+ | 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 105... On | 00000000:01:00.0 On | N/A | | 41% 34C P8 N/A / 75W | 223MiB / 4038MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| +-----------------------------------------------------------------------------+
以上。
nvidia-container-toolkitのインストール
nvidia-container-toolkitのインストール
Docker 19.03よりNvidia GPUがDocker-runtimeのデバイスとしてサポートされ、
nvidia-docker2がnvidia-container-toolkitに変わった。
すでにnvidia-docker2のパッケージの使用は推奨されていない。
私の場合はNvidia-docker2がインストールしていて
runtimeのオプションが変更されると困る場合があるため、
どちらでも実行できるようにしました。
nvidia-docker2を導入していない場合は以下参照
nvidia-container-toolkitのインストール
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt update && sudo apt install -y nvidia-container-toolkit sudo systemctl restart docker
nvidia-docker2を使用したアップグレード
sudo apt update sudo apt --only-upgrade install docker-ce nvidia-docker2 sudo systemctl restart docker
確認
docker run --gpus all nvidia/cuda:9.0-base nvidia-smi docker run --runtime nvidia nvidia/cuda:9.0-base nvidia-smi nvidia-docker run nvidia/cuda:9.0-base nvidia-smi
すべてnvidia-smiが表示されればOK
以上。