network pruning이란

1. introduction

 

이미 학습된 network에서 중요도가 낮은 parameter를 제거하여 model의 size를 줄이고자 하는 작업

 

parameter의 중요도를 어떻게 정의해야 좋은지 생각해보는 것이 주요 연구 과제

 

weight의 L2 norm이 크면 기여도가 높은 parameter? gradient가 크면 중요도가 높은 weight?

 

혹은 둘을 합쳐서 평가할 수도 있고 또 다른 metric을 생각해볼 수도 있다

 

pruning의 예시

 

 

학습된 parameter의 일부가 제거된 모습

 

 

2. structured pruning

 

parameter를 그룹 단위로 pruning하는 기법들을 모두 일컫는 말

 

그룹이라는 것은 channel단위일수도 있고 filter 단위나 layer 단위일수도 있음

 

필요없는 (0에 가까운?) parameter들이 제거되면서 network가 dense해지는 경향이 있음

 

그래서 dense computation에 최적화된 소프트웨어나 하드웨어에 적합한 기법이라고 함

 

structured pruning의 예시

 

 

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의 활용

 

 

위 그림을 보면 unstructured pruning을 수행한 network를 tile화하여 sparse matrix로 표현

 

이 matrix를 compress하여 실제로는 A부분의 4가지를 device에 올려놓고 저장해서 가지고 있는다고함

 

실제 inference과정에서는 B의 sparse matrix로 복원해서 계산함

 

A 그 자체로 연산에 활용할 수 있다면 효율적이지만 쉽지 않아 연구중

TAGS.

Comments