Rate this Page

소개 || 분산 데이터 병렬 처리 (DDP) 란 무엇인가? || 단일 노드 다중-GPU 학습 || 결함 내성 || 다중 노드 학습 || minGPT 학습

분산 데이터 병렬 처리 (DDP) 란 무엇인가?#

저자: Suraj Subramanian 번역: 박지은

이 장에서 배우는 것
  • DDP 의 내부 작동 원리

  • DistributedSampler 이란 무엇인가?

  • GPU 간 변화도가 동기화되는 방법

필요 사항

아래의 영상이나 유투브 영상 youtube 을 따라 진행하세요.

이 튜토리얼은 파이토치에서 분산 데이터 병렬 학습을 가능하게 하는 분산 데이터 병렬 (DDP) 에 대해 소개합니다. 데이터 병렬 처리란 더 높은 성능을 달성하기 위해 여러 개의 디바이스에서 여러 데이터 배치들을 동시에 처리하는 방법입니다. 파이토치에서, 분산 샘플러 는 각 디바이스가 서로 다른 입력 배치를 받는 것을 보장합니다. 모델은 모든 디바이스에 복제되며, 각 사본은 변화도를 계산하는 동시에 Ring-All-Reduce 알고리즘 을 사용해 다른 사본과 동기화됩니다.

예시 튜토리얼 에서 DDP 메커니즘에 대해 파이썬 관점에서 심도 있는 설명을 볼 수 있습니다.

데이터 병렬 DataParallel (DP) 보다 DDP가 나은 이유#

DP 는 데이터 병렬 처리의 이전 접근 방식입니다. DP 는 간단하지만, (한 줄만 추가하면 됨) 성능은 훨씬 떨어집니다. DDP는 아래와 같은 방식으로 아키텍처를 개선합니다.

DataParallel

DistributedDataParallel

작업 부하가 큼, 전파될 때마다 모델이 복제 및 삭제됨

모델이 한 번만 복제됨

단일 노드 병렬 처리만 가능

여러 머신으로 확장 가능

느림, 단일 프로세스에서 멀티 스레딩을 사용하기 때문에 Global Interpreter Lock (GIL) 충돌이 발생

빠름, 멀티 프로세싱을 사용하기 때문에 GIL 충돌 없음

읽을거리#