과제를 하다보니, 조금씩 막히는 부분들이 생긴다.
이런저런 시도를 해봤지만 안 되는 부분들이 생겨서,
좀 더 학습이 필요할 듯 싶다.
전부터 관심 있었던 분야이다.
GPU 하나의 성능만으로는 학습을 시키기 어려운 매우 큰 모델들은
여러 GPU를 사용해야 한다고 알고는 있었는데,
그 개념이 잘 와닿지 않아서 궁금했었다.
모델 나누기
모델은 나누는 법은 전부터 사용해왔는데, 모델의 병목이나 파이프라이닝의 어려움으로 인해서 모델의 병렬화는 어려운 문제이다.
모델 병렬화의 예시인 alexnet에서는 디바이스를 교차하며 레이어를 진행해나간다.
데이터 나누기
데이터를 나눠 GPU에 할당한 후, 결과의 평균을 취한다.
PyTorch에서는 DataParallel과 DistributedDataParallel을 지원하는데, 전자의 경우 연산 전체의 평균을 구하기 때문에 GPU 사용 불균형이 생길 수 있고, 후자는 GPU 개별적으로 연산의 평균을 구하기 때문에 위 문제를 해결할 수 있다.
듣도 보도 못한 모듈이었는데, 분산병렬 모듈의 표준이라고 한다.
병렬 처리를 위해서 개발된 모듈이고,
Hyperparameter의 조정을 위한 다양한 모듈을 제공한다고 한다.
스케쥴러와 알고리즘의 선택을 통해 Hyperparameter를 효율적으로 선택할 수 있다.
같은 요소의 개수를 셀 때는 Counter
라이브러리를 사용해보자!
몫과 나머지를 한 번에 구하고 싶다면 divmod
를 쓰자!
조합 개수 구할 땐 math.comb
모듈도 사용해보자!
서두르지 말고,
한 발짝씩 나아가기
잘 보고 갑니다 !