DDP 실전 — torchrun으로 다중 프로세스 학습
DDP 실전 — torchrun으로 다중 프로세스 학습
DDP를 실제로 쓰려면 모델 복제본 수만큼 프로세스를 띄워야 해요. 권장 방식은 GPU 한 장당 프로세스 하나, 즉 '모델 복제본 하나당 프로세스 하나'를 스폰하는 것이에요.
setup 함수
MASTER_ADDR/MASTER_PORT 를 설정하고 dist.init_process_group(backend, rank, world_size) 로 프로세스 그룹을 만들고, 종료 시 cleanup() 으로 정리해요. 백엔드는 가속기(예: CUDA)에 맞춰 torch.distributed.get_default_backend_for_device 로 고르면 돼요.
왜 DataParallel보다 빠른가
스레드 기반 DataParallel은 GIL 경합과 입력 스캐터·출력 수집 오버헤드 때문에 대개 DDP보다 느려요. DDP는 프로세스 기반이라 단일 머신에서도 보통 더 빠르고, 모델 병렬과도 함께 쓸 수 있어요.
더 고급 사용
- 체크포인트 저장/복원으로 학습을 이어가기.
- DDP와 모델 병렬을 결합해 큰 모델 다루기.
- 여러 노드로 확장할 땐 torchrun·노드별 world_size 관리.