ZZIN33
re-code-cord
ZZIN33
전체 방문자
오늘
어제
  • 분류 전체보기 (52)
    • Paper (4)
      • Generative Model (2)
      • Segmentation (1)
      • 모델 경량화 (1)
    • Study (34)
      • AI (10)
      • MLOps (8)
      • CS (4)
      • OpenCV (1)
      • Algorithm (9)
      • ETC (2)
    • Project (6)
    • ETC (8)
      • 부스트캠프 AI Tech (2)
      • 도서 리뷰 (5)

블로그 메뉴

  • Home
  • About
  • Github

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ZZIN33

re-code-cord

Study/AI

Lightweight Deep Learning

2021. 11. 24. 22:47

모델 경량화의 필요성

 경량화란 모델의 기존의 성능을 유지한채 더 적은 파라미터 수와 연산량을 가지는 모델을 만드는 것이다. 그렇다면 왜 경량화가 필요할까? AI 모델 학습에 들어가는 연산은 시간이 지나면서, 기하급수적으로 증가하고 있다. 또한 AI를 산업에 적용되기 위해서는 다양한 요구조건들이 고려된다. 이러한 상황에서 동일한 조건으로 최대의 결과를 얻기 위해서는 모델의 경량화/최적화 과정이 필요하다.  

 


대표적인 경량화/최적화의 종류

네트워크 구조 관점

  1. Efficient Architecture Design
  2. Network Pruning
  3. Knowledge Distillation
  4. Matrix / Tensor Decomposition

 

Hardward 관점

  1. Network Quantization
  2. Network Compiling

Efficient Architecture Design

 모델 자체의 구조를 바꾸거나, 합성곱 필터를 변경하여 연산을 효율적으로 줄이는 등 다양한 경량화 방법이 있다. 최근에는 자동으로 모델을 탐색하여, 강화학습을 통해서 최적 모델을 탐색하는 연구가 활발하다. 대표적으로 AutoML 기술이 있는데, 사람의 개입을 최소화 하여 보다 더 좋은 성능의 모듈을 찾아낼 수 있다. 이러한 방법은 이전 게시글에서 다룬 Software 2.0 이라고 볼 수 있다.

 AutoML 기술을 활용한 방법에는 크게 두가지가 있다. 다양한 알고리즘과 연관된 하이퍼 파라미터들을 실험하고 성능을 비교하여 최상의 성능을 갖는 모델을 찾는 과정을 자동화한 Combined Algorithm Selection and Hyper-parameter optimizatoin(CASH), 그리고 문제에 적합한 architecture를 찾는 과정을 자동화한 Neural Architecture Search(NAS)가 있다. 

 

Network Pruning

 Network Pruning은 모델을 가지치기하는 것을 의미한다. 모델에서 중요도가 낮은 파라미터를 제거하여 모델 크기를 줄이는 기술이다. 이 방법이 가능한 이유는 추론에 필요한 값은 비교적 작은 가중치에 영향을 받지 않음으로, 작은 가중치값을 모두 0으로 하여 모델의 크기를 줄인다. 또한, 재훈련 과정을 통해 세밀하게 조율하는 방식으로 성능을 유지할 수 있다. 최근에는 모델의 가중치뿐 아니라 채널이나 Layer 등을 줄이는 연구도 진행 중이며, 파라미터 각각을 독립적으로 진행하는 기법도 연구되고 있다.

 

Knowledge Distillation

 이전 게시글에서 다룬 Knowledge Distillation 역시 경량화의 방법이라고 볼 수 있다. 학습된 큰 네트워크(Teacher model)를 작은 네트워크(Student model)의 학습 보조로 사용하는 방법이다. Soft label의 결과를 바탕으로 학습하는 과정을 통해서 작은 모델로도 높은 성능을 얻을 수 있다.

 

Matrix/Tensor Decomposition

 하나의 Tensor를 작은 tensor들의 operation들의 조합(합, 곱)으로 표현하는 것을 말한다. 


Network Quantization

 일반적인 float32 데이터타입의 Network 연산과정을 그보다 작은 데이터타입으로 변환하여 연산을 수행. 사이즈를 감소시키고, 속도를 향상시킬 수 있으나 성능이 약간 하락하는 경향을 보인다.

 

 

Network Compiling

 Framework와 Hardware Backends 사이의 수많은 조합이 있다. 이러한 조합에 따라 성능차이가 발생하는데, AutoML로 좋은 조합을 찾아낼 수 있다. (e.g. AutoTVM(Apache))

 


 

 

Reference

  1. 경량 딥러닝 기술 동향, ETRI 2019
저작자표시 (새창열림)

'Study > AI' 카테고리의 다른 글

데이터가 충분하다고 말하려면 얼마나 있어야 할까?  (0) 2022.01.24
딥러닝이란 무엇일까?  (0) 2022.01.15
Deep Learning Library for video understanding  (0) 2021.11.30
Knowledge Distillation 구현  (0) 2021.11.29
[Pytorch] Tips for Loading Pre-trained Model  (0) 2021.11.27

    티스토리툴바