[Docker] NVIDIA container toolkit 설치 (nvidia-docker)
1. nvidia-container-toolkit이란?
nvidia-container-toolkit은 NVIDIA GPU를 사용하는 Docker 컨테이너를 관리하기 위해 만들어짐
nvidia-docker는 NVIDIA Container Toolkit으로 대체됨 -> nvidia-docker는 현재 지원하지 않음
사용자가 엔비디아 컨테이너 런타임을 사용하여 도커를 구성할 수 있도록 확장됨
참고
2. 설치 전 확인
1) 우분투(Ubuntu) 버전
lsb_release -a
2) 도커 버전
3) GPU 정보
nvidia-smi
3. Apt로 nvidia-container-toolkit 설치
1) 프로덕션 저장소 구성
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
2) 저장소에서 패키지 목록 업데이트
sudo apt-get update
3) NVIDIA 컨테이너 툴킷 패키지 설치
# 패키지 설치중에 나오는 yes/no 프롬프트에 사용자가 응답하지 않고 자동 yes처리되는 옵션 사용해서 설치
sudo apt-get install -y nvidia-container-toolkit
# 기본 설치 방법
sudo apt-get install nvidia-container-toolkit
4) 도커 데몬 재시작
sudo systemctl restart docekr
5) NVIDIA 컨테이너 툴킷 패키지 설치 버전 확인
nvidia-container-toolkit --version
5) 확인
도커로 cuda 이미지를 다운로드하고, 해당컨테이너에서 NVIDIA GPU를 사용하여 nvidia-smi 명령어 실행
sudo docker run --rm --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
- sudo: 명령을 슈퍼유저(관리자) 권한으로 실행하도록 하는 명령어.슈퍼유저 권한이 필요한 작업을 수행할 때 사용.
- docker run: Docker 컨테이너를 실행하는 명령어.
- --rm: 컨테이너가 종료되면 해당 컨테이너를 자동으로 제거하도록 하는 옵션. 임시 작업을 위한 컨테이너를 실행하고 그 결과를 확인한 후에 컨테이너를 자동으로 삭제.
- --gpus all: 호스트 시스템의 모든 GPU를 컨테이너와 공유하도록 하는 옵션. GPU를 사용하려면 NVIDIA GPU 드라이버 및 NVIDIA Container Toolkit이 호스트 시스템에 설치되어 있어야 함.
- nvidia/cuda:11.6.2-base-ubuntu20.04: 실행할 Docker 이미지의 이름과 태그. CUDA 11.6.2 버전을 기반으로 하는 Ubuntu 20.04 환경을 제공하는 NVIDIA CUDA 이미지를 사용. NVIDIA GPU를 지원하며 CUDA 도구를 포함하고 있음.
- nvidia-smi: 컨테이너 내에서 실행할 명령어. nvidia-smi는 NVIDIA GPU의 상태를 보고하는 도구로, GPU 정보, 메모리 사용량, 프로세스 정보 등을 표시.
🤯 설치 과정 중 에러
에러 메시지
The following packages have unmet dependencies:
nvidia-container-runtime : Depends: nvidia-container-toolkit (>= 1.14.0-1) but it is not going to be installed
Depends: nvidia-container-toolkit (< 2.0.0) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
sudo apt-get install nvidia-container-runtime
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
nvidia-container-runtime : Depends: nvidia-container-toolkit (>= 1.14.0-1) but it is not going to be installed
Depends: nvidia-container-toolkit (< 2.0.0) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
시도
1) 의존성 문제해결
broken 패키지 자동 복구 시도
sudo apt-get install -f
2) nvidia-container-toolkit을 설치하려는 패키지 호환 버전으로 업데이트
sudo apt-get install nvidia-container-toolkit
3) 시스템 업데이트
sudo apt-get update
sudo apt-get upgrade
-> 결과적으로 시스템 업데이트 이후 정상 설치 된 것을 확인할 수 있었음
4. 도커 구성
1) 컨테이너 런타임 구성
sudo nvidia-ctk runtime configure --runtime=docker
- sudo: 명령을 슈퍼유저(관리자) 권한으로 실행하도록 하는 명령어. 슈퍼유저 권한이 필요한 작업을 수행할 때 사용
- nvidia-container-runtime configure: NVIDIA Container Toolkit을 사용하여 컨테이너 런타임을 구성하는 명령어. NVIDIA GPU를 사용하는 컨테이너가 적절한 설정으로 실행될 수 있도록 Docker 런타임 구성
- --runtime=docker: NVIDIA Container Toolkit이 Docker와 통합되도록 Docker 런타임을 설정하는 옵션. Docker가 NVIDIA GPU를 사용하여 컨테이너를 실행할 수 있도록 설정됨
2) 도커 데몬 재시작
sudo systemctl restart docker
5. 컨테이너 구성
1) nvidia-container-runtime이란?
- NVIDIA Container Toolkit의 일부로, 도커 컨테이너에서 NVIDIA GPU를 사용할 수 있도록 도와주는 런타임
- NVIDIA GPU를 사용하는 컨테이너를 실행할 때 필요한 환경을 제공하는 구성요소
2) nvidia-container-runtime 패키지 설치
sudo apt-get install nvidia-container-runtime
- sudo: 명령을 슈퍼유저(관리자) 권한으로 실행하도록 하는 명령어. 슈퍼유저 권한이 필요한 작업을 수행할 때 사용.
- apt-get: APT(Advanced Package Tool) 패키지 관리자를 사용하는 명령어. APT는 Debian 및 Ubuntu 기반 시스템에서 패키지 설치, 업데이트, 제거 등을 관리하는 데 사용됨.
- install: 패키지를 설치하는 APT의 명령어 중 하나.
- nvidia-container-runtime: 설치할 패키지의 이름. 이 패키지는 NVIDIA Container Toolkit의 일부로서 Docker 컨테이너에서 NVIDIA GPU를 사용할 수 있도록 도와주는 런타임.
3) 컨테이너 재시작
sudo systemctl restart containerd
레퍼런스
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html