AI/3주차

4. Parallel & Hyperparameter Tuning & Troubleshooting

jnnwnn 2021. 8. 20. 17:48

Model Parallel & Data Parallel

  • 모델 나누기 / 데이터 나누기
  • 모델 병렬화는 병목, 파이프라인의 어려움으로 인해 어렵다
  • 데이터 병렬화는 데이터를 나눠 GPU에 할당하고, 결과를 평균낸다.
  • mimibatch 수식과 유사하지만, 여러 GPU에서 병렬적으로 실행
  • DataParallel - 데이터를 분배한 후 평균을 취함. 
    • GPU 사용 불균형 문제 발생(한곳에서 평균을 내주기 때문에), Batch 사이즈 감소
  • DistributedDataParallel 
    • 각 CPU마다 프로세스를 생성하여 개별 GPU에 할당(개별적으로 평균 계산)

PIN memory: DRAM에 데이터를 바로 올림


Hyperparameter Tuning

  • 모델이 학습하지 않는 값을 사람이 지정 (lr, 모델의 크기, optimizer 등)
  • Grid와 Random 방식이 대표적
  • 최근에는 Bayesian 기법들 이용

Ray 모듈

  • multi-node multi processing 지원 모듈
  • ML/DL의 병렬 처리를 위해 개발된 모듈
  • 하이퍼파라미터를 찾기위한 다양한 모듈 제공

TroubleShooting

  • GPUtil 사용
import GPUtil
GPUtil.showUtilization()