[Paper Review] EfficientNetV2 : Smaller Models and Faster Training
카테고리: Paper
태그: Classification ML
Paper:
- EfficientNetV2 : Smaller Models and Faster Training
🚀 Intro
그림은 2021년 등장한 GPT-3의 모델 크기를 나타낸 그래프이다. 잠깐 검색해봤더니 학습 데이터만 45테라바이트이고, 학습에 필요한 비용이 무려 1000~2000만 달러라고 한다. 이처럼 거대한 모델이 등장하면 몇 가지 현실적인 문제가 발생한다. 대표적인 것이 바로 training cost 문제이다. 딥러닝 모델 학습에 필수적인 GPU의 가격이 비싸다는 것은 너무 유명한 이야기이고, 이게 또 전기 먹는 하마란다. 이러한 이유로 최근 training efficiency를 높이기 위한 연구가 많이 진행 중이다.
물론 EfficientNetV2는 버전1에 비해 정확도가 높다. 하지만 본 논문의 핵심 내용은 EfficientNet의 training efficiency를 개선한 것이다. 그래프를 보며 우리가 주목해야 할 지점은 단순히 높은 accuracy가 아닌 훨씬 더 빠른 시간 내에 높은 accuracy를 달성한다는 것이다.
EfficientNetV2는 training efficiency를 높이기 위해 두 가지 접근을 했다.
- EfficientNet Model Archtecture 개선
- Progressive Learning 제안
🚀 EfficientNet Model Architecture 개선
NAS를 통해 EfficientNet을 탐색할 때는 FLOPs 기준 optimize를 진행했다. 그 결과 MBConv block으로 이루어진 모델이 만들어졌는데, MBConv의 DWConv(depthwise conv)에서 training bottleneck이 발생하다는 사실을 알았다. 이는 modern accelerators를 사용하지 못하는 하드웨어단의 이슈이다.
간단히 이야기하자면 CPU가 내리는 명령은 Compute Instruction과 Memory Instruction으로 이루어져 있다. 이 중 Compute Instruction은 덧셈, 곱셈, AND, OR 등 간단한 연산을 담당하며 아주 빠른 시간 내에 처리할 수 있다. 반면 Memory Intruction은 태생이 무거울 수밖에 없다. 내가 찾는 데이터가 있는지 캐시를 뒤져보고, 재수가 없으면 저 먼 곳에 있는 메모리까지 뒤져봐야 한다. 따라서 이 Memory Instruction을 효율적으로 사용하는 것이 성능을 결정하는 핵심적인 요소이다.
Depthwise Convolution의 경우 FLOPs를 기준으로 보면 매우 효율적인 연산이다. 하지만 고작 3*3 conv 연산을 하자고 채널별로 쪼개고 접근하는 것이 문제이다. 배보다 배꼽이 더 큰 상황인 것이다. 따라서 EfficientNetV2에서는 DWConv를 빼고 대신 simple Conv를 사용했다. 즉, FLOPs를 손해 보더라도 training speed를 올려주자는 것이다.
EfficientNet | EfficientNetV2 |
---|---|
🚀 Progressive Learning 제안
저자들이 제시하는 학습 방법은 기존의 curriculum learning에서 영감을 얻었다고 한다. Curriculum learning은 쉬운 이미지에서 어려운 이미지로 단계적으로 학습하는 학습 방법을 의미한다. 이때 저자들이 발견한 특이한 문제점과 원인 분석은 다음과 같다.
- 발견한 문제점) 훈련이 잘 되다가 image size가 다른 데이터 들어가면 accuracy drop 발생
- 원인 분석) image size에 따라 regulization 강도가 달라져야 하지 않을까?
생각해보면 맞는 이야기 같다. Image size가 커지면 당연히 overffiting 위험도 커질테니 말이다. 실제로 이를 실험해보니 size별 optimal 강도가 다르다는 것을 발견했다.
- small size에서는 weak regulization이 best accuracy
- large size에서는 strong regulization이 best accuracy
- Progressive learning = image size에 따라 regulization 강도를 바꿔가면서 training
Progressive learning을 사용한 결과 학습 속도가 엄청나게 빨라진다는 것을 알 수 있다. 이는 EfficientNetV2 모델에 국한되지 않고 일반적인 모델에서도 효과를 나타내며, 큰 이미지를 사용할수록 효과는 극대화된다. Accuracy도 조금 증가하는 것은 덤!
🚀 Conculusion
언제나 등장하는 모델 자랑인데 특이하게도 vsion transformers 모델들과 비교했다. 아마 transformer 기반 모델들이 커서 그런 것 같다. 개인적인 소감으로는 모델을 바라보는 새로운 관점을 얻어서 매우 유익한 논문이었다. Parameter의 갯수, FLOPs에 연연하지 않고 training efficiency를 높인다는 전략도 신박했고 학습 방법이 이렇게 중요한지도 잘 몰랐었다. 내용도 어렵지 않아 술술 읽히고 내용도 유익한, 누이 좋고 매부 좋은 논문이다.
댓글 남기기