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 |