Boostcamp AI Tech

[주말 실험 일지 - 일] P Stage - 모델 최적화(경량화)

ju_young 2021. 12. 6. 19:33
728x90
  1. 첫 번째 레이어에서만 hard swish를 적용하고 다시 학습 -> 0.74 후반까지 f1 score가 올라감 -> inference 했을때 이상하게 57초, 1분 1초가 걸림 -> torchscript로 모델을 불러오니 28초가 걸림 -> 성능이 만족스럽지 못하여 dropout(p=0.7)로 설정하여 학습 후반에 overfitting을 방지할 수 있을 것이라는 생각을 가지고 다시 학습 -> 별 차이가 없는 것 같아 중지하고 optimizer는 adam, 마지막 레이어 이전에 dropout(0.5)를 추가하고 다시 학습 -> vla f1 score 0.75~0.76 정도 나옴 -> Average CUDA time 0.022 정도 나옴 -> 0.01 중반까지는 줄여야할 것 같음
  2. MnasNet 코드를 보니 input_size가 32의 배수여야하는 부분을 발견(assert input_size % 3 == 0) -> 168에서 160으로 변경하여 학습 -> val f1 score 0.75, Average CUDA time 0.022에서 더 이상 성능 향상을 기대할 수 없다고 판단
  3. 파라미터가 더 적은 MobileNetV2를 학습 -> tensor decomposition 적용하기 힘들어서 제외 -> width mult 1.0으로 학습시 Average CUDA time 0.022~0.023으로 이전 모델과 별 차이 없음 -> width mult 0.5로 설정하여 학습 -> 이미지도 160으로 줄였을때 Average CUDA time 0.0220까지 내려가고 inference 51초 걸림 -> 50 epoch 학습한 결과 val f1 score 0.74
  4. 학습 후반에 overfitting되는 경향이 있는 것 같아 random aug 대신 기본 aug에서 cutout을 추가하여 적용 후 학습 -> 50epoch 결과 val f1 score 0.73 ~ 0.74 정도 나오지만 100epoch은 0.711밖에 안나옴
  5. clip_grad_norms을 적용하여 gradient가 너무 뛰지않게 해주면 좀 더 안정적인 학습을 할 수 있겠다고 생각 -> max gradient를 5로 설정 -> 50epoch 결과 val f1 score 0.736..... 별 차이 없음....
  6. 마지막 feature map에서 음
  7. dd수값은 0으로 대체하는 코드를 추가하고 학습 -> 50epoch 결과 val f1 score 0.74로 별 차이없음 -> feature map에서 음수는 -10으로 대체하는 것으로 변경하고 학습 -> 마찬가지로 별 차이 없음
728x90