모델 최적화와 경량화: Pruning

SeongGyun Hong·2024년 12월 23일

NaverBoostCamp

목록 보기
51/64

1. Pruning 개념

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

  • 제거의 과정

    1. 초기모델
    2. 제거 가능한 파라미터 판별
    3. 파라미터 제거(prune)
    4. fine-tuning
    5. 최종모델
    6. 모델평가
    7. 배포
  • 목표

    • 메모리 사용 줄이기
    • 연산 속도 가속

      특히 이중에서도 메모리, 즉 파라미터 수가 중요하다.
      메모리는 에너지가 많이 소모되기 때문

      Working Example


pruning의 효과

  • 모델 연산량 감소(time)
  • 메모리 사용량 감소(space)
  • 전체적인 에너지 절약
  • 위와 동시에 성능 최대한 유지, 때로는 개선
    • 보통 경량화 정도와 성능은 반비례
      • 예산 등 가용 자원에 맞게 경량화를 진행
      • 비용을 절반으로 줄이면서 성능을 최대한 유지
    • 높은 성능을 유지하면서도 경량화를 최대한 할 수 있는 것이 좋은 기법

90% 이상 pruning 진행시 다소 성능이 떨어지는 양상

출처: https://stacks.stanford.edu/file/druid:qf934gh3708/EFFICIENT%20METHODS%20AND%20HARDWARE%20FOR%20DEEP%20LEARNING-augmented.pdf

2. 분류법(Taxonomy of Pruning)

  • Pruning 방법의 분류
  1. Structure
    가지치기 단위의 granularity에 따른구분
  2. Scoring
    가지치기 할 파라미터를 선정하는 방법에 따른 구분
  3. Scheduling
    Pruning 및 fine-tuning을 언제, 얼마나 할 것인지에 따른 구분
  4. Initialization
    재학습 및 fine-tuning 할 시 파라미터 초기화를 하는 방법에 따른 구분

2.1 Structure

  • Unstructured vs Structured 예시

  • Pruning 단위의 granularity(크기)에 따른 구분

  • Unstructured Pruning

    • 파라미터 하나하나 단위로, 값을 0으로 변경
    • 모델 구조 변경 없음
  • Structured Pruning

    • 레이어 단위나 채널 단위처럼, 특정 구조 단위로 통째로 제거
    • 모델 구조 변경 있음

2.2 Scoring

2.3 Scheduling

  • Pruning 및 fine-tuning을 언제, 얼마나 할 것인지에 따른 구분
  1. One-shot(Single iteration)
    Pruning을 한번만 진행
  2. Recursive(multiple iterations)
    pruning을 한번에 많이 하면 성능 손실이 클 수도 있음
    pruning을 조금씩 여러번에 나눠서 진행

첫번째 방식의 경우 30%를 한번에 제거한 후에 파인튜닝을 한번 진행하고
두번째 방식의 경우 10%씩 제거할 때마다 한번씩 더 파인튜닝해보는 방법론임.
두번째가 더 좋은 성능이 나올 때가 많음

2.4 Initialization을 어떻게 할 것인가?

  • pruning후에 Fine-tuning 시에 파라미터 초기화를 하는 방법에 따른 구분
    • pruning 직후엔 학습된 모델 파라미터 중 일부만 잘려나간 상태이다.
    • 이후 최종 모델까지 추가 학습을 어떤 상태(파라미터 값)로 시작할지에 대한 구분!
  • 크게 두가지 방법론
  1. Weight-preservig(전통적인 방법론)
    pruning 직후 상태 그대로 이어서 fine-tuning 진행

  2. Weight-reinitializing(rewinding)
    랜덤 값으로 재초기화 한 후에 재학습 진행

3. 예시

  • Re) High-level Illustration of Pruning
  • 예시 방법론: Iterative Magnitude Pruning
    • 가장 기본적인 Pruning 방법
    1. Structured: Unstructured Pruning 기법의 일종
      Weight 하나 하나를 없애는 기법이기에!
    2. Scoring
    • 파라미터 별로 절대값을 중요도로 측정
    • Global pruning (모델 전체에서 중요도 계산 및 pruning)


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

업로드중..

profile
헤매는 만큼 자기 땅이다.

0개의 댓글