이번 강에서는 Transfer Learning과 모델의 학습 과정을 그래프를 사용하여 좀 더 효과적으로 확인할 수 있는 Monitoring tool에 대하여 학습을 진행했다. 매번 print 문이나 matplotlib을 통해서 모델의 학습 과정을 확인했었는데, 이번에 Monitoring tool에 대하여 알게 되었고 앞으로 모델의 학습 과정을 조금더 효과적으로 나타낼 수 있을 것 같다.
00. 학습 내용
- Pytorch의 Model Save와 Transfer Learning에 대하여 학습
- PyTorch의 Monitoring tools에 대하여 학습
01. Model Load
- 우리는 우리가 학습 시킨 딥러닝 모델을 공유하고 싶을 때, 에폭마다 모델의 학습 결과를 저장시키고 싶을 때, colab과 같이 런타임 항상 유지되지 않는 상황에서 모델 결과를 저장시켜야 할 때 등 딥러닝 Model의 학습 결과를 저장시켜야 할 필요성을 느낄 것이다.
- Pytorch 에서는 torch.save() 함수를 통해서 모델을 저장시킬 수 있다.
- torch.save()는 학습의 결과를 저장하기 위한 함수
- 모델 architecture와 parameter를 저장하기 위한 함수
- 모델 학습 중간 과정의 저장을 통해 최선의 모델을 선택할 수 있음
- 만들어진 모델을 공유하여 학습 재연성을 향상시킬 수 있음
- torch.load()를 통해서 save된 학습 과정 및 모델 등을 불러올 수 있음
- 현실의 문제를 다룰 때, 정제된 충분한 데이터를 수집하는 일은 어렵다. 이에 적은 데이터로 좋은 모델을 만드는 방법론이 다양하게 개발되었는데, 그 중 하나가 바로 Transfer Learning 이다.
- Transfer Learning은 다른 데이터셋 으로 만든 모델을 현재 데이터에 적용하는 것
- 일반적으로 대용량 데이터셋으로 만들어진 모델의 성능이 좋음
- 현재의 딥러닝에서 가장 일반적인 학습 기법
- backbone architecture가 잘 학습된 모델에서 일부분만 변경하여 학습을 진행
- pretrained Model을 활용시 모델의 일부 parameter을 frozen 시키거나, 단계적으로 unfrozen 시키며 모델을 학습시켜 나감
- 일반적인 딥러닝 모델의 학습 시간은 매우 길며, 이를 기록하는 것은 매우 중요하다.
- 딥러닝의 학습 과정을 기록하는 대표적인 도구가 바로 Tensorboard와 weight & bias(wandb) 이다.
- Tensorboard
- TesorFlow의 프로젝트로 만들어진 시각화 도구
- 학습 그래프, metric, 학습 결과의 시각화 지원
- PyTorch도 연결하여 사용가능 DL 시각화의 핵심 도구
- scalar : metric 등 상수 값의 연속(epoch)을 표시
- graph : 모델의 computational graph 표시
- histogram : weight 등 값의 분포를 표현
- image : 예측 값과 실제 값을 비교 표시
- mesh : 3d 형태의 데이터를 표현하는 도구
- weight & bias
- ML Ops의 대표적인 툴로 저변 확대 중
- 머신러닝 실험을 원할히 지원하기 위한 상용도구
- 협업, code versioning, 실험 결과 기록 등 제공
Example
- 다음 코드를 통해서 Transfer Learning을 통한 모델 학습, 학습 과정을 TensorBoard에 시각화 하는 실습을 진행할 수 있다.
- 연습코드