NCCL이란 무엇인가

NCCL은 NVIDIA Collective Communications Library의 약자로, 여러 GPU가 데이터를 효율적으로 교환하도록 도와주는 통신 라이브러리입니다.

3줄 요약
NCCL이 All-Reduce, All-Gather 같은 GPU 집단 통신을 어떻게 지원하는지 설명합니다.
이 글은 개념뿐 아니라 실제 인프라에서 어디에 쓰이는지까지 연결해 설명합니다.

NCCL이 필요한 이유

분산 학습 프레임워크가 매번 GPU 토폴로지와 네트워크 세부사항을 직접 처리한다면 매우 복잡합니다. NCCL은 대표적인 집단 통신 연산을 공통 인터페이스로 제공합니다.

대표 Collective

연산의미
All-Reduce모든 GPU의 값을 합산한 뒤 모두에게 공유
All-Gather각 GPU의 데이터 조각을 모두 수집
Reduce-Scatter합산 후 결과를 GPU별 조각으로 분배
Broadcast한 GPU의 데이터를 다른 GPU로 배포

NCCL과 하드웨어

NCCL은 NVLink, PCIe, InfiniBand, RoCE를 활용합니다. 즉 NCCL 자체가 네트워크는 아니며, 실제 링크를 효율적으로 사용하는 소프트웨어 계층입니다.

장애 분석에서 보는 포인트

분산 학습이 느릴 때 NCCL 로그, GPU 토폴로지, NIC 바인딩, 링크 속도, 패킷 드롭, CPU NUMA 배치를 함께 확인할 수 있습니다.

자주 묻는 질문

NCCL은 학습 프레임워크인가요?

아닙니다. GPU 집단 통신 라이브러리입니다.

NCCL 성능이 낮으면 GPU 문제가 맞나요?

반드시 그렇지 않습니다. 네트워크, PCIe, NUMA, 케이블, 스위치 설정이 원인일 수 있습니다.