EfficientNet을 사용할때 성능 및 메모리 사용량 주의

EfficientNet (반전) 벤치마킹

  • 아래는 EfficientNet의 순수 정확도를 기준으로 기존의 방법론들과 비교를 한 결과이다. B0~B3까지 존재를 하는데 조금더 나은 버전인 B4~B7이 없으므로 일단은 성능이 나쁘고 좋다라고 말하기 어렵다.
  • 이미지셋은 평범한 ImageNet v2.
예상했던 정확도 결과이다.

파라미터 수

  • 아래와 같이 EfficientNet은 그래도 효율은 제일 적은 파라미터로 좋은 결과를 내는 편으로 보인다. 이는 논문과 비교적 같은 결과이다.
  • 따라서 당연히 속도도 빠를거라 생각하는데..

실제 속도

  • 파라미터로 보면 당연히 속도가 빨라야 한다.
  • 그런데 반전이 존재하는데, Throughput(이미지당 처리량)으로 비교해보자면, 그렇게 빠르지도 않는다는 결과가 있다..
  • EfficientNet의 논문과는 다르게, 정확도와 실제속도(이미지 처리량)간의 차이가 뚜렷한 우하향으로, 그중 제일 효율적이라고 예상했던 EfficientNet B0 224pixel모델이 제일 효율이 떨어진다.

GPU 메모리 사용량

  • GPU 메모리 사용량은, 게임할때와 다르게 딥러닝 훈련시 크리티컬하다. 속도보다도 아예 Out Of Memory가 나와서 뻗는 경우가 다반사이다. 배치크기에도 직격탄이기 때문에, 메모리 사용량은 적을수록 좋다.
  • 충격적인 결과일수도 있는데, 여러가지 구조상 EfficientNet이 메모리 사용량이 적지 않다. 제일 왼쪽에 위치하는 파란색 선이 그냥 resnet도 아닌 resneXt 계열로, EfficientNet보다 훨씬 메모리를 아껴쓰고 있다.
  • 이는 구현상의 문제인지, 오래된 resnet계열의 최적화 때문인지는 아직 확실치 않다.
  • EfficientNet은 정확하게 효율적으로 빠르고 정확한 잠재력을 찾아낼 수 있다것을 밝혀낸데는 의의가 있다.
  • 그런데, 실제적으로 빠르거나 메모리 효율적이지 않다면 이를 이용하는 실무 입장에서는 아직까지는 약간 시기상조일수 있다.

One thought on “EfficientNet을 사용할때 성능 및 메모리 사용량 주의

답글 남기기