[딥러닝] 이상하게 길게 보면 학습이 되는 것 같긴 한데 영 상태가 이상할 때 해결방법
이런 식으로 수십 epoch 이후에는 성능 향상이 되기는 하는데 단기적으로는 심지어 loss가 늘어나기도 하는 경우가 있다. (가장 처음 loss의 1.5배 이상으로 10epoch 이상 유지)
의심해볼 만한 걸로는
- criterion 제대로 나오는지 점검(왠만하면 멀쩡할 것이다)
- learning rate, optimizer가 잘못되었나 점검(lr 너무 높으면 수렴이 힘듬)
- 2번과 더불어 scheduler도 점검(lr이 이상하게 변하면 안됨)
이런 걸 다 해봤지만 별반 답이 나오지 않았고
4. training data sampling이 shuffle되서 나오는지 확인
training data sampling을 shuffle하지 않고 했던 게 문제였다.
DDP에서 DDP 안 쓰는 걸로 옮기다 dataloader에서 실수로 shuffle=True를 빼먹은 건 맞는데, 그게 이 정도로 큰 영향을 줄지는 전혀 몰랐다. 지금 위 사진만 해도 수십 epoch(50 epoch 이상) 후에야 성능이 그나마 향상이 되는 게 보이는데, 지금 저거랑 똑같은 lr 설정으로는 shuffle을 제대로 했으면 단 1 epoch 후에도 GAP가 0.97까지 올라가는 게 정상이다. pretrained model을 가져와 그렇게 되도록 lr을 조정했기 때문이다.
혹시 삽질하고 있는 누군가에게 도움이 되기를 빈다.