Post

Docker로 Tensorflow GPU 실행하기


NVIDIA 그래픽 드라이버 설치


우선 아래 페이지에 들어가 자신에게 맞는 NVIDIA 그래픽 드라이버를 받고 설치해 준다.

https://www.nvidia.co.kr/Download/index.aspx?lang=kr

Image

나는 가끔 게임을 하므로, Game Ready 드라이버(GRD)를 다운받아 설치했다.

설치가 정상적으로 완료되었다면 GPU 정보를 확인하기 위해 nvidia-smi 명령어를 사용할 수 있다.

1
nvidia-smi

Image


NVIDIA Docker 설치


먼저 아래 글에서 설명한 내용을 토대로 Docker를 설치해준다.
https://sirius-mhlee.github.io/posts/wsl-docker-install/


1. NVIDIA Docker를 설치하기 전에 Docker 서비스를 종료해준다.

1
sudo service docker stop

Image


2. NVIDIA의 Official GPG Key를 등록하고 Repository도 APT에 등록한다.

1
2
3
4
5
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
  sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
  sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update

Image


3. NVIDIA Container Toolkit을 설치한다.

1
sudo apt install nvidia-container-toolkit

Image


4. 종료했던 Docker 서비스를 다시 시작한다.

1
sudo service docker start

Image


5. Docker 컨테이너에서 GPU 정보를 확인한다.

1
docker run --rm --gpus all ubuntu nvidia-smi

컨테이너 실행 시 --gpus 옵션을 사용하여 GPU를 사용할 수 있도록 한다.

  • --gpus all : 컨테이너에서 모든 GPU 사용

Image

Docker 컨테이너에서 GPU를 정상적으로 인식하고 있는 것을 확인할 수 있다.


Tensorflow GPU 컨테이너 실행


Docker Hub의 Tensorflow 공식 이미지를 이용하여 컨테이너를 시작하게 된다.

1
docker run --name tf_gpu_jupyter --gpus all -d -p 8888:8888 tensorflow/tensorflow:latest-gpu-jupyter

Image


Docker의 logs 명령으로 Jupyter Notebook의 접속 주소를 확인한다.

1
docker logs <container>
  • docker logs <container> : 지정된 컨테이너에서 출력한 내용을 확인

Image


이제 Jupyter Notebook으로 접속해서 Tensorflow가 GPU를 제대로 인식하고 있는지 확인해보자.

1
2
from tensorflow.python.client import device_lib
device_lib.list_local_devices()

Image

Tensorflow에서 GPU를 제대로 인식하는 것을 확인할 수 있다.

Jupyter Notebook이 아닌 스크립트 버전을 실행하려면 다음 명령어를 사용하면 된다.

1
docker run --name tf_gpu --gpus all -i -t -v ~/tf_gpu_data:/root tensorflow/tensorflow:latest-gpu

Image

This post is licensed under CC BY 4.0 by the author.

© sirius-mhlee. Some rights reserved.

Using the Chirpy theme for Jekyll.