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)