[Linux] Docker container를 이용한 CUDA cuDNN 환경 구축

2022. 4. 5. 09:52·Programming/Linux

 

한 컴퓨터에서 GPU를 사용하는 프로젝트를 하나만 진행한다면 CUDA와 cuDNN이 하나의 버전만 있으면 되겠지만

여러 프로젝트를 진행할 경우, 프로젝트별로 필요한 CUDA, cuDNN 버전이 다를 수 있음

(TensorFlow만 해도 버전별로 각기 다른 CUDA, cuDNN이 필요하다!)

 

도커를 이용해서 컨테이너별로 다른 버전의 CUDA, cuDNN을 설치해보자

Docker를 이용한 딥러닝 환경 구축

 


Docker 설치

 

GPU driver 설치

GPU 드라이버 즉 NVIDIA 드라이버는 base machine에 설치해야함

 

NVIDIA driver 설치 후 아래의 명령어로 확인

nvidia-smi

 

GPU driver 연결

도커가 GPU를 인식할 수 있도록 NVIDIA Container Toolkit을 이용해서 연결해주자

NVIDIA Container Toolkit은 자동으로 base machine의 GPU driver를 인식하여 도커 컨테이너가 실행되면 연결시켜줌

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html

 

Installation Guide — NVIDIA Cloud Native Technologies documentation

On RHEL 7, install the nvidia-container-toolkit package (and dependencies) after updating the package listing: Restart the Docker daemon to complete the installation after setting the default runtime: Note Depending on how your RHEL 7 system is configured

docs.nvidia.com

 

이미지 다운로드

NVIDIA에서 공식적으로 지원하는 Docker Hub에서 필요한 이미지를 다운받자

Tags 탭에서 원하는 CUDA 버전을 검색(ex. 10.1)하고

오른쪽의 복사 버튼을 누르고, 터미널에서 붙여넣기

 

이미지를 다운받는 것부터 잘못돼서 한참을 헤멨다

 

Overview를 보면 이렇게 나와있는데, 당연히 이 말만 철썩같이 믿고서

나는 cuDNN이 필요하니까 base, runtime, devel 중 runtime만 주구장창 받았다

 

웬걸?

runtime 버전의 이미지로 컨테이너를 만들고나서, CUDA 버전을 확인해보면

nvcc: command not found 오류가 뜬다

알고보니 devel 버전으로 받아야 CUDA, cuDNN 버전을 제대로 확인할 수 있었다

 

그리고 TAG 형식이

10.1-devel-ubuntu16.04

처럼만 있는게 아니고 좀 더 내려보면

10.1-cudnn7-devel-ubuntu16.04

'cudnn' 이 붙어있는 태그가 따로있다

 

딥러닝 환경 구축을 위해 cuDNN이 필요한 사용자라면

[CUDA버전]-cudnn[버전]-devel-[사용할OS]

처럼 cudnn 과 devel 로 구성된 이미지를 pull 하자

 

그리고 만약 내가 필요한 CUDA버전이 10.1이고, cuDNN버전이 7.6인 상황인데

Tag 목록에는 10.1-cudnn7-devel-ubuntu16.04와 같이 cuDNN 버전이 7만 있다! 고 생각할 수 있지만

나중에 확인해보면 7.6.5가 깔려있는 것을 확인할 수 있음 (뒤에 나옴)

 

컨테이너 생성

docker run -it --gpus all --name [컨테이너명] [이미지명] bash

--gpus 옵션을 넣어줘야 GPU driver를 인식할 수 있음

옵션 설명
-d detached mode, 백그라운드 모드
-p 호스트와 컨테이너의 포트를 연결 (포워딩)
-v 호스트와 컨테이너의 디렉토리를 연결 (마운트)
-v [호스트 디렉토리]:[컨테이너 디렉토리]
-e 컨테이너 내에서 사용할 환경변수 설정
-it 터미널 입력을 위한 옵션, -i 와 -t 를 동시에 사용한 것
-rm 프로세스 종료 시 컨테이너 자동 제거
-link 컨테이너 연결 [컨테이너명:별칭]
--name 컨테이너 이름 설정
--gpus all GPU 사용

 

확인

NVIDIA driver 버전 확인

cat /proc/driver/nvidia/version

 

또는

nvidia-smi

현재 컨테이너 안에서 nvidia-smi를 입력했을 때

오른쪽 상단에 나오는 CUDA Version은

현재 컨테이너에 설치된 CUDA 버전이 아닌

현재 드라이버가 지원하는 CUDA의 최신 버전

https://stackoverflow.com/questions/53422407/different-cuda-versions-shown-by-nvcc-and-nvidia-smi

 

Different CUDA versions shown by nvcc and NVIDIA-smi

I am very confused by the different CUDA versions shown by running which nvcc and nvidia-smi. I have both cuda9.2 and cuda10 installed on my ubuntu 16.04. Now I set the PATH to point to cuda9.2. So...

stackoverflow.com

CUDA 버전 확인

nvcc --version

 

cuDNN 버전 확인

cat /usr/include/x86_64-linux-gnu/cudnn_v*.h | grep CUDNN_MAJOR -A 2

MAJOR, MINOR, PATCHLEVEL 순으로 버전을 읽을 수 있음

따라서 현재 설치된 버전은 7.6.5

Linux 버전 확인 (OS 확인)

cat /etc/*release*

 

cat /etc/issue

 

uname -a   # 커널 정보

 

컨테이너 생성 후

아나콘다 가상환경 구축 후

아나콘다 가상환경 상에서 pip install로 원하는 패키지를 다운받아 사용하면 됨

 

참고

https://towardsdatascience.com/how-to-properly-use-the-gpu-within-a-docker-container-4c699c78c6d1

 

How to Properly Use the GPU within  a Docker Container

In this post, we walk through the steps required to access your machine’s GPU within a Docker container.

towardsdatascience.com

 

저작자표시 비영리 변경금지 (새창열림)

'Programming > Linux' 카테고리의 다른 글

[Linux] Docker container 생성 후  (1) 2022.04.08
Docker 기본  (0) 2022.04.05
[Linux] 버전 확인 OS 확인  (0) 2022.04.05
[Linux] Docker container에서 sudo 사용  (3) 2022.04.04
[Linux] Docker container에서 Anaconda 가상환경 구축  (1) 2022.03.22
'Programming/Linux' 카테고리의 다른 글
  • [Linux] Docker container 생성 후
  • Docker 기본
  • [Linux] 버전 확인 OS 확인
  • [Linux] Docker container에서 sudo 사용
카이로셜
카이로셜
  • 카이로셜
    카이로스의 시간
    카이로셜
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Programming
        • Python
        • Linux
        • Git, Github
        • ML, Machine Learning
        • DL, Deep Learning
        • NLP
        • Computer Vision
        • Network
        • PyCharm
      • IT
        • Windows
        • Mac OS
        • Programs
        • 한글
        • Word
        • Excel
        • PowerPoint
      • Math & Statistics
      • English
      • Graduate School
      • etc.
      • Record
  • 블로그 메뉴

    • Github
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    docker
    도커
    윈도우11
    아나콘다
    맥북 단축키
    anaconda
    윈도우10
    아나콘다 가상환경
    객체
    클래스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
카이로셜
[Linux] Docker container를 이용한 CUDA cuDNN 환경 구축
상단으로

티스토리툴바