강의 복습 내용 (week2-7) Multi-GPU 학습

  • by

최근에는 Multi-GPU 학습을 쓰는 경향이다!

-> 오늘의 딥 러닝은 방대한 데이터와의 싸움

Muti-GPU 개념

  • Single vs. 멀티: 싱글은 1개, 멀티는 2개
  • GPU vs. Node : Node = 시스템(한 대의 컴퓨터), GPU = 하나의 노드에 있는 GPU를 의미합니다.

  • Single Node Single GPU: 한 대의 컴퓨터에 하나의 GPU
  • 단일 노드 멀티 GPU: 한 대의 컴퓨터에 여러 GPU
  • 다중 노드 다중 GPU: 여러 컴퓨터에서 여러 GPU

Model parallel

  • 여러 GPU에 학습을 분산시키는 두 가지 방법 -> 모델 분할/데이터 분할
  • 모델을 분리하는 것은 생각보다 오래전부터 썼다 (alexnet)
  • 모델의 병목 현상, 파이프라인의 어려움 등에 의한 모델 병렬화는 고난이도 과제

– Alexnet (Multi – GPU) -> Model parallel


Alexnet 문제


각각의 시간에 맞추어 돌아가지 않으면 병렬화의 의미가 있지만, 위에는 병렬화의 의미가 없다.

– 데이터 parallel

  • 데이터를 분할하고 GPU에 할당한 후 결과의 평균을 얻는 방법
  • minibatch 식과 비슷하지만 한 번에 여러 GPU에서 실행


  • PyTorch는 다음 두 가지 방법을 제공합니다.

    • DataParallel, DistributedDataParallel
      • Data Parallel – 단순히 데이터를 분해하고 평균을 취합니다.

        • GPU 사용 불균형 문제 발생, Batch 크기 감소(1GPU 병목), GIL
      • DistributedDataParallel
        • 각 CPU에 process를 생성하여 개별 GPU에 할당
          • 기본적으로 DataParallel에서 하나의 개별 작업 평균