머신러닝 개발자의 러닝머신

모델 경량화 본문

ML.AI/ML, DL

모델 경량화

oongsong 2023. 4. 23. 22:23
반응형

모델 경량화란?

모델 경량화는 모델의 정확도 손실(accuracy loss)을 기존 모델 대비 최소화하면서 모델의 크기와 연산량을 줄이는 기술이다.

이를 통해 요구되는 메모리와 에너지, 연산량을 줄여 학습, 추론의 효율성을 높인다.

 

모델 경량화의 필요성 

딥러닝 네트워크가 매우 깊은 layer의 구조와 수백MB를 넘는 많은 파라미터를 가지기 때문에 학습 과정뿐만 아니라 추론 시에도 많은 양의 연산이 필요하다. 이는 실시간 처리가 필요한 응용 애플리케이션, 모바일 환경, 온디바이스 등과 같이 사용 가능한 자원에 제한이 있는 경우 필요한 자원이 부족한 경우가 있다. 이러한 경우에 더 적은 연산량으로 추론할 수 있도록 해야 한다.

 

1. Neural Network Pruning (가지치기)

Neural Network Pruning 방법은 네트워크 파라미터 중에서 중요도가 떨어지는 파라미터를 찾아 제거하는 방법이다. 

가지치기 기법은 '모델의 모든 파라미터들이 추론에 동일한 영향을 미치는 것이 아니다'라는 관찰에서 출발하여, 학습이 완료된 네트워크에서 결과에 영향도가 적은 파라미터를 제거한다. 하지만 중요도가 낮은 파라미터라도 제거하면 이에 따른 정확도 손실이 발생할 수 있는데, 이러한 손실을 보정하기 위해 Pruning을 한 상태에서 다시 추가학습을 하는 방법도 있다. 또한, 적절한 수준에 도달할 때까지 파라미터 제거와 추가학습을 여러 차례 반복하는 연구도 있다. 

그러나, 가지치기 기법은 반복적인 가지치기와 재학습을 수행함에 따라 경량화에 소요되는 시간이 상대적으로 매우 높다는 단점이 있다.

 

Han, Song, et al. "Learning both weights and connections for efficient neural network." Advances in neural information processing systems. 2015.

 

2. Quantization (양자화)

Quantization, 양자화 기법은 가중치, 활성값 등과 같은 파라미터값을 보다 낮은 비트너비로 표현되는 값으로 대체하는 것이다. 양자화란 본래 아날로그 신호를 디지털로 변환하는데 있어 아날로그 값을 비트열로 표현할 수 있는 디지털 값으로 변환하는 과정을 의미하지만, 여기서는 기존 부동소수점 타입으로 표현되던 값을 보다 적은 비트로 표현해 파라미터 저장을 위해 필요한 메모리와 연산량을 줄이는 과정을 의미한다.

일반적으로 딥러닝 파라미터의 저장을 위해 32bit 또는 64bit 부동 소수점으로 주로 사용하는데, 해당 타입의 수준의 Precision이 필요하지 않은 경우가 많다. 따라서 그보다 낮은 Kbit로 표현함으로써 가지치기 기법처럼 파라미터들의 일부를 버리지 않더라도 모델의 크기를 이론상 32/K배 만큼 줄일 수 있는 장점이 있다.

이렇게 적은 비트너비를 가지는 파라미터를 사용하는 양자화 기법은 추론 시 연산의 속도를 개선하고 사용 메모리를 줄인다. 이와 같이 학습이 완료된 파라미터를 단순히 Quantization하는 것에서 나아가 최근에는 학습 시에도 적은 수의 bit를 고려해 학습하도록 하는 알고리즘도 연구되고 있다. 

출처-<딥러닝 모델 경량화 기술 분석>보고서-지능형인프라기술연구단, 2022.11

하지만, 낮은 비트너비로 인해 표현할 수 있는 수의 범위가 크게 한정되는데, 이는 그대로 정확도의 손실로 이어지는 문제가 발생하기도 한다. 위의 그림과 같이 32bit 부동소수점으로 표현되던 파라미터 값을 1bit로 표현한다면 값의 크기는 1/32로 줄어들지만 기존 데이터의 정보 손실이 크게 발생한다.

따라서, 양자화를 수행하는 데 있어 보다 낮은 비트너비를 이용하면서도 기존 대비 정확도의 손실을 최소화하는 것이 가장 큰 목표이다. 

 

3. Knowledge-Distillation (지식증류 기법)

Knowledge-Distillation은 Teacher Network로부터 Student Network를 학습시키는 모델로 Teacher Network가 사전에 학습하고 Student Network는 이러한 Teacher Network를 통해 학습한다. 즉, Teacher Network가 Student Network에게 학습 데이터에 관한 지식을 응축하여 전달하는 것이다. T를 통해 학습된 S네트워크는 T를 거치지 않고 직접 학습데이터로부터 학습한 모델의 성능보다 높은 성능을 보인다는 것이 여러 논문을 통해 확인되었다.

이러한 지식증류 기법을 활용하여 기 학습된 모델들을 임베디드 기기에서의 자원 제한을 고려하여 보다 적은 수의 학습 파라미터들과 적은 비트너비를 갖도록 S모델을 구함으로써 모델이 저장될 저장 공간 및 실행 메모리 사용량을 줄일 수 있다.

 

4. Compact Network Design (경량 네트워크 설계) 

Compact Network Design, 경량 네트워크 설계 기법은 기존 비효율적인 모델 네트워크 구조를 개선하여 기존 모델 대비 연산량이나 파라미터의 수를 줄이는 기법이다.

 


참고자료 

  • <딥러닝 모델 경량화 기술 분석>보고서-지능형인프라기술연구단, 2022.11
  •  Han, Song, et al. "Learning both weights and connections for efficient neural network." Advances in neural information processing systems. 2015.
  • https://www.samsungsds.com/kr/insights/neural-network-ai.html?referrer=https://sotudy.tistory.com/12
반응형