[Boostcamp 2주차] Multi-GPU

yoonene·2022년 1월 28일
0

Boostcamp AI Tech

목록 보기
10/27

Multi-GPU 사용하기

  • 다중 GPU에 학습을 분산하는 방법 2가지
  • 모델 나누기 vs 데이터 나누기
  • Model Parallel은 병목, 파이프라인의 어려움 등으로 Data Parallel을 주로 사용

Model parallel

  • 모델을 나누는 방법은 예전부터 사용, AlexNet도 모델 병렬화

    C2와 C3 사이 병렬을 위해 GPU간 교차되는 부분이 존재.
    당시 GPU 성능이 지금처럼 좋지 않아 2개의 GPU로 돌렸다고 한다.

  • 문제점

    GPU 2개를 사용하지만 동시에 학습하지 않고 한 GPU에서 학습이 끝나면 다른 GPU에서 시작하는 비효율적인 학습

Data parallel

  • 데이터를 나눠 GPU에 할당한 후 결과 값에 평균을 취하는 방법
  • minibatch도 마찬가지로 데이터를 나누고 각 batch의 loss값 gradient의 평균을 구하지만, data parallel은 batch를 병렬로 여러 GPU에서 처리

DataParallel vs DistributedDataParallel

  • DataParallel: 단순히 데이터만 분배하여 구한 값의 평균
    -> GPU 하나가 coordinate하기 때문에 GPU 사용 불균형 문제 발생, 이를 해결하려 Batch 사이즈를 줄여야 함, GIL
  • DistributedDataParallel: 각 CPU마다 process를 생성하여 개별 GPU에 할당
    -> 한 GPU가 모아서 하는 것이 아니라 개별 GPU에서 연산 (DataParallel의 문제점 해결)
profile
NLP Researcher / Information Retrieval / Search

0개의 댓글