모델 불러오기
model.save()
- 학습의 결과를 저장하기 위한 함수
- 모델 형태와 파라메터를 저장
- 모델 학습 중간 과정의 저장을 통해 최선의 결과모델 선택
- 만들어진 모델을 외부 연구자와 공유 가능
checkpoints
- 학습의 중간 결과를 저장하여 최선의 결과 선택
- earlystopping 기법시 이전 학습의 결과 저장
- loss와 metric 값을 지속적으로 확인 저장
- epoch, loss, metric를 함께 저장
pretrained model Transfer learning
- 다른 데이터셋으로 만든 모델을 현재 데이터에 적용
- 대용량 데이터셋으로 만들어진 모델의 성능을 높임
- 현재 가장 일반적인 기법
PyTorch 기록 monitoring
Tensorboard
- TensorFlow의 프로젝트로 만들어진 시각화 도구
- PyTorch도 연결 가능
구성 요소
- scalar : metric등 상수 값의 연속(epoch) 표시
- graph : 모델의 계산 그래프 표시
- histogram : weight등 값의 분포 표현
- Image : 예측과 실제값의 비교 표시
- mesh : 3d형태의 데이터를 표현
weight & biases
- 머신러닝 실험을 원활히 지원하기 위한 상용도구
- !pip install wandb 를 통해 설치 후 wandb.init 으로 사용
Multi-GPU 학습
Model parrallel
- 다중 GPU에 학습을 분산하는 두가지 방법 (모델 나누기 / 데이터 나누기)
모델 나누기
- 모델 두개를 cuda 0, 1 에 할당하는 등의 방식을 통해 학습 후 두 모델을 합치기
데이터 나누기
- 데이터를 분배한 후 평균을 취하는 방법으로 GPU사용 불균형 문제가 발생하거나 batch 사이즈가 감소하는 등의 문제 발생
Hyperparameter Tuning
모델 스스로 학습하지 않는 learning rate, 모델의 크기, optimizer 등은 사람이 직접 지정해야함
grid vs random으로
grid - 전수조사처럼 모든 하이퍼 파라미터 값을 일일히 증가/감소시키며 찾아냄
random - 랜덤한 지점을 통해 학습 후 성능이 좋아 보이는 부분 발견
요즘은 베이지안 기법을 사용함.
베이지안 기법은 grid + random의 방식으로 임의의 지점에서 학습률이 좋게 나오는 경우 해당 위치에서 grid search를 진행함
Ray
- multi-node multi processing 지원 모듈
- ML/DL의 병렬 처리를 위해 개발된 모듈로 현재의 표준임
- 다양한 모듈로 Hyperparameter Search 지원
Troubleshooting
딥러닝에서 가장 무서운 것은 OOM! (메모리 부족 오류)
GPUUtil 사용하기
GPU의 상태를 보여주는 모듈로 iter마다 메모리가 늘어나는지 확인
torch.cuda.empty_cache() 써보기
- 사용되지 않은 GPU의 cache 정리
- 가용 메모리 확보
- reset 대신
trainning loop에 축적되는 tensor 변수 확인
- tensor로 처리된 변수는 GPU의 메모리를 차지함
- 메모리 잠식을 방지하기 위해 삭제하기
- 1-d tensor의 경우 python 기본 객체로 변환해서 처리 가능
del 명령어 사용하기
- 필요 없어진 변수는 삭제하기
- python은 메모리 배치 특성상 loop이 끝나도 메모리를 차지함
for x in range(10):
i = x
print(i)
>>> 9
해당 케이스처럼 for문 내의 변수 i가 loop이 끝나도 메모리를 차지하기에 이를 삭제
batch 사이즈 실험해보기
- batch 사이즈를 1로 변경해 사용해보기
torch.no_grad() 사용하기
- inference 시점에서는 torch.no_grad() 구문을 사용
'네이버 부스트캠프 학습 정리 > 2주차' 카테고리의 다른 글
[PyTorch] PyTorch의 데이터 (0) | 2023.03.19 |
---|---|
[PyTorch] parameter & buffer (0) | 2023.03.19 |
[PyTorch] nn.Module (0) | 2023.03.17 |
[PyTorch] 파이토치의 기본 (0) | 2023.03.17 |