제3장. GPU 기반 환경을 위한OS , Docker 및 쿠버네티스 튜닝
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
고도로 최적화된 GPU 코드와 라이브러리라도 시스템 수준의 병목 현상은 대규모 AI 훈련 성능을 제한할 수 있습니다. 가장 빠른 GPU도 데이터와 명령어를 공급하는 환경만큼만 성능을 발휘합니다. 이 장에서는 GPU가 최대 성능을 발휘할 수 있도록 운영 체제와 컨테이너 런타임을 조정하는 방법을 살펴봅니다.
먼저 기초적인 GPU 소프트웨어 스택을 살펴봅니다. 이후 NUMA 어피니티 및 휴지페이지(hugepages)와 같은 핵심 CPU 및 메모리 최적화 기법에 대해 심층적으로 다룹니다. 이는 데이터가 스토리지에서 CPU를 거쳐 GPU로 효율적으로 흐르도록 보장합니다. 동시에 퍼시스턴스 모드, 멀티프로세스 서비스(MPS), 멀티인스턴스 GPU(MIG) 파티션과 같은 중요한 GPU 드라이버 설정도 논의합니다. 이러한 설정은 오버헤드를 줄이고 자원을 효과적으로 동기화하여 GPU 활용도를 극대화하는 데 도움이 됩니다.
NVIDIA 컨테이너 툴킷, 컨테이너 런타임, 쿠버네티스 토폴로지 매니저, 쿠버네티스 GPU 오퍼레이터와 같은 솔루션을 활용하면 GPU 환경을 위한 통합되고 고도로 최적화된 소프트웨어 스택을 구축할 수 있습니다. 이러한 솔루션은 단일 노드 및 다중 노드 GPU 환경 전반에 걸쳐 효율적인 리소스 할당과 워크로드 스케줄링을 가능하게 하며, GPU 기능이 완전히 활용되도록 보장합니다.
이를 통해 이러한 최적화가 중요한 이유에 대한 직관을 쌓게 될 것입니다. 본질적으로 이러한 최적화는 지연 시간을 최소화하고 처리량을 극대화하며, GPU가 지속적으로 데이터로 공급되어 최고 성능으로 작동하도록 보장합니다. 그 결과 훈련 및 추론 워크로드 모두에 대해 상당한 성능 향상과 높은 유효 처리량 비율을 제공하는 강력하고 확장 가능한 시스템이 구현됩니다.
운영 체제
운영 체제(OS)는 모든 것이 실행되는 기반 입니다. GPU 서버는 일반적으로 최신 GPU 하드웨어를 지원하는 업데이트된 커널이 탑재된 Ubuntu Server LTS 또는 Red Hat과 같은 Linux 배포판을 실행합니다. NVIDIA 드라이버는 커널 모듈을 설치하여 각 GPU마다 하나씩 /dev/nvidia0, /dev/nvidia1, /dev/nvidia2와 같은 장치 파일을 생성합니다. 또한 드라이버 제어 작업을 위한 /dev/nvidiactl, 통합 가상 메모리를 위한 /dev/nvidia-uvm, 모드 설정 및 버퍼 관리를 위한 /dev/nvidia-modeset 도 생성합니다.
운영체제는 CPU 스케줄링, 메모리, 네트워킹, 스토리지를 관리하며, 이 모든 요소는 높은 GPU 처리량을 위해 최적화되어야 합니다. 따라서 운영체제는 GPU 작업에 간섭하지 않도록 구성되어야 합니다. 예를 들어, GPU 노드는 스왑을 비활성화하거나 ` vm.swappiness `을 0으로 설정하여 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access