YARN에서 GPU 사용하기
YARN에서 GPU 사용하기 (Using GPU On YARN)
이 문서는 YARN에서 GPU(Graphics Processing Unit) 리소스를 사용하는 방법을 설명합니다. GPU는 가속 컴퓨팅(머신러닝, 딥러닝 등)에 사용되는 개수 가능한(countable) 리소스로, YARN의 확장 가능한 리소스 모델을 통해 노드/애플리케이션/큐에 추적되고 할당됩니다.
출처: 문서
본문
GPU 정의
YARN은 yarn.resource-types에 추가 리소스를 등록하여 GPU를 리소스로 사용합니다. GPU를 사용하려면 ResourceManager가 GPU를 리소스 유형으로 인식하고, 각 NodeManager가 자신의 GPU 개수를 보고해야 합니다.
구성 (Configuration)
ResourceManager / ResourceTypes
GPU를 커스텀 리소스로 정의하고 기본 단위/최소/최대 할당을 설정합니다. 예를 들어 yarn-site.xml 또는 resource-types.xml에:
<property>
<name>yarn.resource-types</name>
<value>yarn.io/gpu</value>
</property>
<property>
<name>yarn.resource-types.yarn.io/gpu.units</name>
<value>G</value>
</property>
NodeManager
각 노드가 제공하는 GPU 수를 node-resources.xml에 설정합니다.
<configuration>
<property>
<name>yarn.nodemanager.resource-type.yarn.io/gpu</name>
<value>2G</value>
</property>
</configuration>
위 예는 해당 노드가 GPU 2개를 제공함을 의미합니다.
GPU 자동 감지
yarn.nodemanager.resource-plugins 설정에 yarn.io/gpu를 추가하면 NodeManager가 로컬 GPU를 자동 감지(detection)합니다.
<property>
<name>yarn.nodemanager.resource-plugins</name>
<value>yarn.io/gpu</value>
</property>
자동 감지가 활성화되면 NodeManager가 GPU 정보를 수집하여 ResourceManager에 보고합니다. yarn.nodemanager.resource-plugins.gpu.path 등으로 GPU 조회 경로(nvidia-smi)를 조정할 수 있습니다.
컨테이너가 GPU를 요청하는 방법
애플리케이션은 리소스 요청에 GPU 리소스를 포함합니다. 예를 들어 distributed shell 또는 커스텀 AM에서 yarn.io/gpu 리소스를 요청하면, 스케줄러는 GPU 리소스가 있는 노드에 컨테이너를 배치하고 컨테이너에 GPU 디바이스를 제공합니다. 컨테이너 내부에서는 nvidia-smi 등을 통해 GPU를 확인하고 사용할 수 있습니다.
실행 유형 및 격리
- GPU 리소스가 있는 컨테이너는 GPU를 가진 노드에만 스케줄링됩니다.
- NodeManager의 리소스 플러그인(ResourcePlugin)이 GPU 디바이스의 격리와 컨테이너별 할당을 관리합니다.
- GPU 사용률/상태는 리소스 플러그인을 통해 수집되어 YARN에 보고될 수 있습니다.
더 알아보기 (Learn more)
- 원문: 문서