Q1. 딥러닝 관점에서 왜 Network Compression 기술들이 필요한지?
- Memory Limitation
- 가끔씩 성능을 높이기 위해 굉장히 큰 딥러닝 모델을 사용하는 경우가 있습니다.
- 이런 경우 멀티GPU 또는 분산시스템 기반의 학습기법을 사용해야합니다.
- 하지만, GPU 가격이 싼 것도 아니고, 분산 시스템을 구축하는 것도 쉬운게 아니기 때문에 큰 딥러닝 모델을 학습시키거나 사용하는건 (실용적인 관점에서) 문제가 됩니다.
- Worse Performance
- 딥러닝 모델이 크다는 것은 굉장히 많은 모수(parameter)들이 존재한다는 것입니다.
- 딥러닝 이론에서 보면 알 수 있듯이 parameter(weight)가 지나치게 많다면, curse of dimension에 빠질 수 있습니다.
- 그러므로, 충분한 학습 데이터가 없다면 마냥 큰 모델을 이용하는 것은 좋지 않습니다.
- Training/Inference Speed
- 연구를 하다보면 새로운 모델링을 하는 것도 중요하지만 hyper parameter를 최적으로 setting 해주는 것도 필요합니다.
- 오히려, 산업에서는 빠르게 모델을 적용해야 하기 때문에 hyper-parameter를 튜닝해서 기존 모델을 최적화 시키는 작업을 진행하는 경우가 더 많죠.
- 하지만, 딥러닝 모델이 크다면 다양한 조합의 hyper-parameter들을 테스트 해보기 힘들어지는 경우가 발생합니다.
Q2. Network Compression에 쓰이는 기술들에는 무엇이 있는지? (해당 내용들은 관련 카테고리에서 자세히 설명하도록 하겠습니다)
- Pruning
- Weight Factorization
- Knowledge Distillation
- Weight sharing
- Quantization
(↓↓↓위의 내용들은 아래 블로그를 기반으로 작성했습니다↓↓↓)
'Network Compression for AI' 카테고리의 다른 글
2. Edge Computing이란? (0) | 2021.06.04 |
---|---|
1. AIoT란? (Feat. IoT 개발 프로세스) (0) | 2021.06.04 |
이 글을 쓰게 된이유 (0) | 2021.06.04 |