Machine Learning/Edge Device

경량화 기법 원리 ( 가지치기, 지식증류, 양자화 )

light_meal 2023. 3. 18. 11:30
728x90

Prunning : 가지치기

머신러닝은 심층 신경망으로 인해 많은 발전을 이루었다. 발전 할 수록 모델 네트워크는 엄청난 양의 계산과 메모리가 필요하게 되었는데 이러한 요구 사항은 인프라 비용뿐만 아니라 엣지 디바이스와 같은 한정된 리소스를 가진 환경에 배포하는 것을 어렵게 만들었다.

이러한 리소스 요구 사항을 줄이기 위한 널리 사용되는 접근 방식 중 하나가 신경망 가지치기다. 가지치기는 Threshold 보다 크기가 낮은 가중치들을 제거하여 모델에 포함된 매개변수 수를 줄임으로써 모델을 압축하고 가중치를 재학습 하는 과정을 반복하여 간소화된 모델을 생성한다. 간소화된 모델은 매개변수가 줄어 사용되는 메모리가 줄어들게 되고 네트워크의 크기가 줄어들어 지연 시간(ms)이 줄어드는 특징이 있다.

[그림1-1] 좌측은 가지치기 기법 사용하기 전을 의미하는 그림이며 추론(inference) 작업 시 학습했던 모든 매개변수가 저장되어 있어 계산량이 많은 상태다. [그림1-1] 우측은 가지치기 기법 사용 후를 의미하는 그림이며 7번 11번 매개변수가 제거됨으로써 시냅스가 줄어들게 되어 계산량이 대폭 감소된 것을 가시적으로 확인할 수 있다.

 

Knowledge Distillation : 지식증류

대규모 모델이 보편화 되고 있는 현 시점에 이러한 부피가 큰 모델을 엣지 디바이스와 같은 한정된 리소스를 가진 환경에 배포하는 것은 쉬운일이 아니다. 대부분 많은 수의 클래스를 구별하는 방법을 학습했기 때문에 사용자가 필요로 하는 클래스보다 훨씬 많은 클래스를 보유하고 있으며 성능은 좋지만 연산량이 많아 시간이 오래 걸릴 수 있다.

앞서 이야기한 모델들의 문제를 해결하기 위한 것이 지식증류 기법이며 마치 현실의 교사가 학생에게 교육을 통해 지식을 전수하는 것과 같은 형상을 띠고 있다고 할 수 있다. 이를 위해 복잡한 모델을 교사 네트워크로, 소규모 모델을 학생 네트워크라 특정할 수 있다. 이러한 구조에서 대규모 모델을 모방 학습하여 적은 파라미터를 가지고 있어도 정확도는 비슷하게 유지되고 연산량은 줄여 성능을 높이는 기법이다.

[그림2-1]의 Teacher Model은 복잡하고 거대한 모습을 보이고 있다. 기존에 가지고 있던 거대 모델의 지식을 증류하고 데이터를 이용하여 증류된 지식을 Student Model에 이전(학습) 하여 간소화된 모델을 생성한다.

https://neptune.ai/blog/knowledge-distillation

 

Knowledge Distillation: Principles, Algorithms, Applications - neptune.ai

Large-scale machine learning and deep learning models are increasingly common. For instance, GPT-3 is trained on 570 GB of text and consists of 175 billion parameters. However, whilst training large models helps improve state-of-the-art performance, deploy

neptune.ai

 

Quantization : 양자화

모바일 장치의 인기가 높아지고 딥러닝 기반 모델의 엄청난 계산 비용이 발생하고 있는 상태이다. 우리는 이 문제를 해결하기 위해 효율적이고 정확한 추론 체계가 필요하다. 컴퓨터에서 일반적으로 사용하는 부동 소수점(float32)이 아닌 정수(int8)로의 타입 포맷 변환을 통해 신경망 훈련의 계산 비용을 줄이는 기법이다.

양자화는 모델 압축 및 지연 시간 감소를 통해 성능 개선을 제공한다. 부동소수점 32bit 에서 정수 8bit로 변환함으로써 모델 파일의 크기가 약 4배가 줄어들고 각각의 모델마다 차이가 있겠으나 지연시간이 개선되고 반대로 일정량 정확도가 감소된다. 또한 앞에서 이야기한 개선된 점으로 인해 전력 소비가 줄어들어 효율이 상승한다. 이러한 특징으로 한정된 리소스와 환경을 가진 엣지 디바이스에 배포하는데 용이하다.

[그림3-1]의 좌측 그림의 부동소수점으로 이루어진 숫자들이 Quantization(양자화) 작업을 거친 후 우측 그림과 같이 정수형으로 포맷 변환이 이루어진 것을 확인할 수 있다.

 

https://developer.nvidia.com/blog/achieving-fp32-accuracy-for-int8-inference-using-quantization-aware-training-with-tensorrt/

 

Achieving FP32 Accuracy for INT8 Inference Using Quantization Aware Training with NVIDIA TensorRT | NVIDIA Technical Blog

○ TensorRT is an SDK for high-performance deep learning inference and with TensorRT 8.0, you can import models trained using Quantization Aware Training (QAT) to run inference in INT8 precision…

developer.nvidia.com

 

728x90