송민준의 개발노트

양자화(Quantization) 본문

인공지능/딥러닝

양자화(Quantization)

송민준 2024. 9. 10. 00:08

양자화란?

딥러닝 모델에서 숫자 표현을 고정소수점 또는 정수로 변환하여 메모리 사용량을 줄이고 연산 속도를 높이는 기술이다. 딥러닝 모델은 일반적으로 32비트 부동소수점(float32)을 사용하여 연산하지만, 양자화를 통해 더 작은 데이터 형식(ex.int8)을 사용하면 효율성을 높일 수 있다.

더보기

딥러닝에서 실수를 근사하기 위해 가장 보편적으로 사용되는 자료형은 float32(IEEE 754)인데 이는 32비트 공간을 차지하는 부동소수점 방식으로, 32비트의 공간을 할애하되 소수점의 위치를 자유롭게 조절할 수 있도록 한 자료형이다. 부동소수점 방식은 필요에 따라 수의 크기와 정밀도 사이에서 trade-off가 가능하기 때문에 미세한 정보 손실도 최소화하여야 하는 상황에서 특히 강력하다.

 

그러나 많은 횟수의 연산이 필요하다는 치명적 단점이 있다. 또한 32비트 공간을 차지하므로 네트워크가 거대해졌을 때 RAM의 용량이 남아나질 않는 문제가 있다.  이는 많은 연산 횟수보다 더 심각한 문제이다.

 

16비트로 공간을 줄인다면 크기와 정확도 중 적어도 하나는 희생해야 하고, 이는 모델의 추론 정확도 하락으로 이어질 수 있다. 그래도 RAM 자원을 절약하고 연산 속도도 빨라진다. 그래서 초기에는 float16으로 양자화를 많이 했었다. (많은 모델들은 충분히 부드러운 함수여서 오차가 크지 않음)

 

참고 사이트

https://m.blog.naver.com/sangwon38383/223185837433

 

* 에지 디바이스에서는 메모리 또는 계산 능력이 제한된 경우가 많다. 이러한 제약 조건 내에서 모델이 실행될 수 있도록 다양한 최적화가 필요하다.

 

양자화의 종류(수학적 접근)

- 고정소수점 양자화(Fixed-point Quantization): 실수를 일정한 스케일값에 따라 정수로 변환한다. 일정 범위의 실수 값을 정수 값으로 대응시켜 변환한다.

- 비대칭 양자화(Asymmetric Quantization): 정수를 변환할 때 오프셋을 적용하여 범위를 조정하는 방법이다. 실수 값의 최소값을 0으로 변환하는 것이 특징이다.

- 대칭 양자화(Symmetric Quantization): 변환 범위를 대칭적으로 만들어 0을 기준으로 정수를 배분하는 방법이다. 이 방식은 계산이 더 간단하지만 데이터의 분포에 따라 다를 수 있다.

 

양자화의 장점

- 연산 속도 향상: 32bit float보다 8bit or 4bit int를 사용하면 더 빠른 연산이 가능하다.

- 메모리 사용량 감소: 모델이 작을수록 실행 시 더 적은 RAM을 사용하므로 어플리케이션의 다른 부분에서 사용할 수 있는 메모리가 확보되고 성능과 안정성이 향상될 수 있다.

- 전력소비 절감, 더 작은 다운로드 크기

 

양자화의 단점

- 정확도 손실: 더 낮은 정밀도로 변환하면서 일부 정보 손실이 발생할 수 있어서 모델의 성능이 다소 떨어질 수 있다. 특히 복잡한 모델이거나 데이터 분포가 다양한 경우 정확도 저하가 발생할 수 있다.

- 복잡한 구현: 일부 네트워크는 단순한 양자화만으로는 충분한 서능을 유지하지 못하기 때문에, 양자화 인식 학습(QAT)와 같은 추가적인 학습 과정이 필요하다.

 

양자화의 종류별 방법

언제 양자화를 적용하고, 어떻게 성능 저하를 최소화할 것인가에 대한 전략이다.

1. Post-Training Quantization(PTQ)

- 훈련 후, 가중치와 활성화 함수의 비트 수를 줄이는 기법이다.

- 가중치와 활성화 함수의 분포를 분석하여 고정된 양자화 스케일과 오프셋을 결정하고 모델을 양자화한다.

- 추론(inference) 시 성능 저하가 발생할 수 있다.

 

2. Quantization Aware Training(QAT)

- 훈련 중에 양자화를 고려하여 모델을 조정하는 기법이다.

- 가중치 양자화에 대한 학습을 포함하여 원본 모델을 보다 양자화에 강직하게(robust) 만듦

- 일반적으로 추론 시 성능 저하가 적다.

 

3. Dynamic Quantization(DQ)

- 미리 학습된 모델의 가중치와 활성화 함수의 비트 수를 줄이는 기법이다.

- 런타임 시 양자화되며, 가중치와 활성화 함수의 분포에 따라 크기가 다양하게 조절된다.

- 추론 시 성능 저하가 덜 발생하며, 변환 비용이 낮다.

 

TensorFLow Lite 예시

https://www.tensorflow.org/lite/performance/model_optimization?hl=ko

 

 

 

 

참고 사이트

https://www.tensorflow.org/lite/performance/model_optimization?hl=ko

 

모델 최적화  |  TensorFlow

모델 최적화 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 에지 기기에서는 메모리 또는 계산 능력이 제한된 경우가 많습니다. 이러한 제약 조건 내에서도

www.tensorflow.org

https://velog.io/@sohtks/Deep-Learning-%EC%96%91%EC%9E%90%ED%99%94-Quantization-1.-%EC%A0%95%EC%9D%98-%EC%82%AC%EC%9A%A9-%EA%B2%BD%EC%9A%B0-%EB%B0%8F-%EC%A2%85%EB%A5%98

 

[Deep Learning] 양자화 Quantization - 1. 정의, 사용 경우 및 종류

양자화(Quantization) 양자화를 사용하는 경우 양자화 사용 시 발생할 수 있는 문제점 양자화의 종류 딥다이브 시작 직전까지, 졸업필수 과목인 안드로이드 앱 개발 강의를 수강하고 있었다. 딥러닝

velog.io