소개 || 분산 데이터 병렬 처리 (DDP) 란 무엇인가? || 단일 노드 다중-GPU 학습 || 결함 내성 || 다중 노드 학습 || minGPT 학습
분산 데이터 병렬 처리 (DDP) 란 무엇인가?¶
저자: Suraj Subramanian 번역: 박지은
DDP 의 내부 작동 원리
DistributedSampler
이란 무엇인가?GPU 간 변화도가 동기화되는 방법
파이토치 비분산 학습 에 익숙할 것
아래의 영상이나 유투브 영상 youtube 을 따라 진행하세요.
이 튜토리얼은 파이토치에서 분산 데이터 병렬 학습을 가능하게 하는 분산 데이터 병렬 (DDP) 에 대해 소개합니다. 데이터 병렬 처리란 더 높은 성능을 달성하기 위해 여러 개의 디바이스에서 여러 데이터 배치들을 동시에 처리하는 방법입니다. 파이토치에서, 분산 샘플러 는 각 디바이스가 서로 다른 입력 배치를 받는 것을 보장합니다. 모델은 모든 디바이스에 복제되며, 각 사본은 변화도를 계산하는 동시에 Ring-All-Reduce 알고리즘 을 사용해 다른 사본과 동기화됩니다.
예시 튜토리얼 에서 DDP 메커니즘에 대해 파이썬 관점에서 심도 있는 설명을 볼 수 있습니다.
데이터 병렬 DataParallel
(DP) 보다 DDP가 나은 이유¶
DP 는 데이터 병렬 처리의 이전 접근 방식입니다. DP 는 간단하지만, (한 줄만 추가하면 됨) 성능은 훨씬 떨어집니다. DDP는 아래와 같은 방식으로 아키텍처를 개선합니다.
|
|
---|---|
작업 부하가 큼, 전파될 때마다 모델이 복제 및 삭제됨 |
모델이 한 번만 복제됨 |
단일 노드 병렬 처리만 가능 |
여러 머신으로 확장 가능 |
느림, 단일 프로세스에서 멀티 스레딩을 사용하기 때문에 Global Interpreter Lock (GIL) 충돌이 발생 |
빠름, 멀티 프로세싱을 사용하기 때문에 GIL 충돌 없음 |
읽을거리¶
Multi-GPU training with DDP (이 시리즈의 다음 튜토리얼)