NVIDIA CONTAINER TOOLKIT

조재훈·2023년 7월 5일
0

기타

목록 보기
4/5
post-thumbnail
post-custom-banner

개요


https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/overview.html

NVIDIA Container Toolkit

  • GPU 가속 컨테이너를 빌드 및 실행
  • container runtime library 및 NVIDIA GPU를 활용해 컨테이너를 자동으로 구성할 수 있는 도구들 포함
  • Docker, LXC, Podman 등 여러 컨테이너 엔진 지원함

도커는 기본적으로 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)

docker / containerd

  • NVIDIA Container Runtime이 아래 그림과 같은 과정을 거치며 OCI_compliant runtime으로 구성된다

cri-o / lxc

  • 이 경우는 NVIDIA Container RUntime이 필요하지 않다

구성요소와 패키지

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)

NVIDIA Container Library and CLI

이 요소들은 libnvidia-container-toolslibnvidia-container1 패키지로 구성된다.
GPU를 이용해 GNU/Linux container를 자동으로 구성할 수 있는 CLI utility와 라이브러리를 제공한다.
libnvidia-container는 잘 정의된 API와 다른 런타임들이 NVIDIA GPU를 컨테이너에 지원하기 위해 호출할 수 있는 wrapper CLI (nvidia-container-cli를 제공한다.

NVIDIA Container Runtime Hook

이 요소는 nvidia-container-toolkit 패키지에 포함된다.
runCprestart hook에 의해 요구되는 인터페이스를 실행하는 실행파일을 포함하고 있다. 이 스크팁트는 컨테이너가 생성된 뒤에 runC에 의해 호출되지만 시작되기 전에 컨테이너와 연관되어있는 config.json에 접근한다. 여기서 정보를 가지고 nvidia-container-cli를 적절한 세트의 플래그를 가지고 호출한다.가장 중요한 플래그 중 하나는 특정 GPU가 컨테이너에 포함되어야 한다는 것이다.

NVIDIA Container Runtime

이 요소는 nvidia-container-toolkit-base 패키지에 포함되어있다.
NVIDIA에 특화된 코드가 포함된 runC의 포크(fork)였다. 2019년 이후 이것은 호스트 시스템에 설치된 네이티브 runC에 올라가는 얇은 wrapper이다.
nvidia-container-runtimerunC스펙을 입력받고 NVIDIA Container Runtime Hook을 prestart hook을 더하고, 네이티브 runC를 호출하여 hook 세트가 포함된 수정된 runC 스펙을 전달한다.

NVIDIA Container Toolkit CLI

이 요소는 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

profile
맨땅에 헤딩. 인생은 실전.
post-custom-banner

0개의 댓글