Skip to main content

Docs

God shall bless us; and all the ends of the earth shall fear him.

근사를 통한 가속

acceleration
근사를 통한 가속

근사를 통한 가속​

DNN은 일반적으로 많이 중복됩니다. 중복을 줄이는 것은 메모리 공간과 계산 요구량을 줄입니다.

근사 방법은 다음 종류가 있습니다.

  • 연산자 크기를 줄여 스토리지와 계산량을 줄입니다 예) 부동소수점 -> 고정소수점, 낮은 정밀도 양자화

  • 연산의 숫자를 줄여 스토리지와 계산량을 줄입니다 예) low rank 근사, 네트워크 프루닝

  • 근사 회로를 사용

양자화​

Quantization

부동소수점 = $(-1)^s \times m \times 2^{(e-127)}$

1(s) + 8(exponent) + 23(mentisa)

이점

  • 큰 정확도 손실 없이 메모리 요구량을 줄입니다
  • 하드웨어 플랫폼이 제공하면(4bit ALU, FPGA 등) 계산 오버헤드 감소

저정밀도 숫자​

Low Precision Numbers

fp16 1 + 5(exponent) + 10(mentisa)

-5.96e^-8 ~ 65504

bfloat16 1 + 8(exponent) + 7(metisa)

-1e^38 ~ 3e^38 더 많은 범위

Symmetric​

$Q = \big[{r \over S}\big]$ s는 스케일 팩터

asynmmetric​

$Q = \big[{r \over S}\big] + Z$
중점이 이동

로그 양자화​

곱셈이 쉬프트와 덧셈으로 교체됨

가중 양자화​

Weighted Quantization

주 목표는 메모리 사용량을 줄이는 것

  • deep compression
  • weighted-entropy based quantization
  • value-aware quantization
  • adaptive quantization
  • Outlier quantization
  • learnable quantization

양자화 입도​

Quantization Granularity

  • layerwise 간단하고 모든 가속기에 적합
  • groupwise 몇 채널을 묶어 계산
  • channelwise CPU와 GPU에서 가장 인기
  • sub-channelwise 오버헤드가 큼

양자화 기법​

QAT​

Quantization Aware Training

State Through estimator

PTQ​

Post Training Quantization

calibartion data를 사용해 계산, 얼마나 많이는 의문 범위를 어떻게 정할 것인가?

프루닝​

PaI(Pruning at Init) PaT(Pruning after Training)

Occam's Hill

무엇을? - 희소한것을 어떤걸? - 규칙 어떻게? - 스케줄 얼마나? - 비율

희소 구조​

비정규적

  • Fine grained sparsity(0-D)
  • Vector-level sparsity(1-D)
  • Kernel-level sparsity(2-D)
  • Filter-level sparsity(3-D) 정규적

프루닝 규칙​

  • Data free
  • Data driven
  • Selection based on the training loss func

프루닝 스케줄​

  • 학습 후 희소화 가장 인기있는 방법
  • 학습 중 희소화
  • 희소 학습

프루닝 비율​

글로벌, 레이어 비율

시작시 프루닝​

Pruning at Initialization

작은 것부터가 나은가? 큰 것부터 잘라나가는게 나은가?

0 활용 처리​

Zero aware processing

저수준 근사​

행렬 분해​

큰 필터는 작은 필터 여러개로 근사 가능

Tucker Decomposiiton​

Bottleneck Architecture​

Depthwise Separable Convolution​

K x K x C x N

K x K x C + C x N