AI_Tech부스트캠프 week16...[2] Pruning(1)

Leejaegun·2024년 12월 26일
0

AI_tech_CV트랙 여정

목록 보기
61/74

1. Concept of Pruning

1.1 What is Pruning?

Pruning(가지치기)란, 신경망 모델에서, 노드(뉴런)나 연결(시냅스)을 제거하여 모델의 크기와 계산 비용을 줄이는 기법

High-level illustration of Pruning

Objective

(1) 메모리 사용량 줄이고 (2) 연산 속도를 가속하기 위함.

1.2 Effect of Pruning

  • 모델연산량 감소(time)
  • 메모리 사용량 감소(space)

위 이미지를 보면 빨간색의 경우, 90%를 가지치기 했음에도 정확도 손실은 거의 없음을 알 수 있다.

1.3 Lottery Ticket Hypothesis

신경망 모델에서 일부분을 잘 가져오면, 원래 모델과 같은 정도의 학습으로 동일한 효과를 얻을 수 있다

그러니까 운이 좋게 가지치기를 하면, 성능을 유지하면서 파라미터는 줄인 모델을 만들 수 있다.
논문: https://arxiv.org/abs/1803.03635

2. Taxonomy of Pruning

2.1 Structure

Pruning 단위의 granularity에 따른 구분

2.2 Scoring

Pruning 할 파라미터를 선정하는 방법에 따른 구분
-> score 점수에 따라서 중요한/덜 중요한 파라미터/레이어를 선정해야함. 따라서 중요도를 어떻게 계산하는가가 중요함.

  1. 파라미터별로 절댓값을 중요도로 사용

  2. 레이어별로 LpnormL^p-norm을 중요도로 사용

또한 제거할 레이어를 선정하였으면 그것을 몇% 반영 할 것인지,

로컬/글로벌하게 반영할 것인지 정하기도 해야함.

2.3 Scheduling

Pruning 및 fine-tuning을 언제, 얼마나 할 것인지에 따른 구분

One-shot (Single iteration)

  • Pruning을 한번만 진행

Recursive (Multiple iterations)

  • Pruning은 한번에 많이 하면 성능 손실이 클 수도 있음
  • Pruning을 조금씩 여러번에 나눠서 진행

2.4 Initialization

재학습 및 fine-tuning 할 시 파라미터 초기화를 하는 방법에 따른 구분
pruning 직후엔 학습된 모델 파라미터 중 일부만 잘려나간 상태
=> 이후 최종 모델까지 추가 학습을 어떤 상태(파라미터 값)로 시작할지에 대한 구분

Weight-preserving (classic)

pruning 직후 상태로 그대로 fine-tuning 진행

Weight-reinitializing (rewinding)

랜덤값으로 재초기화 후 재학습 진행

3. Pruning Example

3.1 Iterative Magnitude Pruning

Iterative Magnitude Pruning은 중요도가 낮은 파라미터부터 반복적으로 조금씩 제거 하고 fine-tuning 하는 기법으로, 모든 파라미터를 삭제하거나, 추가하거나, 모든 파라미터를 동결하거나, 성능과 무관하게 줄이는것이 목표는 아니다

가장 기본적인 pruning 방법
1.Structured: Unstructured pruning 기법의 일종
2.Scoring:

  • 파라미터별로 절댓값을 중요도로 측정
  • Global pruning (모델 전체에서 중요도 계산 및 pruning)

3.Scheduling: Recursive 방식 활용
4.Initialization: Rewind 방식 활용

profile
Lee_AA

0개의 댓글

관련 채용 정보