경량화&최적화
[경량화/최적화] Structured Pruning
공부하는바보
2024. 2. 9. 12:54
1. Structured Pruning이란?
Structured pruning은 신경망에서 전체 뉴런, 채널, 필터 또는 레이어와 같은 구조적 단위를 제거함으로써 모델을 압축하는 기법. 이 접근 방식은 모델의 구조를 변경하지만, 결과적으로 더 적은 수의 파라미터를 가지며, 종종 하드웨어에서 더 효율적으로 실행될 수 있는 모델을 생성.
2. Structured Pruning의 특징
- 단위: Structured pruning은 그룹(예: 필터, 채널) 단위로 가중치를 제거. 이는 모델의 특정 부분을 전체적으로 제거하는 것을 의미.
- 어떤 기준으로 pruning을 할 것인가: 가중치의 크기(L1 노름, L2 노름), 배치 정규화(Batch Normalization)의 스케일링 계수, 에너지 기반 기준 등 다양한 기준을 사용하여 중요하지 않은 단위를 식별하고 제거
- 적용 기준: Pruning을 전체 네트워크에 걸쳐 일괄적으로(global) 적용할 수도 있고, 각 레이어별로(local) 다른 기준을 적용할 수도 있음. 전체 네트워크에 대한 global pruning은 네트워크 전반에 걸쳐 중요도가 낮은 단위를 제거하는 반면, local pruning은 각 레이어의 특성을 고려하여 더 세밀하게 조정할 수 있음.
- 어떤 시점에 pruning을 할 것인가: Structured pruning은 모델이 이미 어느 정도 학습된 후에 적용할 수도 있고(학습된 모델에 적용), 모델의 초기화 단계에서부터 적용할 수도 있음(pruning at initialization).
*L1 노름 (Manhattan Norm or Taxicab Norm) : L1 노름은 벡터 내의 모든 값의 절대값의 합.
∥v∥1=∑|
*L2 노름 (Euclidean Norm) : L2 노름은 벡터 내의 모든 값의 제곱의 합에 대한 제곱근으로 정의.
∥v∥2=∑√vi^2
3. Structured Pruning의 장점과 단점
- 장점:
- 하드웨어 친화적: 구조적으로 단위를 제거하기 때문에, 결과적인 모델이 더 규칙적이며 특정 하드웨어에서 실행 시 최적화하기 쉬움.
- 효율적인 실행: 불필요한 연산을 줄임으로써 실행 시간과 에너지 소비를 감소시킬 수 있음.
- 단점:
- 유연성 감소: 특정 구조적 단위를 제거하기 때문에, unstructured pruning에 비해 모델의 성능 감소가 클 수 있음.
- 최적의 구조를 찾기 어려움: 어떤 단위를 제거할지 결정하는 것이 더 복잡할 수 있으며, 최적의 모델 구조를 찾는 것이 더 어려울 수 있음.
Structured Pruning
=> 위 그림에서는 각 레이어에 대한 중요도 점수를 계산한 후 중요하지 않은 레이어들(주황색)을 제거해서 compact한 network를 만들 수 있음.