BigData

Docker Pytorch(GPU, Jupyter) 배포 환경

Kyle79 2021. 2. 28. 19:41

Docker 자체에서는 GPU를 인식하도록 하는 기능을 제공하고 있지 않습니다.

이는 Docker의 가상환경은 실제 GPU와 연결될 수 없기 때문입니다.

nvidia-docker를 이용해서 Docker에서도 GPU를 인식할 수 있도록 만들고자 합니다.

해당 내용은 NVIDIA/nvidia-docker 에서 확인할 수 있습니다.

 

1. Nvidia Docker 설치

  • nividia-docker : docker 내부에서 gpu (driver) 이용하기 위해서, host gpu driver와 docker를 연동시켜주는 driver.

# 설치되어 있는 nvidia-docker가 있다면 제거
docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo apt-get purge -y nvidia-docker 

# Nvidia-docker의 kernel repository 추가
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
  sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
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-get update

# nvidia-docker 설치
sudo apt-get install -y nvidia-docker2

 

2. Pytorch Dockerfile 생성

vim Dockerfile
.
.

FROM pytorch/pytorch:1.7.1-cuda11.0-cudnn8-devel
RUN apt-get -y -qq update && \
    pip install numpy matplotlib librosa
## COPY . .

# jupyter 설치
RUN conda install jupyter
CMD ["jupyter", "notebook", "--port=8888", "--no-browser", "--ip=0.0.0.0", "--allow-root"]

 

3. GPU 사용

docker build -t pytorch-gpu:latest .

# 둘 중에 하나 실행
# 1) docker 로 실행
docker run -itd --name pytorch -v ${PWD}/workspace:/workspace -v ${PWD}/jupyter_notebook_config.json:/root/.jupyter/jupyter_notebook_config.json -p 8888:8888 --gpus all pytorch-gpu:latest
# 2) nvidia-docker 로 실행
nvidia-docker run -it pytorch-gpu:latest /bin/bash

root@e53d0de34011:/workspace# nvidia-smi
Tue Feb 18 11:40:32 2020
+-----------------------------------------------------------------------------+
| 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 1070    Off  | 00000000:01:00.0 Off |                  N/A |
|  0%   30C    P8     6W / 166W |     21MiB /  8117MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
+-----------------------------------------------------------------------------+

 

4. Pytorch GPU Test

import torch
torch.cuda.is_available()
x = torch.rand(5, 3)
print(x)

'BigData' 카테고리의 다른 글

XGBoost  (0) 2021.03.03
Jupyter Notebook  (0) 2021.03.03
Nifi 1.13.0  (0) 2021.02.22
tbls  (0) 2021.02.09
PyTorch  (0) 2021.01.27