DL의 경량화 필요성

Date:


경량화 목적

  • On Device, On Cloud(server)로 AI 가 돌아가는 환경에 제약이 많아짐
  • On device limitation
    • power usage(battery)
    • RAM Memory Usage
    • Storage
    • Computing power
  • On Cloud limitation
    • Latency
    • Throughput
    • e.g. 한 요청의 소요시간, 단위 시간당 처리 가능한 요청수

❕❓ 만약 같은 자원(=돈, 시간)으로 더 적은 Power usage, Memory Latency와 더 큰 Throughput이 가능하다면

현재 AI 모델은 2012년 이후 3,4 개월마다 두배로 증가해옴

경량화는?

  • 모델의 연구와 별개로, 산업에 적용되기 위한 필수 과정
  • 요구조건(하드웨어 종류, Latency제한, 요구 Throughput, 성능)들 간의 Trade-off를 고려하여 모델 경량화/최적화를 수행

경량화 분야

네트워크 구조관점

  • Efficient Architecture design(+AutoML, NAS(Neural Architecture Search))
    • Software의 새로운 단계 : Software 1.0 - 사람이 짜는 모듈, Software 2.0 - 알고리즘이 찾는 모듈
      • 사람의 직관보다 상회하는 성능의 모듈들의 찾아낼 수 있음
  • Network Pruning - 활발한 연구가 되고 있지만, 일반화 어려움
    • 중요도가 낮은 파라미터 제거(좋은 중요도를 정의하는 것이 하나의 토픽)
    • Structured Pruning : 그룹단위로 Pruning하는 기법(Channel/filter,Layer 전체를 Pruning)
    • Unstructured Pruning : 파라미터 각각을 독립적으로 Pruning하는 기법, 내부의 행렬이 점점 Sparse해짐, Sparse computation에 최적화된 S/W혹은 H/W에 적합한 기법
  • Knowledge Distillation - 활발한 연구가 되고 있지만, 일반화 어려움
    • 학습된 큰 네트워크를 작은 네트워크의 학습보조로 이용하는 방법
    • 단순 모델 학습시에는 Hard target(Ground Truth Label)과 비교하여 학습하지만, Knowledge distillation 방법을 쓸경우 기 학습된 큰 모델의 Soft target과 Hard Target을 함께 학습할 수 있기 때문에 더 많은 정보로 학습할 수 있음
  • Matrix/Tensor Decomposition - 수학적으론 복잡하나, 간단한 구현으로 좋은 효과가 있음
    • 하나의 Tensor를 작은 Tensor들의 조합으로 표현하는 것 image

Hardware 관점

  • Network Quantization
    • 양자화 : 일반적인 Float32 데이터를 int8, Float16등 작은 데이터 타입으로 변환하여 연산 수행후 복원
    • Quantization Error가 발생하고, 일반적으로 성능이 떨어짐
  • Network Compiling
    • 학습이 완료된 Network를 Deploy하려는 Target Hardware에서 Inference가 가능하도록 Compile진행
    • 사실상 속도에 가장 큰 영향을 주는 기법
    • e.g. TensorRT(NVIDIA), Tflite(Tensorflow), TVM(apache), …
    • 각 Library마다 성능차이가 발생(tf의 경우 약 200개의 Rule로 최적화를 진행하게됨)
    • 하지만, Framework와 Hardware backends 사이의 수많은 조합이 있어 generalized 하기 어려움(Layer Fusion 조합에 따라 성능 차이가 발생)




📌reference

  • boostcourse AI tech


💡 수정 필요한 내용은 댓글이나 메일로 알려주시면 감사하겠습니다!💡 

댓글