- Pytorch 1.6 버전부터 **torch.distributed** 라이브러리에 3개의 요소로 구성됨
- Distributed Data-Parallel Training(DDP)
- 단일 프로그램 다중 데이터 학습 패러다임
- 모델(신경망)은 모든 프로세서에 복제되고, 모든 복제 모델은 서로 다른 데이터 샘플을 입력받음
- 복제 모델간의 동기화 유지를 위해 미분값에 대한 통신을 처리
- 교육속도를 높이기 위해 미분값 계산 후, 미분값 중첩
- RPC-Based Distributed Training(RPC)
- Data-parallel 학습을 지원할 수 없는 일반적인 학습 구조에서 활용
- Distributed pipeline parallelism
- Parameter server paradigm
- DDP와 다른 학습 패러다임 조합
- 원격으로 객체(프로그램)의 Lifetime 관리 및 머신의 경계를 넘어선 Autograd engine 확장을 도움
- Collective Communication(c10d)
- Group내 프로세서들 간 Tensor 통신(DDP와 RPC의 기반)
- Collective 통신(DDP 사용): all_reduce, all_gather
- P2P 통신(RPC 사용): send, isend
- DDP와 RPC API는 대다수의 Distributed 학습 방식을 제공하기 때문에, 개발자가 직접적으로 활용하는 경우는 드묾.
- 하지만, 직접적인 API 호출도 유용함(Distributed parameter averaging)
- 프로그램에서 DDP를 활용한 미분값 전달하는 대신, 역전파(backward) 후에 모든 모델의 파라미터 값의 평균을 계산.
- 계산과 통신을 분리할 수 있음
- 통신 대상을 보다 세밀하게 제어 가능함
- DDP가 제공하는 최적화 성능은 포기해야됨
Data Parallel Training