241225 TIL #572 AI Tech #105 Pruning - 2

김춘복·어제
0

TIL : Today I Learned

목록 보기
574/575

Today I Learned

성탄절 오전에 가볍게 pruning 공부!


Pruning

  • Sparsity
    전체에서 0이 차지하는 비율. density = 1-sparsity

  • Matrix Sparsity
    희소행렬. 행렬의 원소가 대부분 0인 행렬. 일반적으로 2/3이 0일때

Sparse Matrix Representation

희소 행렬을 효율적으로 저장하고 처리하기 위한 데이터 구조

이미지 출처 : geeksforgeeks

  • 행렬에서 0이 아닌 원소의 행, 열, 값을 튜플형태로 저장

  • density 가 1/3일때(sparsity가 2/3일때) 부터 이 방법이 더 효율적

  • 저장에는 효율적이지만 연산에는 효율적이지 않을 수도 있다.


Sensitivity Analysis

신경망의 가중치나 레이어가 pruning에 얼마나 민감한지 분석하여 효율적으로 네트워크를 압축하는 방법

  • 특정 레이어나 가중치의 pruning level을 설정하고 pruning 수행

  • 테스트 데이터셋으로 평가를 실행하여 정확도 변화 측정해 여러 레이어에 다양한 sparsity level에 대해 반복

  • 네트워크의 중요한 부분을 보존하면서 효율적인 압축 가능


Pruning in CNN

  • CNN 모델은 Convolution 레이어와 Fully-Connected 레이어 부분으로 나뉘기때문에 pruning도 나눠서 한다.

  • 파라미터 대부분은 FC에 있지만 연산 속도의 bottleneck은 대부분 Convolution에 생기기 때문에 시간-공간 효율을 챙기려면 양쪽 다 pruning이 필요하다.

  • 일반적으로 Convolution 레이어가 FC 레이어보다 더 민감하고, 앞쪽 레이어가 더 민감하다.
    그래서 보통 뒤쪽 레이어 위주로 pruning을 진행한다.

  • Filter : CNN에는 레이어별로 여러개의 filter가 있는데 앞쪽에는 디테일, 뒤쪽에는 전체 구조를 파악하는 경향이 있다. sparse한 filter가 절반정도는 있기 때문에, sparse한 filter부터 날려버리는 structured pruning을 주로 한다.


Pruning in BERT

  • 언어 모델도 보통 앞쪽 레이어가 단어 같은 작은 형태를, 뒤쪽 레이어가 문장 같은 큰 형태를 모델링한다. 하지만 레이어별 sparsity는 나름 일정하기 때문에 unstructured, local pruning으로 진행한다.

  • 대부분의 파라미터가 0에 가깝긴 하기 때문에 절대값 기준 pruning이 유효하다.

  • 일반적으로는 30%까진 큰 성능차이가 없고, 60% 선도 가능은 하다.

profile
Backend Dev / Data Engineer

0개의 댓글