(1강) 최적화 소개 및 강의 개요

1. Introduction(경량화)

1.1. 경량화의 목적

1) On device AI

전자기기 등에 올라가서 사용되는 AI 기술

  • 스마트폰, 애플워치, IoT 기기 등

  • Power, RAM Memory, Storage, Computing power등의 제한이 있음

2) AI on cloud (or Server)

  • 한 요청의 소요시간, 단위 시간당 처리가능한 요청수가 제한된다.

  • 같은 자원으로 더 적은 latency와 더 큰 throughput이 된다면 더 좋다!

3) Computation as a key component of AI progress

  • 모델 학습에 들어가는 연산이 3, 4개월마다 두배로 증가해왔음.

  • 2012 -> 2018 300,000배가 증가함

경량화는?

  • 모델의 연구와는 별개로, 산업에 적용되기 위해서 거쳐야하는 과정

  • 요구조건(하드웨어종류, latency제한, 요구throughput, 성능)들간의 trade-off를 고려하여 모델경량화/최적화를 수행

1.2. 경량화 분야 소개

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

  • 네트워크 구조 관점

    1. Efficient Architecture Design(+AutoML; Neural Architecture Search(NAS))

    2. Network Pruning - 학습된 네트워크의 중요도가 낮은 파라미터를 제거해보자!

    3. Knowledge Distillation - 작은 규모로 전달해서 사용해보자

    4. Matrix/Tensor Decomposition - 작은 Mat, Tensor를 사용해보자

  • Hardware 관점

    1. Network Quantization - float32 가 아닌 더 작은 타입으로 사용하기

    2. Network Compiling - 네트워크 자체를 컴파일하는 과정

Efficient Architecture Design

  • 매년 쏟아져 나오는 블록 모듈들

  • 각 모듈 블록마다 특성이 다름(성능, 파라미터수, 연산횟수, ...)

  • 원의 크기: 파라미터 갯수

  • x: 연산횟수, y: accuracy

  • x값이 작은 것이 경량화에 특화된 모듈들을 디자인 하는 것.

  • software 1.0: 사람이 짜는 모듈

    사람이 명백한 과정을 주어주고 작성을 하는 것.

  • software 2.0: 알고리즘이 찾는 모듈

    사람이 목적을 제시해주면 그걸 동작하게하는 모델을 찾고 네트워크를 학습하는 알고리즘

  • 사람의 직관보다 상회하는 성능의 모듈들을 찾아낼 수 있다!

Network Pruning (찾은 모델 줄이기)

  • 중요도가 낮은 파라미터를 제거하는 것

  • 좋은 중요도를 정의, 찾는 것이 주요 연구토픽 중 하나 (e.g.L2norm이 크면, loss gradient 크면 등등)

  • 크게 structured/unstructured pruning으로 나뉘어짐

  • Structured pruning

    • 파라미터를 그룹 단위로 pruning 하는 기법들을 총칭(그룹: channel / filter, layer 등)

    • Dense computation에 최적화된 소프트웨어 또는 하드웨어에 적합한 기법

    • 중요도(channel scaling factors)가 낮은 파라미터를 제거해주는 것!

  • UnStructured pruning

    • 파라미터 각각을 독립적으로 pruning하는 기법

    • Pruning을 수행할수록 네트워크 내부의 행렬이 점차 희소(sparse)됨

    • Structured Pruning과 달리 sparse computation에 최적화된 소프트웨어 또는 하드웨어에 적합한 기법

Knowledge distillation

  • 학습된 큰 네트워크를 작은 네트워크의 학습 보조로 사용하는 방법

  • soft targets(soft outputs)에는 ground truth보다 더 많은 정보를 담고 있음

    (e.g. 특정상황에서 레이블 간의 유사도 등등)

    자동차와 자전거가 있다. 앞에 있는 차가 자전거를 싣고 있다면 혼동이 생길 수 있다. 여기서 teacher 모델을 사용하게 되면 soft하게 label이 표현 가능하다.

  • 연산

    • Student network와 ground truth label의 cross-entropy

    • teacher network와 student network의 inference결과에 대한 KLDloss로 구성

  • TT는 large teacher network의 출력을 smoothing(soften)하는 역할을 한다.

  • α\alpha는 두 loss의 균형을 조절하는 파라미터다.

Matrix / Tensor decomposion

  • 하나의 Tensor를 작은 tensor들의 operation들의 조합(합, 곱)으로 표현하는 것

  • Cp decomposition: rank 1 vector들의 outer product의 합으로 tensor를 approximation

Network Quantization

  • 일반적인 float32 데이터타입의 Network의 연산과정을 그보다 작은 크기의 데이터타입 (e.g.float16,int8,…)으로 변환하여 연산을 수행

  • Quantization Error가 발생할 수 있다. (Dequantize시 정확히 일치한 값이 나오지 않음)

  • 효과

    • 사이즈: 감소

    • 성능: 약간하락

    • 속도: Hardware 지원 여부 및 사용 라이브러리에 따라 다름(향상추세)

    • Int8 quantization 예시 (CPU inference, 속도는 pixel2 스마트폰에서 측정됨)

Network Compiling🌟

  • 학습이 완료된 Network를 deploy하려는 target hardware에서 inference가 가능하도록 compile하는것(+최적화가 동반)

  • 사실상 속도에 가장 큰 영향을 미치는 기법

  • e.g.TensorRT(NVIDIA), Tflite(Tensorflow), TVM(apache),…

  • 각 compile library마다 성능차이가 발생

컴파일 라이브러리에 따라 성능에 차이가 있다.

  • Compile과정에서, layer fusion(graph optimization)등의 최적화가 수행됨

  • 예를들어 tf의 경우 200개의 rule이 정의되어 있음

  • Framework와 hardware backends사이의 수 많은 조합

  • HW마다 지원되는 core, unit수, instruction set, 가속 라이브러리 등이 다름

  • Layer fusion의 조합에 따라 성능차이가 발생(동일회사의 hw임에도)

  • AutoML로graph의좋은fusion을찾아내자

  • e.g.AutoTVM(Apache)

2. 강의 목표, 구성

경량화의 일련의 과정을 경험해보는 것! 경량화, 최적화는 넓은 분야이며, 특정 주제들은 구체적이고 지엽적이기 마련이다. 다양한 분야를 경험하기에 broad한 topic을 준비.

  • AutoML

  • Matix / Tensor Decomposition

  • Network Quantization

  • Network Compliling

최적화라는 성능의 효율을 향상시키는 것에 관심이 많았기에 흥미로은 기법들이 눈에 보였다. 재밋을것 같은 과정!

Last updated