network pruning이란
1. introduction
이미 학습된 network에서 중요도가 낮은 parameter를 제거하여 model의 size를 줄이고자 하는 작업
parameter의 중요도를 어떻게 정의해야 좋은지 생각해보는 것이 주요 연구 과제
weight의 L2 norm이 크면 기여도가 높은 parameter? gradient가 크면 중요도가 높은 weight?
혹은 둘을 합쳐서 평가할 수도 있고 또 다른 metric을 생각해볼 수도 있다
학습된 parameter의 일부가 제거된 모습
2. structured pruning
parameter를 그룹 단위로 pruning하는 기법들을 모두 일컫는 말
그룹이라는 것은 channel단위일수도 있고 filter 단위나 layer 단위일수도 있음
필요없는 (0에 가까운?) parameter들이 제거되면서 network가 dense해지는 경향이 있음
그래서 dense computation에 최적화된 소프트웨어나 하드웨어에 적합한 기법이라고 함
channel scaling factor는 parameter의 중요도로 계산한 지표
주황색 layer는 중요도가 낮아 이들을 제거
중요 파란색 layer들만 모여 network가 compact해지나봄?
3. unstructured pruning
structured pruning이 filter같은 그룹단위로 중요하지 않은 parameter를 제거했다면
unstructured pruning은 filter같은 그룹 내부에서 개별 parameter들을 모두 확인하면서 중요하지 않은 parameter를 제거함
6개의 filter 내부에 존재하는 3*3개의 개별 parameter들을 확인하여 3~4개의 parameter를 제외하고 제거하는 unstructured pruning
개별 값들을 제거하니 filter들이 sparse해지는 경향이 있음
structured pruning과는 다르게 sparse computation에 최적화된 소프트웨어나 하드웨어에 적합함
위 그림을 보면 unstructured pruning을 수행한 network를 tile화하여 sparse matrix로 표현
이 matrix를 compress하여 실제로는 A부분의 4가지를 device에 올려놓고 저장해서 가지고 있는다고함
실제 inference과정에서는 B의 sparse matrix로 복원해서 계산함
A 그 자체로 연산에 활용할 수 있다면 효율적이지만 쉽지 않아 연구중
'딥러닝 > light weight modeling' 카테고리의 다른 글
AutoML의 개념 알아보기 (0) | 2024.08.23 |
---|---|
tensor decomposition - Tucker decomposition, CP decomposition (0) | 2024.08.19 |
MobileNet과 network decoupling (0) | 2024.08.18 |
tensor decomposition 간단한 설명 (0) | 2024.08.17 |
network compiling 간단하게 (0) | 2024.08.16 |