본문 바로가기
[GPUaaS]/GPUmgt

[NCCL] NVIDIA Collective Communications Library

by METAVERSE STORY 2026. 2. 3.
반응형

 

 

NCCL 테스트는 그냥 “벤치마크”가 아니라,
👉 GPU 클러스터가 분산 학습을 제대로 할 수 있는지 검증하는 필수 관문이야.

아래를 보면 왜 다들 NCCL 테스트부터 하는지 바로 감 잡힐 거야.


1️⃣ NCCL 테스트가 뭐냐? (한 줄 요약)

NCCL 테스트 = GPU ↔ GPU 간 통신 성능과 안정성을 검증하는 테스트

  • 만든 곳: NVIDIA
  • 대상:
    • 단일 노드 멀티 GPU
    • 멀티 노드 멀티 GPU
  • 목적:
    • 분산 학습 전 통신 병목/에러 사전 차단

👉 “학습 코드 돌리기 전에 인프라 체력검사”


2️⃣ 왜 NCCL 테스트를 꼭 해야 하냐?

분산 학습에서 실제 계산보다 중요한 게 이거야:

 
[GPU 계산][Gradient 통신]

통신이 느리면?

  • GPU 대기 증가
  • Scaling 안 됨
  • 학습 시간 폭증

통신이 깨지면?

  • NCCL timeout
  • Rank hang
  • 학습 중간에 멈춤 😱

👉 그래서 학습 전에 NCCL 테스트 필수


3️⃣ NCCL 테스트로 뭘 확인하냐?

① GPU ↔ GPU 대역폭 (Bandwidth)

  • NVLink 제대로 붙었나?
  • PCIe 병목 있나?
  • IB/RoCE 속도 정상인가?

② 지연 시간 (Latency)

  • 작은 메시지 통신 성능
  • Control path 문제 확인

③ 토폴로지 인식

  • NCCL이 올바른 경로 선택했는지
  • NVLink > PCIe > NIC 순서 지켜졌는지

④ 네트워크 안정성

  • 패킷 드롭
  • IB 설정 오류
  • MTU, GID, PKey 문제

4️⃣ 대표적인 NCCL 테스트 종류

NVIDIA가 공식 제공하는 nccl-tests 패키지가 있다.

🔹 1) all_reduce_perf ⭐ (가장 중요)

분산 학습의 핵심 연산

  • 모든 GPU가 값을 모아서 평균/합산
  • 실제 DDP / Horovod와 거의 동일
 
./all_reduce_perf -b 8 -e 1G -f 2 -g 8

옵션 의미

옵션의미
-b 최소 메시지 크기
-e 최대 메시지 크기
-f 증가 배수
-g GPU 개수

🔹 2) all_gather_perf

  • 각 GPU 데이터 모아서 전체 공유
  • 모델 파라미터 브로드캐스트 검증

🔹 3) broadcast_perf

  • Rank 0 → 전체 전송
  • 초기 모델 배포 확인

🔹 4) reduce_scatter_perf

  • 대규모 모델 분할 학습에서 중요

5️⃣ Single Node vs Multi Node 테스트 차이

🟢 Single Node

 
./all_reduce_perf -g 8

확인 포인트:

  • NVLink Bandwidth
  • PCIe fallback 여부

정상:

  • A100 NVLink → 600GB/s 급
  • PCIe → ~100GB/s 이하

🔵 Multi Node (진짜 중요)

보통 이렇게 실행:

 
mpirun -np 16 \ -H node1:8,node2:8 \ ./all_reduce_perf -b 8M -e 1G -f 2

확인 포인트:

  • IB/RoCE 사용 여부
  • 노드 간 대역폭
  • Rank hang 발생 여부

6️⃣ 결과 해석하는 법 (실무 기준)

출력 예시

 
# size count type redop time algbw busbw 1048576 262144 float sum 0.24 85.0 160.0

봐야 할 핵심

항목의미
algbw 알고리즘 기준 대역폭
busbw 실제 버스 사용 대역폭
time 통신 시간

👉 busbw가 하드웨어 스펙 대비 너무 낮으면 문제


7️⃣ 자주 터지는 문제들 (현업 빈출)

❌ IB 안 타고 TCP로 감

 
NCCL_DEBUG=INFO

로그에:

 
NET/Socket

👉 ❌ 문제
정상은:

 
NET/IB

❌ 특정 Rank에서 hang

원인:

  • MTU 불일치
  • 방화벽
  • PKey / GID 설정
  • 한 노드 NIC 불량

❌ 성능 들쭉날쭉

원인:

  • NUMA 미고정
  • CPU affinity 없음
  • IRQ 몰림

8️⃣ 실전에서 쓰는 NCCL 환경변수

 
export NCCL_DEBUG=INFO export NCCL_IB_DISABLE=0 export NCCL_SOCKET_IFNAME=ib0 export NCCL_IB_GID_INDEX=3 export NCCL_IB_TC=106

👉 “테스트 성공 + 안정적”이면 학습 돌린다


9️⃣ DDN / 스토리지랑 NCCL 테스트 관계

중요 포인트 ⚠️
👉 NCCL 테스트는 스토리지 성능 테스트가 아니다

  • NCCL: GPU ↔ GPU 통신
  • DDN: GPU ↔ Storage I/O

하지만 둘 다:

  • InfiniBand 사용
  • NIC 공유

👉 NCCL이 불안하면 DDN도 불안해질 확률 큼


🔟 한 줄 요약

NCCL 테스트는 “이 클러스터에서 분산 학습을 돌려도 되는가?”를 판정하는 리트머스 시험지다

이거 통과 못 하면
DDP / Horovod / Megatron-LM
👉 전부 지옥 시작 😈

 

 

 

반응형

댓글