HPC & GPU Engineering/AI Infrastructure Engineer

[HPC/GPU 클러스터 운영 Scheduling Deep Dive 1편] Topology-Aware Scheduling – NVLink/NVSwitch/NUMA 최적 활용 전략

ygtoken 2025. 8. 20. 20:13
728x90

Topology-Aware Scheduling의 필요성

 

HPC나 대규모 GPU 클러스터 환경에서 단순히 “GPU 몇 개”라는 요청만으로 Job을 스케줄링하는 것은 충분하지 않습니다. 특히 NVIDIA NVLink, NVSwitch, CPU의 NUMA(Node-Local Memory Access) 구조가 얽힌 복잡한 하드웨어 토폴로지에서는 **리소스의 위치(Locality)**가 성능을 좌우합니다.

예를 들어 동일한 8개 GPU 서버라도 NVLink로 직접 연결된 GPU 쌍에 Job을 배치하는 경우와 PCIe Root Complex를 여러 번 거쳐야 하는 경우는 통신 지연(latency)과 대역폭 차이에서 20~40% 이상의 성능 차이가 발생합니다.

 

실제 딥러닝 학습에서는 AllReduce 통신 패턴이 빈번하게 발생합니다. GPU 간 토폴로지를 고려하지 않으면 통신 병목으로 인해 수십 노드 학습이 비효율적으로 동작합니다. 따라서 Topology-Aware Scheduling은 단순한 Job 배치가 아닌 성능 보장을 위한 필수 전략입니다.

 


 

NVLink/NVSwitch/NUMA Awareness 구조

 

현대 GPU 서버는 CPU NUMA 도메인과 GPU 연결 구조가 혼재되어 있습니다. 이를 간단히 정리하면 다음과 같습니다.

구성 요소 설명
NUMA Node CPU 소켓 단위로 메모리 접근 속도 차이가 발생하며 GPU가 어느 소켓에 연결되어 있는지가 중요합니다.
PCIe Root Complex GPU가 연결되는 경로이며, 동일 Root Complex 하에 있는 GPU 간 통신이 상대적으로 빠릅니다.
NVLink GPU 간 고속 직결 링크로, P2P 통신에서 PCIe 대비 수 배 높은 대역폭을 제공합니다.
NVSwitch 다수 GPU 간 풀 메쉬(Full Mesh) 연결을 제공하는 스위치로, A100/H100 기반 DGX 시스템의 핵심 요소입니다.
NUMA-Aware Placement CPU와 GPU 자원의 물리적 근접성을 고려한 Job 할당 전략을 의미합니다.

 

이 구조를 Slurm 23.x와 같은 최신 스케줄러는 gres.conf, topology.conf를 통해 인식합니다. 또한 NVIDIA의 nvidia-smi topo -m 명령으로 실제 하드웨어 연결 상태를 확인할 수 있습니다.

# GPU Topology 확인
nvidia-smi topo -m

 


 

배치 전략과 데이터 흐름

 

Topology-Aware Scheduling의 핵심은 Job 요청 시 단순히 GPU 개수만 지정하는 것이 아니라, 연결 구조까지 고려한 배치를 수행하는 것입니다. 예를 들어 4개의 GPU가 필요한 학습 Job이라면 NVLink로 완전히 연결된 GPU 그룹을 배정하는 것이 이상적입니다.

# NVLink로 연결된 4-GPU 그룹 배정 예시
srun --gres=gpu:4 \
     --ntasks=4 \
     --cpus-per-task=8 \
     --distribution=block:cyclic \
     --hint=nomultithread \
     python train.py

이 경우 Slurm은 topology.conf에 정의된 GPU 간 연결성을 참고해 최적 조합을 찾습니다. 또한 NUMA-Aware Placement를 위해 --mem-bind 옵션을 활용하면 CPU 메모리 접근 지연을 줄일 수 있습니다.

 


 

실제 적용 사례

 

  • NVIDIA DGX A100 시스템: NVSwitch 기반으로 8개 GPU가 모두 풀 메쉬로 연결되어 있어 배치 제약이 적습니다. 다만 CPU NUMA 도메인을 고려해 메모리 접근을 최적화해야 합니다.
  • 하이브리드 GPU 서버: 일부 GPU만 NVLink로 연결된 환경(예: PCIe GPU + NVLink GPU 혼합)에서는 분산 학습 Job을 실행할 때 반드시 NVLink 그룹을 우선 배정해야 성능 저하를 방지할 수 있습니다.
  • 대규모 연구기관: 기상 예측 모델 학습에서 1,000개 이상의 GPU를 사용하는 사례에서는 노드 내부 NVLink 최적화와 노드 간 InfiniBand Topology Awareness를 결합하여 효율성을 극대화합니다.

 


 

장점과 단점

 

장점

 

  • GPU 통신 효율을 극대화하여 학습 시간을 단축합니다.
  • NUMA-Aware 배치를 통해 CPU 메모리 병목을 줄입니다.
  • 자원 활용률을 높여 동일한 자원으로 더 많은 Job을 소화합니다.

 

단점

 

  • 스케줄러 설정 복잡도가 증가합니다 (topology.conf, gres.conf 관리 필요).
  • 특정 토폴로지를 선호하면 Job 대기 시간이 길어질 수 있습니다.
  • 이기종 클러스터 환경(서버별 NVLink 구조 상이)에서는 정책 설계가 까다롭습니다.

 


 

실무 팁과 주의사항

 

  1. Topology Mapping 필수화
  2. 클러스터 도입 시 nvidia-smi topo -m 결과를 문서화하고 Slurm topology.conf에 반영하는 것이 중요합니다.
  3. 테스트 벤치마크 수행
  4. 단순 배치와 Topology-Aware 배치의 성능 차이를 nccl-tests로 검증하면 운영팀과 사용자 모두 납득할 수 있습니다.
  5. Job 대기 시간 관리
  6. 특정 토폴로지 그룹만 선호하면 Queue가 길어질 수 있으므로, QoS와 Fairshare 정책을 병행해 사용자 기대치를 관리해야 합니다.
  7. NUMA + GPU Placement 동시 고려
  8. GPU만 최적화하고 CPU 메모리를 무시하면 성능이 제한됩니다. --mem-bind--cpu-bind를 적절히 조합해야 합니다.
# NUMA와 GPU Placement 동시 고려 예시
srun --gres=gpu:2 \
     --cpus-per-task=16 \
     --mem-bind=local \
     --cpu-bind=cores \
     python inference.py

 


 

정리하며

 

Topology-Aware Scheduling은 HPC/GPU 클러스터에서 성능을 보장하는 핵심 전략입니다. NVLink와 NVSwitch, NUMA 구조를 올바르게 인지하고 배치 전략을 수립하지 않으면 고가의 GPU 자원이 제 성능을 발휘하지 못합니다.

운영자는 스케줄러 설정과 Job 제출 정책을 최적화하고, 사용자에게 올바른 가이드라인을 제공함으로써 토폴로지 기반 최적화를 체계적으로 정착시켜야 합니다. 이는 단순한 Job 스케줄링을 넘어 **클러스터 전체 TCO(Total Cost of Ownership)**를 낮추는 운영 전략으로 이어집니다.

 

728x90