NCCL
Jump to navigation
Jump to search
NCCL
Overview
NCCL(NVIDIA Collective Communications Library)는 GPU 간 통신을 최적화하는 라이브러리. AllReduce, AllGather, Broadcast 등 컬렉티브 연산 제공. Multi-GPU/Distributed 학습의 핵심.
Summary
- * 무엇인가? NVIDIA 컬렉티브 통신 라이브러리. GPU 간 최적화
- * 왜 필요한가? Multi-GPU 학습 시 GPU 간 데이터 동기화 필수
- * 언제 사용하는가? 분산 학습, Multi-GPU 추론, HPC 워크로드
---
Purpose
이 문서가 존재하는 이유
- Goal: NCCL의 개념, 사용법, 설정 가이드 제공
- Scope: 기본 개념, 설치/설정, 사용 예제, 모범 사례
- Non-goals: 고급 커스터마이징, 내부 소스 코드 분석
---
Key Concepts
---
Architecture
NCCL은 GPU 간 통신을 위한 컬렉티브 연산 라이브러리. NVLink/InfiniBand/PCIe 등 다양한 백엔드 지원. Tree/Ring 알고리즘으로 대역폭 최적화. PyTorch/TensorFlow/JAX와 통합.
---
Workflow
1. 1. NCCL 설치 (PyTorch에 기본 포함)
2. 2. NCCL_DEBUG=INFO로 디버깅
3. 3. torch.distributed로 Multi-GPU 설정
4. 4. DistributedDataParallel로 모델 병렬화
5. 5. NCCL 테스트로 성능 확인
6. 6. 환경 변수로 최적화 (NCCL_ALGO, NCCL_PROTO)
---
Configuration
{config_code}---
Best Practices
- NCCL_DEBUG=INFO로 통신 경로 확인
- NVLink 사용 시 NCCL_ALGO=Tree 권장
- InfiniBand 사용 시 NCCL_PROTO=LL128 권장
- NCCL_IB_DISABLE=0으로 IB 사용 강제
- torch.distributed.init_process_group()로 NCCL 초기화
---
Limitations
- NCCL은 NVIDIA GPU 전용 (AMD ROCm 사용)
- 소규모 배치에서는 오버헤드 발생
- 네트워크 지연에 민감
---
References
---