torch.distributed — 분산 통신 패키지

torch.distributed — 분산 통신 패키지

torch.distributed 는 PyTorch의 분산 학습 기반이에요. 여러 프로세스·GPU가 협력하도록 통신 백엔드(NCCL, Gloo 등)를 추상화하고, 컬렉티브(all-reduce 등) 연산을 제공해요.

핵심 개념

  • 프로세스 그룹(process group): 통신에 참여하는 랭크들의 집합이에요.
  • 백엔드: GPU 환경에서는 주로 NCCL을, CPU 환경에서는 Gloo를 사용해요.
  • 컬렉티브 연산: all_reduce, broadcast, all_gather 같은 다자간 통신으로 그래디언트·텐서를 교환해요.
  • 프로파일링: torch.profiler로 컬렉티브 통신을 분석할 수 있어요.

권장 프로그래밍 모델

GPU마다 하나의 스레드(프로세스)가 하나의 디바이스를 담당하는 방식이 표준이에요. 스레드당 여러 GPU를 쓰던 예전 멀티GPU 함수는 deprecated되었어요.

더 알아보기