(08강) Multi-GPU 학습
210820
궁극적으로는 Multi Node Multi GPU를 하려고 하지만, 많은 어려움이 있어 현재는 Multi GPU 라고 함은 Single Node Multi GPU이다.
Model parallel
다중 GPU에 학습을 분산하는 방법이다. 이 때 두가지로 나눌 수 있다.
데이터를 나누기
모델을 나누기
예로 알렉스넷이 있다.

모델 병렬은 고난이도 과제이며 병목등의 어려움이 발생할 수 있다.

첫번째 파이프라인은 병렬이 되지 않는 모습. 두번째 파이프라인처럼 되어야 한다
Data parallel
파이토치에서는 두 가지 방식을 제공한다
DataParallel
단순히 데이터를 분배한 후 평균을 취한다
분배된 데이터를 받아서 계산하는 GPU가 있고, 계산한 결과를 종합하는 GPU가 있는데, 종합하는 GPU가 상대적으로 메모리를 많이 쓰게 돼서 GPU간의 불균형 문제가 발생한다. 그래서 병목현상이 일어난다.
이는 각 GPU에서 처리하는 배치사이즈를 감소시키는 해결방안이 있다
DistrubutedDataParallel
각각의 GPU가 계산해서 종합하는 방법이다. 이 때에는 GPU수만큼 CPU가 존재한다.
Last updated
Was this helpful?