seoft

Tensorflow Docker 환경에서 GPU 연동 본문

etc

Tensorflow Docker 환경에서 GPU 연동

seoft 2019. 12. 15. 14:22
Environment (작성시점 : 19.12.15)

OS : Ubuntu 18.04
GPU : GTX 1080

이전글 https://seoft.tistory.com/28(Ubuntu 18.04 설치 ~ nvidia-docker 세팅)에 이어

docker환경에서 Tensorflow GPU연동을 위해 시행착오 겪은 내용들 정리

 

이전 글의 nvidia-docker 세팅 후 쿠다기반 도커 이미지에서 tensorflow를 넣어 돌리면 되는줄 알았으나

tensorflow에서 GPU를 적용하기 위해서 지원하는 driver, cuda 버전을 맞출 필요가 있었다.

* 작성 시점 기준 : TensorFlow supports CUDA 10.0 (TensorFlow >= 1.13.0)

 

그래서 최신 GPU 드라이버와 쿠다 버전이 아닌 텐서플로우에 지원하는 버전으로 설치하는 방향으로 진행하였다.

 

 

 

GPU 드라이버 설치

해당 가이드의 Linux setup을 OS버전에 맞게 진행

export 구문도 진행

Docker에서의 Tensorflow환경을 위해 host는 GPU 드라이버만 필요

CUDA, CUDNN 설치하지 않고 다음까지 진행 : ~ Reboot. Check that GPUs are visible using the command: nvidia-smi

https://www.tensorflow.org/install/gpu

(텐서플로우에 맞는 GPU 드라이버, CUDA버전 대상으로 설치 가이드가 있는듯함)

 

 

 

도커 설치

작성 시점 기준 nvidia-docker2는 deprecated되어 19.03이상(최신)으로 설치

최신 도커 설치 : https://computingforgeeks.com/how-to-install-docker-on-ubuntu/

 

이후, 해당 가이드의 Quick Start를 OS 버전에 맞게 진행

https://github.com/NVIDIA/nvidia-docker

 

 

 

Tensorflow 도커 실행

해당 가이드 참조하여 도커실행

https://www.tensorflow.org/install/docker

해당 가이드는 deprecated된 nvidia-docker2의 GPU 사용 명령어 를 가이드 (작성 시점 기준)

--runtime=nvidia

 

대신 최신 버전의 명령어로 진행 필요

--gpus all

 

py3, tensor, gpu, jupyter 를 포함한 full run 명령어 예시

docker run -it --name tensor -p 6006:6006 -p 8888:8888 -v /data:/tf/data --gpus all tensorflow/tensorflow:latest-gpu-py3-jupyter

 

 

검증

Tensor GPU 사용 검증을 위해 다음 방법들을 진행

 

1. 도커 컨테이너 내 다음 명령어 실행

nvidia-smi 

 

2. Host에서 다음 코드 실행

lspci | grep -i nvidia

 

3. 컨테이너 내 python에서 다음 코드 실행

print("GPU is", "available" if tf.config.experimental.list_physical_devices("GPU") else "NOT AVAILABLE")
// result : GPU is available

 

4. gpustat

 

실제 돌려봤을때 nvidia-smi에 process되는 리스트가 비어있어 GPU를 setup은 됬지만 사용이 안되는줄 알았으나

컨테이너 내에서 kaggle의 예제를 돌리고, gpustat을 확인했을때 GPU가 사용됨을 확인

 

대기상태의 GPU 사용량

 

학습 중 GPU 사용량

 

 

 

 

 

Comments