https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/overview.html
NVIDIA Container Toolkit
도커는 기본적으로 CPU 환경에서 작업할 수 있도록 되어있기 때문에 GPU를 지원하지 않는다. 이를 해결하기 위해 초창기에는 컨테이너 내에 NVIDIA GPU 드라이버를 설치하기도 했으나 이는 하드웨어와 컨테이너의 드라이버 버전을 매번 맞춰야하기 때문에 안정적이지 않다.
NVIDIA Container stack은 어떤 컨테이너 런타임도 지원할 수 있도록 구성되어있다. 패키지에는 아래 구성 요소들이 포함되어있다.
1) The NVIDIA Container Runtime (nvidia-container-runtime
)
2) The NVIDIA Container Runtime Hook (nvidia-container-toolkit
/nvidia-container-runtime-hook
)
3) The NVIDIA Container Library and CLI (libnvidia-container1
,nvidia-container-cli
)
NVIDIA Container Toolkit의 주요 패키지는 아래와 같다
1) nvidia-container-toolkit
2) nvidia-container-toolkit-base
3) libnvidia-container-tools
4) libnvidia-container1
의존성 관계는 아래와 같다
├─ nvidia-container-toolkit (version)
│ ├─ libnvidia-container-tools (>= version)
│ └─ nvidia-container-toolkit-base (version)
│
├─ libnvidia-container-tools (version)
│ └─ libnvidia-container1 (>= version)
└─ libnvidia-container1 (version)
이 요소들은 libnvidia-container-tools
와 libnvidia-container1
패키지로 구성된다.
GPU를 이용해 GNU/Linux container를 자동으로 구성할 수 있는 CLI utility와 라이브러리를 제공한다.
libnvidia-container
는 잘 정의된 API와 다른 런타임들이 NVIDIA GPU를 컨테이너에 지원하기 위해 호출할 수 있는 wrapper CLI (nvidia-container-cli
를 제공한다.
이 요소는 nvidia-container-toolkit
패키지에 포함된다.
runC
와 prestart
hook에 의해 요구되는 인터페이스를 실행하는 실행파일을 포함하고 있다. 이 스크팁트는 컨테이너가 생성된 뒤에 runC
에 의해 호출되지만 시작되기 전에 컨테이너와 연관되어있는 config.json
에 접근한다. 여기서 정보를 가지고 nvidia-container-cli
를 적절한 세트의 플래그를 가지고 호출한다.가장 중요한 플래그 중 하나는 특정 GPU가 컨테이너에 포함되어야 한다는 것이다.
이 요소는 nvidia-container-toolkit-base
패키지에 포함되어있다.
NVIDIA에 특화된 코드가 포함된 runC
의 포크(fork)였다. 2019년 이후 이것은 호스트 시스템에 설치된 네이티브 runC
에 올라가는 얇은 wrapper이다.
nvidia-container-runtime
은 runC
스펙을 입력받고 NVIDIA Container Runtime Hook을 prestart
hook을 더하고, 네이티브 runC
를 호출하여 hook 세트가 포함된 수정된 runC
스펙을 전달한다.
이 요소는 nvidia-container-toolkit-base
패키지에 포함되어있다.
NVIDIA Container Toolkit과 상호작용할 수 있는 유틸리티들을 많이 포함하고 있다. 여기에는 NVIDIA Container Toolkit을 사용하거나 Container Device Interface (CDI) 스펙을 생성하는 도커와 같은 런타임을 구성하는 기능도 포함되어있다.
NVIDIA 패키지 구조 설명
https://engineer-mole.tistory.com/265
https://koobh.tistory.com/60