DNN(Deep Neural Network)은 일반적으로 수백만~수억 개의 가중치를 가지며, 연산량이 많아 고성능 하드웨어(GPU, TPU)와 많은 전력이 필요하다. 하지만 모든 CPU, 모바일 디바이스, 임베디드 시스템에서 고성능 하드웨어를 사용할 수 있는 것은 아니다.
이를 해결하기 위해 Training 단계에서는 높은 정확성을 유지하기 위한 Full-Precision(보통 float32)로 학습을 진행하고, Inference 단계에서는 모델을 경량화하여 연산 속도를 높이고, 메모리 사용을 줄이는 Model Compression 기술이 활용된다.
Model Compression에는 학습된 모델을 압축하는 방법(Quantization, Knowledge Distillation)이 있는데 이에 대해 알아보자.
Floating Operator와 Integer Operator의 파워 소모 차이를 위 그래프를 통해 비교할 수 있는데, Adder의 경우 8배 가량 전력소모 차이가 나는 것을 볼 수 있다.
또한, 메모리 사용량과 성능(Performance)에서도 확연한 차이가 나타난다. AI 가속기의 가장 큰 병목(Bottleneck)은 메모리 대역폭과 접근 속도로, 연산 자체보다 데이터를 불러오고 저장하는 과정에서 많은 시간이 소요된다. 따라서 실생활에서 DNN을 활용하기 위해서는 Model Compression을 통해 메모리 사용을 최적화하고, 연산 속도를 높이는 것이 필수적이다.
학습된 모델을 압축하는 방법(Quantization, Knowledge Distillation)
1) Quantization
Quantization(양자화)이란 모델의 파라미터를 lower bit로 표현함으로서 계산과 메모리 Access 속도를 높이는 경량화 기법을 뜻한다. 보통 32비트 부동소수점(FP32) 연산을 8비트(INT8) 혹은 4비트(INT4) 정수로 변환하는 방식 사용하게 된다.
아래 그래프는 AlexNet, VGGNet과 같은 대중적인 모델들의 특정 layer 상의 가중치들을 Quantization하여 전/후 분포를 시각화한 것이다. Quantization 과정을 통해 메모리 사용량을 절감시킬 수 있지만 그만큼 데이터의 정확도는 낮아지게 되는 Trad-off 관계를 갖게 된다. 따라서 엔지니어는 Model의 정확성을 해치지 않는 선에서, Bit 수를 줄일 수 있는 최적의 Quantization을 찾기 위해 노력해야만 한다.
2) Knowledge Distillation (Student - Teacher)
Knowledge Distillation은 미리 학습된 Teacher 네트워크의 출력을 작은 모델인 Student 네트워크가 모방하여 학습함으로써, 상대적으로 적은 파라미터를 가지고도 성능을 높이는 방법이다.
그 원리는 간단하다. 먼저 크고 복잡한 Teacher 네트워크를 정답에 대해 충분히 학습시킨 후, 해당 모델의 지식을 작은 Student 네트워크에 전달하는 방식이다. 이를 통해 Student 네트워크는 단순히 정답 레이블만 학습하는 것이 아니라, Teacher 네트워크의 출력 분포까지 학습하여 일반화 성능을 향상시킬 수 있다.
'이론 공부 > AI HARDWARE' 카테고리의 다른 글
Output Layer에서는 Sigmoid, Softmax 함수 중 어떤 걸 사용해야 하는가? (0) | 2025.02.24 |
---|---|
Model Compression - Winograd Convolution (0) | 2025.02.07 |
AI에서 HBM이 주목받고 있는 이유 (0) | 2025.02.06 |
CPU, GPU, TPU, AI 가속기 (FPGA, ASIC(NPU))에 관하여 (0) | 2025.02.06 |
CNN의 발전 과정, 대표적인 모델들에 대해 알아보자 (MNIST, LeNet, AlexNet, VGGNet, GoogLeNet, ResNet, DenseNet, ConvNeXt) (1) | 2025.02.06 |