오늘의 인기 글
최근 글
최근 댓글
Today
Total
11-05 05:07
관리 메뉴

우노

[DL] 양자화(Quantization)란? 본문

AI/Deep Learning

[DL] 양자화(Quantization)란?

운호(Noah) 2022. 1. 10. 14:05

들어가기 앞서,

  • 모바일이나 임베디드 환경에서, 딥러닝 모델을 사용한 추론은 어렵습니다.
    • 일반 PC 와 달리, 메모리, 성능, 저장공간 등의 제한이 있기 때문입니다.
  • 따라서, 딥러닝에서는 모델 경량화와 관련된 연구들이 많이 진행되고 있습니다.
    • 즉, “모델을 가볍게 만드는 연구”라고 이해할 수 있습니다.
  • 이러한 경량화 연구는 크게 두 가지로 나눠집니다.
    1. 모델을 구성하는 알고리즘 자체를 효율적인 구조로 설계하는 연구
    2. 기존 모델의 파라미터들을 줄이거나 압축하는 연구
  • 전자의 경우, 대표적인 방법으로 “모델 구조 변경”, “효율적인 합성곱 필터 기술”, “경량 모델 자동 탐색 기술” 이 존재합니다.
    • 모델 구조 변경
      • 모델 구조를 변경함으로써 경량화하는 방법 (ResNet, DenseNet, SqueezeNet, etc)
    • 효율적인 합성곱 필터 기술
      • 채널을 분리시켜, 연산량과 변수의 개수를 줄임으로써 경량화하는 방법 (MobileNet, ShuffleNet, etc)
    • 경량 모델 자동 탐색 기술
      • 자동 탐색 기법을 사용해, 경량화할 수 있는 모델 구조와 합성곱 필터를 설계하는 방법 (NetAdapt, MNAsNet, etc)
  • 후자의 경우, 대표적인 방법으로 “가중치 가지치기”, “양자화”, “이진화” 가 존재합니다.
    • 가중치 가지치기 (Weight Pruning)
      • 결과에 영향을 미치는 파라미터들을 제외한 나머지 파라미터들을 0 으로 설정하는 방법
    • 양자화 (Quantization)
      • 부동소수점으로 표현되는 파라미터들을 특정 비트 수로 줄이는 방법
    • 이진화 (Binarization)
      • 파라미터들을 이진화함으로써, 표현력은 줄어들지만, 정확도의 손실은 최소로하는 경량화 방법
        • 예를 들어, -1 과 1 로만 표현

양자화란?

  • Neural Network 모델의 내부는, 대부분 weight 와 activation output 으로 구성되어 있습니다.

  • 또한, weight 와 activation output 은 모델의 정확도를 높이기 위해, 32bit floating point (FP32) 로 표현되고 있습니다.

    • 전체적인 구조는 아래와 같습니다.

    • 32bit floating point 는 아래와 같이 표현됩니다.

  • 하지만, 리소스가 제한된 환경에서, 모든 weight 와 activation output 을 32bit floating point 로 표현한 모델은, 추론에 사용하기 어렵습니다.

  • 따라서, 양자화는 weight 와 activation output 표현에 사용되는 비트 수를 줄임으로써, 모델의 크기를 줄이는 것을 의미합니다.

  • 물론, 기존 모델보다 성능은 떨어질 수 있지만, 모델의 크기가 줄어들기 때문에, 제한된 리소스 환경에서도 사용할 수 있게 됩니다.

양자화의 주 목적

  • Training Time 을 줄이는게 아닌, Inference Time 을 줄이는 것이 주 목적입니다.

양자화 예제

  • 각 계층의 소수값(Float32)들 중, 최소/최대 값을 구합니다.
  • 해당 소수값(Float32)들을, 선형적으로 가장 가까운 정수값(Int8)에 매핑합니다.
    • 예를 들어, 기존 계층의 소수값 범위가 -3.0 부터 6.0 까지라면,
    • -3.0 은 -127 로, 6.0 은 +127 로 매핑됩니다.
  • 이 방식을 사용한다면, 32bit 로 표현되는 weight 를 적은 bit 로 표현할 수 있으므로, 메모리 감소 효과 를 볼 수 있습니다.

양자화 종류

  • 언제 Quantiation?
    • Quantiation Aware Training
      • FP 모델로 학습하는 과정에서 Quantization 하는 것
    • Post Training Quantiation
      • FP 모델로 학습한 뒤, Quantization 하는 것
  • 어떻게 Quantiation?
    • Dynamic
      • FP 모델로 학습한 뒤, weight 만 Quantiation 하고 있다가,
      • inference 시점에 동적으로 activation 을 Quantiation 하는 것
    • Static
      • FP 모델로 학습한 뒤, weight 와 activation 에 대해 Quantiation 하는 것
  • 무엇을 Quantiation?
    • Weight
    • Activation
  • 얼마나 Quantiation?
    • 16bit
    • 8bit
    • 4bit
    • 2bit
    • 1bit
    • Mixed-precision

추가

  • PTQ 의 경우, 모델이 작을수록 Quantization 에 따른 정확도 감소가 크게 일어날 수 있습니다.
    • 모델이 작을수록, Quantization 에 따라 모델이 예민하게 반응하기 때문입니다.

참고

'AI > Deep Learning' 카테고리의 다른 글

[DL] TVM 이란?  (0) 2022.01.12
[DL] TFLite 와 TensorRT 간단 비교  (2) 2022.01.12
[DL] Tensorflow version 확인  (0) 2021.11.04
[DL] Tensorflow 모델 저장/불러오기  (0) 2021.08.12
[DL] Distributed Training (분산 학습) 이란?  (0) 2021.07.29
Comments