또이리의 Server Engineer

우분투 18.04 엔비디아 도커 - 텐서플로우 설치 본문

Linux Engineer

우분투 18.04 엔비디아 도커 - 텐서플로우 설치

또이리 2020. 11. 9. 21:36

우분투 18.04 엔비디아 도커 - 텐서플로우 설치

ubuntu 18.04 Nvidia-Docker 설치와 tensor flow image를 도커에서 실행해보겠습니다. 지난 스토리에서는 우분투에 도커를 설치했습니다. GPU를 사용하기 위해서는 nvidia-docker도 설치해야 합니다.

 

엔비디아 도커 설치도 그리 어렵지 않습니다. 자, 일단 전제 조건이 있습니다. 엔비디아 드라이버가 설치되어 있어야 합니다. 그러기 위해선 nvidia 장치가 장착된 서버나 워크스테이션을 사용해야 합니다.

 

쉽게 말하면 엔비디아 그래픽카드나 GPU가 있어야 된다는 말입니다. 엔비디아 드라이버는 지난 스토리를 참고하셔서 설치하시기 바랍니다. 엔비디아 드라이버가 설치가 되었다면 그다음은 플랫폼 요구사항입니다.

 

1. 커널 버전이 3.10 이상인 GNU/Linux x86_64를 확인합니다. uname 명령어 사용해서 확인하시면 되겠습니다.

nvidia-docker 1

2. 그리고 도커 설치가 선행되어 있어야 한다고 말씀드렸습니다. 도커 버전도 확인해 줍니다. 19.03보다 높거나 같아야 하며, 최소 버전은 1.12입니다. 도커가 설치되었다면, docker version 명령어로 확인을 합니다.

nvidia-docker 2

3. 그다음 엔비디아 디바이스의 아키텍처(Architecture)가 페르미(Fermi) 이상이 여야 합니다. 페르미라 함은 2010년 4월 출시된 Nvidia에서 개발한 코드명입니다. 연식이 오래된 그래픽카드나 GPU는 지원되지 아니합니다.

 

4. 엔비디아 드라이버 버전이 361.93 이상이어야 됩니다. nvidia-smi를 실행하시면 엔비디아 드라이버 버전과 추천되는 cuda 버전이 표시되니 참고하시기 바랍니다. 엔비디아 도커를 설치하신 후 cuda가 구축된 컨테이너를 실행하시면 별도로 local 머신에는 cuda를 설치하지 않아도 됩니다.

nvidia-docker 3

드라이버 버전에 따라 cuda의 기능이 제한될 수 있다고 합니다. 항상 최신 버전이면 좋겠지만, 무리하게 드라이버를 업데이트 진행하거나 버전을 변경하면 기존에 잘되던 작업들이 오류가 발생할 수 있으니, 항상 드라이버 업데이트 전에는 백업을 진행하시고 신중하게 진행하시기 바랍니다.

 

linuxOS를 사용하시는 분들이라면 꼭 최신 버전들이 좋은 것만은 아니라는 걸 잘 아실 겁니다.(호환성, 의존성 관련해서 그렇습니다.) 플랫폼 요구사항이 충족됐다면, 엔비디아 도커를 설치합니다.(도커는 설치되어 있어야 합니다.)

 

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 \

curl -s -L https://nvidia.github.io/nvidia-container-runtime/experimental/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list \

sudo apt-get update

nvidia-docker 4

레포지터리와 GPG 키를 추가합니다. 마지막 줄에 tesla A100관련 레포지터리도 추가했습니다.

복사 붙여 넣기 해주시면 됩니다. 역시 오타는 없습니다. 있으면 댓글로 알려주셔요.

 

레포지터리가 추가됐으니, apt-get update로 패키지 목록 업데이트를 진행합니다.

그다음 apt-get을 사용하여 nvidia-docker를 설치합니다.

 

sudo apt-get install -y nvidia-docker2 (version 2)

설치가 완료되면, nvidia-docker version으로 엔비디아 도커의 버전을 확인합니다.

nvidia-docker 5

정상적으로 설치되었다면 맨 윗줄에 nvidia docker의 버전이 표시됩니다.

이제 docker, nvidia-docker 설치가 완료되었습니다.

 

스토리 제목과 같이 tensor 최신 버전과 cuda가 구축되어 있는 이미지를 다운로드하여서 실행해 보겠습니다. local에는 nvidia-driver와 docker, nvidia-docker만 설치되어있으면 됩니다.

 

https://ngc.nvidia.com/catalog/containers/nvidia:tensor

저는 엔비디아 ngc에서 텐서 플로우 이미지를 다운로드하였습니다. 최신 버전과 tensor flow ver1과 tensor flow ver2 모두 준비되어 있습니다.

 

위의 ngc 외에 기본적인 tensorflow pull 명령어를 사용한 예입니다.

docker pull tensorflow/tensorflow # latest stable release

docker pull tensorflow/tensorflow:devel-gpu # nightly dev release w/ GPU support

docker pull tensorflow/tensorflow:latest-gpu-jupyter # latest release w/ GPU support and Jupyter

 

저는 ngc에서 이미지를 당겨오기 때문에 명령어가 조금 다릅니다.

docker pull nvcr.io/nvidia/tensorflow:20.10-tf1-py3

docker pull nvcr.io/nvidia/tensorflow:20.10-tf2-py3

tensor flow 버전 1과 2를 선택할 수 있습니다.

nvidia-docker 6

위의 사진은 컨터이너가 생성된 사진입니다.

컨테이너 생성은 지난 스토리를 보면 이해하 실 수 있습니다.

 

docker run --runtime=nvidia -it nvcr.io/nvidia/tensorflow:20.10-tf1-py3

docker run --runtime=nvidia -it nvcr.io/nvidia/tensorflow:20.10-tf2-py3 명령어를 사용해서 컨테이너를 생성할 수 있습니다.

 

컨테이너 id와 names는 별도로 지정하지 않으시면 자동으로 생성됩니다. -it 뒤에 --rm을 추가하면 1회성 컨테이너가 생성되겠습니다. 사용한 후 남지 않고 삭제됩니다.

nvidia-docker 7

처음 언급드렸다시피 ngc에서 다운로드한 최신 텐서 플로우 이미지에는 cuda도 최신 버전으로 포함되어있습니다.

간단하게?! 텐서 플로우를 구동시킬 수 있는 기반이 준비되었습니다.

Comments