딥러닝을 이용한 서비스를 배포할 목적이 있으면, 운영체제 등에서 독립적으로 S/W가 돌아갈 수 있게끔 배포하는 것이 중요하다. 이 때 주로쓰이는 것이 컨테이너 기술인데, 컨테이너 기술을 이용해서, 딥러닝의 GPU가속을 사용해보자.
단계는 아래와 같다
- NVIDA driver (그레픽 드라이버) 와 docker은 설치
- CUDA 이미지 풀하기
- GPU 지원 컨테이너 만들기
- 방법 1: Native GPU support
- 방법 2: Nivida container Runtime을 이용하기
- 방법 3: Nivida GPus 을 위한 도커엔진 유틸리티 이용하기
- 확인: 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-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을 사용할수 있는지 확인해본다.
'Data science > MLOps' 카테고리의 다른 글
[Step by Step] Github action으로 CD/CI 배포하기 (예제코드 포함) (0) | 2023.07.31 |
---|---|
클러스터 구성 / 쿠버네티스 설치(master, worker node) (0) | 2023.01.08 |
도커 이미지 푸시하기 (0) | 2022.12.12 |
[쿠버네티스] 서비스(Service) 이용하기, 클러스터IP에 접속이 안될 때, (0) | 2022.12.10 |
[MLOps 해제(解題) 1] MLOps workflow에 대한 기본 이해 (0) | 2022.11.05 |