대회나 Task를 진행할 때 주의해야할 사항들!
1. Debugging
디버깅 모드는 실험 환경이 잘 설정되어 있는지 체크하는 과정이다.
대부분의 모델 학습,테스트는 실행하자마자 뚝딱하고 나오는게 아니라 시간이 걸리는 경우가 많다.
따라서 자기 전에 모델을 돌려놓고 잠드는 개발자들이 많다. (잠자는 시간까지 헛투루 쓰지 않는 딥러닝 개발자들 ^.^이랄까 ㅎㅎ)
여하튼 그런식으로 작업을 하는 개발자들이 많은데, 종종 돌리고 일어났을때 에러 메세지와 함께 정상작동이 되지 않아 종료된 경우를 마주하기도 한다. 정말 대략 난감 ㅜㅇㅜ
그래서 해야하는건 Debugging!!!! 5분만 투자해서 잠자는 시간을 벌자
카이스트 김현우 마스터님이 공유해주신 방법이다.
if cfg.debug = True: # 디버깅 모드일땐,
cfg.epoch = 2
train = train.sample(frac=0.05, random_state = cfg.seed). reset_index(drop=True)
샘플링을 해서 dataset의 5프로만 뗴어내고, Epoch 를 1~2정도로 작게 설정해 Loss가 감소하는지 그 추이를 확인하는 방법이다.
만약 제대로 작동하는거 같다면 cfg.debug = False로 해놓고 train 시킨 후 잠들면 된다.
2. 시드 고정
모델의 성능을 비교하는 경우, 실험할 때마다 성능이 달라지는 것을 막고, 비슷한 결과를 재생산 하기 위해서는 시드 고정이 필수다.
시드의 경우 사용이 되는 라이브러리 마다 seed를 각각 고정해야한다.
예시)
import random
import numpy as np
import torch
seed = 1012
np.random.seed(seed)
os.environ['PYTHONHASHSEED'] = str(seed)
random.seed(seed)
torch.manual_seed(seed)
등등...
3. 실험 기록
사용한 network, Augmentation 기법, Hyperparameter 등 결과에 영향을 주는 조건을 바꿔가며 실험을 한다. 그때마다 결과를 헷갈리지 않게 notion이나 엑셀에 보기 쉽게 정리한다.
나같은 경우는 .pth ,.ckpt등의 파일들도
SwinT_epoch100_augv2.pth 와 같이 파일 이름에 최대한 규칙적으로 정보를 많이 담으려고 했다.
'2021 네이버 부스트캠프 - Ai tech' 카테고리의 다른 글
Week 11/12/13 - Semantic Segmentation - UNet++ (0) | 2021.12.16 |
---|---|
Week 11/12/13 - Semantic Segmentation - UNet (0) | 2021.12.16 |
Week 11/12/13 - Semantic Segmentation - PSP2Net (0) | 2021.12.16 |
Week 11/12/13 - Semantic Segmentation - DeepLab v1 (0) | 2021.12.15 |
Week 11/12/13 - Semantic Segmentation - DeconvNet (0) | 2021.12.15 |