끄적/모델 최적화 및 경량화

Pruning 3 : 적용사례 (CNN, BERT)

uvumbu 2024. 12. 26. 11:34

CNN과 BERT에서 어떻게 pruning하는지 알아보자.

Pruning in CNN

 

CNN

CNN 모델은 CNN과 FC 부분으로 나뉜다.

  • FC : 대부분의 파라미터가 존재(공간)
  • CNN : 연산 속도 좌우(시간)

따라서 공간과 시간 효율을 모두 챙기려면 두 부분 모두 pruning이 필요하다.

 

CNN Filters

CNN은 이미지에 적용할 적절한 Filter 를 학습한다.

이때 Filter란 이미지 단위다. (코, 입, 얼굴 모양, 등)

 

Filter 는 한 장에 행렬 1개라고 보면 된다.

앞단의 레이어의 경우 디테일한 Feature를 찾고, 뒤쪽 레이어는 전체적인 구조를 파악하는 경향이 있다.

 

 

Filter Pruning

중요도가 작은 Filter를 제거하는 것이 CNN의 pruning이다.

Stuctured한 방법이며, 속도를 즉시 향상시킨다.

 

 

요약

  • CNN과 FC로 나눠서 진행한다.
  • Stuctured Pruning (리에어 별 Filter 단위로 pruning)
  • Filter의 Sparsity를 중요도로 사용한다. (L2 - Norm으로 많이 진행함 )
  • 레이어 별로 비율을 다르게 설정한다.

 

 

 

Pruning in BERT

 

BERT는 12개의 transformer encoder layer로 이뤄져있다.

어떻게 pruning하는 것이 좋을까?

 

 

BERT 의 Layer들

언어 모델도 보통

  • 앞쪽 레이어는 작은 형태를 학습한다. (단어 같은)
  • 뒤쪽 레이어는 큰 형태를 학습한다. (문장이나 문맥 같은)

때문에 각 Layer 별로 Pruning을 다르게 하는 것이 유효하다. (Global Pruning은 부적합하다.)

 

First Layer

단어의 모음인 vocabulary다.

짧은 단어일수록 벡터가 더 sparse하다.

-> Local Pruning을 하면, 짧은 단어 위주로 pruning을 하기 때문에 유효하다.

 

요약

  • Unstuctured Pruning
  • Layer 별로 진행하는 Local Pruning

 

 

'끄적 > 모델 최적화 및 경량화' 카테고리의 다른 글

KD 2 : Logit based KD  (0) 2024.12.26
KD 1 : 지식 증류의 개념  (2) 2024.12.26
Pruning 사전 지식  (0) 2024.12.26
Pruning 예시 ( IMP 동작 방식 )  (0) 2024.12.23
Pruning 2 : Taxonomy  (0) 2024.12.23