머신러닝과 딥러닝이 거의 모든 분야에서 사용이 되고 있다.
1. 경량화의 목적
- On device AI
-
smart phone, watch, other IoT device는 4가지 제한 사항이 있다..
- 배터리 파워
- RAM 메모리
- 저장 공간
- 컴퓨팅 파워
-
AI on cloud
-
앞서 말한 제약이 줄어들지만 latency와 throughput의 제약이 존재..
latency: 한 요청에 대한 처리 시간, throughput : 단위 시간 당 처리량
같은 돈으로 적은 latency.. 안할 이유가 없다..!
-
Computation as a key component of AI progress
- 모델의 연산량은 점점 가파르게 증가하고 있다..!
경량화는 모델의 연구와 별개로 산업에 적용되기 위해서 거쳐야하는 과정
경량화, 최적화의 대표적인 종류
- 네트워크 구조 관점
- Efficient Architecture Design (+AutoML; Neural Architecture Search(NAS))
- Vgg, mobilenet.. 그런 것들..! 작은 모델을 만드는 것..! 요즘 trend는 AutoML 최적화를 통해 찾아보는 느낌..
- Network Pruning
- 학습된 네트워크에서 중요도가 낮은 파라미터 제거..해서 사이즈를 줄이자..!
- Knowledge Distillation
- Teacher Network가 있다라고 했을 떄 작은 Student Network에 전달하자..
- Matrix/ Tensor Decomposition
- Convolution weight Tensor를 더 작은 곱으로.. 줄이기..
- Hardware 관점
- Network Quantization
- 학습된 네트워크.. float32 → 더 작은 data type으로 mapping
- Network Compiling
- inference를 더 효과적으로 할 수 있도록 네트워크 자체를 컴파일..?
1. Efficient Architecture Design
Software 1.0 : 사람이 짜는 모듈
Software 2.0 : 알고리즘이 찾는 모듈
Andrej Karpathy 님이 한 말이 있다
Gradient descent can write code better than you. I'm sorry
경사하강법이 우리보다 코드를 더 잘 짤 것이다. → 알고리즘으로 찾아보자..!