Data science/MLOps

도커 이미지에서 딥러닝 GPU가속 사용하기

연금(Pension)술사 2022. 12. 17. 00:57

딥러닝을 이용한 서비스를 배포할 목적이 있으면, 운영체제 등에서 독립적으로 S/W가 돌아갈 수 있게끔 배포하는 것이 중요하다. 이 때 주로쓰이는 것이 컨테이너 기술인데, 컨테이너 기술을 이용해서, 딥러닝의 GPU가속을 사용해보자.

 

단계는 아래와 같다


  1. NVIDA driver (그레픽 드라이버) 와 docker은 설치
  2. CUDA 이미지 풀하기
  3. GPU 지원 컨테이너 만들기
    1. 방법 1: Native GPU support
    2. 방법 2: Nivida container Runtime을 이용하기
    3. 방법 3: Nivida GPus 을 위한 도커엔진 유틸리티 이용하기
  4. 확인: GPU 지원 컨테이너 내 접속 후 cuda확인

 

0. NVIDIA driver 확인


이미 설치된 경우, 다음의 코드로 CUDA Version을 확인한다.아래와 같이 CUDA Version이 11.7임을 확인할 수 있다. 

$nvidia-smi

 

 

2. 도커허브에서 CUDA 이미지 가져오기


docker hub에 cuda을 검색하면, 아래의 그림과 같이 여러 이미지들이 검색되어 나온다.

그 중에, nvidia/cuda을 설치해본다. (링크: https://hub.docker.com/r/nvidia/cuda)

 

nvidia/cuda 리포지토리에 들어가면 Tags가 나오는데, CUDA 버전에 맞는 tag을 찾아본다.

 

아래와 같이 CUDA 버전에 맞는 이미지를 찾는다.

nvidia-smi 명령어에서 cuda 버전이 11.7이었으므로 11.7을 검색해서 runtime, base, devel, 버전 및 원하는 컨테이너 OS환경에 맞춰 설치한다.

 

필자는 nvidia-11.7.1용 런타임-ubunut22.04을 pull했다.

 

제대로 잘 pulling되었는지 아래와 같이 확인해본다.

 

 

GPU 지원 컨테이너 사용: 방법1: Native GPU 지원


아래와 같이 docker 및 docker환경에서 GPU을 돌리기위한 데몬(nvidia-container-toolkit)을 설치한다

// docker, nvidia-conatiner-toolkit 설치
$ sudo apt-get install -y docker nvidia-container-toolkit

 

모든그레픽카드을 사용할 수 있도록 GPU세팅을 하는 것은 아래와 같다.

docker run --gpus all [이미지명:테그명]

 

필자는 background option으로 (-d), ssh로 접속해서 인터렉션할것이기 떄문에(-it)아래와 같이 옵션을 주어 컨테이너를 실행한다.

컨테이너명이 "2c2e80a61f240a689d1d6d13a94c886fdab9508fc6226e1889ac5cbb623a5528"로 반환되어 컨테이너가 실행중임을 알려준다.

 

컨테이너가 잘 생성되었는지, docker ps명령어로 확인해본다. 33초전에 실행됨을 확인할 수 있다.

이 컨테이너로 직접 들어가보자

 

대화창이 나온다.

 

nvidia-smi명령어로 host graphic card을 사용할수 있는지 확인해본다.

 

반응형