https://arxiv.org/abs/2310.11453

 

Microsoft가 1저자인 논문이고, 2023년 10월에 아카이브에 올라온 논문입니다.

 

Abstract

이 논문에서는 LLM에 맞는 1-bit Transformer architecture, BitNet을 제안합니다.

BitNet은 Linear layer를 scratch부터 학습하는 1-bit weight의 BitLinear로 대체한 architecture입니다.

 

이 방법은 memory footprint와 에너지 소모를 줄이면서, 8-bit quantization SOTA와 FP16 Transformer baseline와도 경쟁력있는 성능을 보였습니다.

 

또한, full-precision Transformer처럼, scale을 키우면 성능이 더 좋아지는 scaling법칙을 따르는 것도 확인했습니다.

 

Introduction

모델의 큰 파라미터를 접근하고 처리할때, 메모리 대역폭에 병목이 생기면서 전반적인 inference 속도에 제한이 생깁니다.

** 메모리 대역폭데이터를 얼마나 빠르게 읽고 처리하느냐, input x에 대한 추론 연산을 하기 위해서는 weight를 읽어야함

 

 

분산시스템이나 multi-device 환경에 배포할때에도 device간의 통신 overhead가 inference latency과 에너지 사용에 영향을 줍니다. 이때, quantization은 memory footprint와 계산 자원을 효과적으로 줄일 수 있는 방법입니다.

** Memory footprint전체 메모리 사용량 

 

 

대부분의 Quantization 방법들은 학습후에 quantization하는 PTQ(Post-Training-Quantization) 방식을 사용합니다.

하지만, precision이 내려갈수록 큰 정확도 손실이 발생합니다. 

** Precision : 정밀도! 32bit, 16bit, 8bit, 4bit, 3bit, 2bit, 1bit

 

 

반대의 개념은 QAT(Quantization-aware training)인데, 학습중에 quantization을 하면서 최적화하는 방법입니다.

PTQ에 비해서 정확도가 높지만, 낮은 precision에서 모델이 수렴하기 어려워지고, neural language models에서 scaling 법칙을 따르는지에 대한 조사가 덜 됐습니다.

 

또한, 기존 방법들은 CNN이나 기계번역, BERT-pretraining에 초점을 두었기 때문에 LLM과는 구조적인 차이가 있습니다.

(Encoder-Decoder Architectures, Bidirectional Encoder, Unidirectional Decoder)

 

제안한 BitNet은 PagedAttention, FlashAttention, and speculative decoding와도 함께 사용할 수 있습니다.

 

 

Method

 

위 그림에서 볼 수 있듯, BitNet은 Transformer와 동일한 구조를 사용하고, 다른 것은 nn.Linear대신 1bit weight인 BitLinear를 사용한다는 것입니다.

 

그 외에 다른 것들은 1-bit가 아닌, 8-bit를 사용했습니다.

  1. Residual connection과 layer normalization은 computation cost가 매우 작아서 압축할 필요가 없다.
  2. Input/Output embedding은 precision을 보존해야, language model이 sampling을 할때 high-precision 확률을 쓸 수 있다.

 

Weight Quantization

우선, weight를 Sign함수(0이하는 -1, 0보다 크면 +1)로 이진화합니다.

기존 연구(LOP+22)를 따라서, weight를 0을 중심으로 $\alpha$로 centralize했는데, capacity를 올리는 효과가 있다고 합니다.

scaling factor $\beta$는 이진화 후에 원래 값과의 l2 error를 줄이기 위해 사용합니다.

 

Centeralize와 Sign함수

 

Activation Quantization

Activation은 8-bit precision으로 학습중에는 모든 activation에 대해서, 추론에는 토큰별로 quantization을 합니다.

기존 연구(DLBZ22)에 따라서, [$-Q_{b}$, $Q_{b}$] ($Q_{b} = 2^{b-1})$범위로 만드는 absmax quantization를 사용합니다.

** ϵ : clipping에서 발생할 수 있는 overflow를 방지, Floating에서 발생할 수 있는 오차범위를 조정하는 것으로 이해함.

 

 

ReLU같은 non-linear function전에는 [0, $Q_{b}$]로 scaling합니다.

  • 제일 작은 값으로 빼서, 해당 범위로 rescaling해서 모든 value에 대해 non-negative로 만듭니다.

 

위의 수식들을 사용해서 matrix multiplication을 다시 쓰면 아래와 같습니다.

양자화된 W와 양자화된 input x

 

$W$와 $x$의 원소들이 평균이 0인 서로 독립이고, 같은 분포라고 가정할때, output $y$의 분산은 아래와 같이 추정할 수 있습니다.

이진으로 양자화된 w는 제곱하면 1인 내용을 기억하고 보면 좋습니다.

 

 

일반적인 full-precision에서 초기화방법(Kaiming initialization or Xavier initialization)을 사용하면 Var($y$)이 1이 되고, 학습 안정성에 좋다고 합니다.

 

논문의 저자들은 quantization 이후의 분산값을 1로 보존하기 위해 activation quantization전에 LayerNorm을 사용합니다.

이러면 quantization후의 분산도 full-precision과 동일하게 1로 만들 수 있습니다.

 

이를 사용해서 전체적으로 다시 표현하면 아래와 같습니다.

 

 

 

Model parallelism with Group Quantization and Normalization

현재 LLM은 너무 크기 때문에 여러 device에서 학습 및 추론하는 편입니다.

 

하지만 quantization에서 사용하는 파라미터 ($\alpha$, $\beta$, $\gamma$)등은 전체 $w$에 대해서 계산하기 때문에, 각 device끼리 공유를 하기 위해서는 communication cost가 필요하고 병목이 생기는 문제가 있습니다.

 

이를 해결하기 위해서, 나눠진 weight와 activation에서 독립적으로 계산해서 device간의 통신 cost를 없애는 방법을 선택했습니다.

 

 

 

 

Experiments

Comparison with FP16 Transformers

BitNet과 FP16 Transformers모두 에너지 소모와 model size가 클 수록 loss가 잘 떨어지는 scaling 법칙을 따르는 것을 보였습니다.

 

 

 

0-shot과 4-shot에서 FP16 Transformer와 비슷한 curve를 그리는 것을 보였습니다.

 

 

a) BitNet만 큰 lr에서 수렴할 수 있음을 보였고, b) 다양한 lr에서도 안정적으로 학습이 가능한 것을 보였습니다.

 

 

Comparison with Post-training Quantization

0-shot, 4-shot로 정확도를 측정했을때, 다른 PTQ보다 QAT인 BitNet의 성능이 더 좋았다. (다른 QAT와 비교도 해야하지 않을까? 하는 생각은 있는데, 해당 실험은 없는 것 같다)

 

 

Conclusion and Future Work

  • Scalable하고 Stable한 1-bit Transformer 아키텍처인 BitNet을 제안했다.
  • Baseline과 비교했을때 perplexity와 downstream task performance에서 경쟁력있고, memory footprint와 energy consumption이 낮다.
  • FP Transformer와 동일하게 Scaling 법칙을 따라서, 더 큰 larger language model에 적용해도 좋을 것이다.
  • 추후에 Model size와 training step을 올려볼거고, ResNet같은 모델에 적용해보고 싶다.

https://arxiv.org/pdf/2306.00978

https://github.com/mit-han-lab/llm-awq

 

GitHub - mit-han-lab/llm-awq: [MLSys 2024 Best Paper Award] AWQ: Activation-aware Weight Quantization for LLM Compression and Ac

[MLSys 2024 Best Paper Award] AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration - mit-han-lab/llm-awq

github.com

 

MLSys 2024 Best Paper Award

 

 

Abstract

Activation-aware Weight Quantization (AWQ): 중요한 가중치만 잘 살리면 LLM도 가볍게 돌아간다.

 

핵심 아이디어는 '모든 weight가 중요한 게 아니다' 입니다.

상위 1% 정도의 weight만 잘 보호하면, 전체 quantization error를 크게 줄일 수 있다는 사실을 발견했습니다.

 

그런데 어떤 weight가 중요한지를 판단하려면 weight 값 자체보다 해당 weight가 처리하는 activation의 분포를 보는 게 훨씬 더 효과적이라는 것이 저자들의 주장입니다.

 

일반적으로 사용되는 mixed-precision 방식은 하드웨어 구현에 비효율적인데, AWQ는 이를 피하면서도 중요한 weight 채널만 스케일링을 통해 효과적으로 보호합니다. 

 

또한, AWQ가 backpropagation이나 reconstruction을 전혀 사용하지 않습니다. 대신 offline으로 측정한 activation 통계만을 활용하므로, 다양한 도메인에 잘 일반화되고, calibration set에 과적합되지 않는다는 장점이 있습니다.

 

추가적으로 저자들은 TinyChat이라는 추론 프레임워크를 제안했습니다.

이 추론 프레임워크는 4bit LLM이 이론적으로 절감하는 메모리 사용량을 실제 속도 향상으로 연결시켜주는 프레임워크입니다.

  • On-the-fly dequantization
  • efficient 4-bit weight packing
  • kernel fusion

그 결과, 가중치를 4비트로 줄였을 때 발생할 수 있는 성능 손실 없이, 속도 향상을 달성했습니다.

 

Method

(a) 기존 RTN(Round To Nearest) quantization, (b) 1%의 중요한 weight를 보존하고 quantization, (c) quantizatione rror를 줄이기 위한 최적의 scaling을 찾는 방법

 

기존 방법 RTN (a)는 PPL이 엄청나게 올라가는 문제가 있습니다.

 

이를 해결하기 위해, 중요한 weight를 보존하여 quantization (b) 한다면, PPL은 줄어들 수 있지만, mixed-precision 문제로 인해서 하드웨어 최적화가 어렵습니다.

 

이에 저자들은 quantization하기전에 weight를 scaling하여 해결할 수 있는 방법을 제안합니다.

 

(b) Improving LLM Quantization by Preserving 1% Salient Weights

저자들은 LLM의 weight가 모두 동일하게 중요하지 않다는 것을 관찰했습니다.

* 이는 매우 작은 비율의 salient weights가 다른 weight들에 비해서 LLM 성능에 훨씬 더 중요하다는 의미입니다.

 

Quantization할때, 이러한 중요한 weight는 건너뛰는 것이 추가적인 학습이나 regression없이 performance 손실을 최소화할 수 있는 방법입니다.

 

위 Table 1에서 볼 수 있듯이, FP16에서 0.1% ~ 3%의 비율을 보존하고 quantization하는게 기존 RTN 방법보다 훨씬 낮은 perplexity를 보였습니다. 또한 보존하는 weight를 선택할때 Activation, Weight(L2 norm), Random에 대해서 실험했을때도 activation을 기준으로 weight를 선택하는 것이 중요함을 나타냅니다.

 

이러한 결과를 보고 저자들은 large magnitudes를 갖는 input features가 더 중요하다는 가설을 세웠습니다.

 

Limitation:

* 0.1%의 weight를 FP16으로 유지한 mixed-precision data type은 system implementation을 어렵게 합니다.

* 그렇기 때문에 실제로 FP16을 유지하지 않고 보존할 방법을 찾아야합니다.

 

(c) Protecting Salient Weights by Activation-aware scaling

저자들은 (b)의 mixed-precision으로 인한 하드웨어 최적화 문제를 해결하기 위해  per-channel 스케일링 방법을 제안합니다.

 

Analyzing the Quantization error.

시작하기에 앞서서, weight-only quantization error를 수학적으로 분석합니다.

 

$$y = Wx, \quad y = Q(W)x$$

 

quantization function

$$Q(W) = \Delta \cdot \mathrm{Round}\left( \frac{W}{\Delta} \right), \quad \Delta = \frac{\max(|W|)}{2^{N-1}} $$

 

$N$은 number-of quantization bit $\Delta$는 quantization scaler로, $\max(|W|)$에 의해서 결정됩니다.

 

이제 weight의 한 원소를 $w$라고 할때, 이를 $s > 1$로 scaling하고, x를 $1/s$로 스케일링하면

$$Q(w \cdot s) \cdot \frac{x}{s} = \Delta^{'} \cdot \text{Round} \frac{ws}{\Delta^{'}} \cdot x \cdot \frac{1}{s}$$

 

$\Delta^{'}$는 $s$를 적용한 다음의 새로운 quantization scaler입니다.

 

저자들은 실험을 통해 아래와 같은 요소들을 발견했습니다.

  • Round 함수의 평균 오차는 스케일링과 상관없이 [0, 0.5]사이에서 랜덤하게 나왔다.
  • single element w에 scaling하는 것은 W의 maximum value에 영향을 주지 않는다. (그러므로, $\Delta' \approx \Delta$로 사용할 수 있다.)
  • $\Delta$와 $x$가 FP16으로 되기 때문에, quantization error가 없다.

따라서, quantization error는 아래와 같이 표현할 수 있습니다.

$$\text{Err}(Q(w)x) = \Delta \cdot \text{RoundErr} (\frac{w}{\Delta}) \cdot x$$

 

$$\text{Err}(Q(w \cdot s) \frac{x}{s} ) = \Delta' \cdot \text{RoundErr} (\frac{ws}{\Delta'}) \cdot \frac{x}{s}$$

 

$\Delta' \approx \Delta$ 로 사용할 수 있었기 때문에, $s$가 커질수록 $\text{Err}(Q(w \cdot s) \frac{x}{s} )$는 작아집니다.

 

 

OPT-6.7B 모델에 대해서 다양한 s를 실험한 Table

 

위 Table 2결과를 보면 s=2를 사용했을때의 성능이 제일 좋았습니다.

무조건 $s$를 키우는게 안좋은 이유는, $s$가 커지면 중요하지 않은 weight들의 quantization error가 커지기 때문입니다.

 

 

Searching to scale

모든 weight (중요함/안중요함) 를 모두 고려하기 위해서, input channel별 최적의 scaling factor를 찾는 방법을 사용했습니다.

 

$$s^* = \arg\min_s \mathcal{L}(s)$$

 

$$\mathcal{L}(s) = \left\| Q\bigl(W \cdot \text{diag}(s)\bigr) \cdot \bigl(\text{diag}(s)^{-1} \cdot X \bigr) \;-\; W X \right\|$$

 

$X$는 특정 task에 overfitting되지 않도록 pre-trained dataset에서 작은 calibration set에서 사용합니다.

 

quantization function $Q$가 미분이 되지 않기 때문에, backpropagation을 하지 않습니다. 

* 물론, approximated gradient를 사용하는 연구들도 있지만, 수렴이 불안정한 문제가 있기 때문에 사용하지 않았다고 합니다.

 

중요한 weight channel은 사실 activation scale에 기반한다고 했으니, 더 심플한 search space를 사용할 수 있습니다.

 

$$s = s_X^{\alpha}, \quad \alpha^* = \arg\min_{\alpha} \mathcal{L}\bigl(s_X^{\alpha}\bigr)$$

$s_X^{\alpha}$는 per-channel activation의 average magnitude이며, $\alpha$는 [0, 1]사이에서 grid search로 찾았습니다.

 

 

TinyChat: Mapping AWQ onto edge platforms 

AWQ는 LLM의 memory size를 줄일 수 있지만, 속도 향상으로 이어가는 것은 쉽지 않습니다.

W8A8 quantization (SmoothQuant)는 저장과 계산이 모두 동일한 precision에서 진행되므로, 계산과정이 kernel's epilogue에 통합될 수 있습니다.

*kernel's epilogue?

더보기

 


 

<접은글>

🌟 kernel’s epilogue란?

먼저 “kernel”이 뭐냐면:

  • GPU나 CPU에서 행렬곱/컨볼루션 같은 연산을 수행하는 **하나의 함수(커널)**를 뜻합니다.
    • 예) GEMM kernel (General Matrix Multiply)

이 커널 안에는 보통 크게 두 단계가 있습니다:

1️⃣ Main Loop (Main Computation)

  • 행렬 곱셈이나 누산 같은 “핵심 계산”을 반복 수행하는 부분
  • 예: 매 tile마다 multiply-accumulate 반복

2️⃣ Epilogue

  • “마지막 후처리 단계”입니다.
  • 핵심 계산이 끝난 결과에 스케일 적용, bias 추가, activation function, 타입 변환 등을 수행

 

GPT4o 매우 감사.

 

<접은글>

 


 

하지만, W4A16의 경우에는 연산전에 W를 16으로 dequantization해야하기 때문에 구현이 어렵습니다.

이러한 문제를 TinyChat이라는 경량화 시스템을 도입해서 해결합니다.

 

 

 

Why AWQ Helps Accelerate On-Devices LLMs

 

위 Figure 3-(a) 에서 generation이 context보다 훨씬 느린 것을 볼 수 있습니다.

 

Figure 3-(c)를 보면 on-device LLM에서 activation에 비해서 weight loading이 무겁습니다.

이는 다른 말로 하면, weight loading을 줄이면 빨라질 수 있습니다.

 

이러한 관점에서 weight-only quantization이 on-device LLM에 특히 유리하다고 이야기합니다.

 

Deploy AWQ with TinyChat

위에서 4bit weight quantization으로 이론상 4배정도의 속도향상이 가능하다는 것을 보았습니다.

GPU에서는 attention, layer normalization, linear projection같은 핵심 연산만 구현에 집중했고, Huggingface FP16대비 3배 이상의 속도 향상을 달성했습니다.

 

그 외에도 On-the-fly dequantization, efficient 4-bit weight packing, kernel fusion을 통해서 추가적인 속도 향상을 가져왔습니다.

 

Experiments

모든 실험에 대해서 group size 128을 사용했습니다.

 

Llama-2와 LLaMA에서 quantization 전과 후의 perplexity를 비교했습니다.

Llama-2와 LLaMA 모두 7B, 13B, 70B 모두에서 RTN, GPTQ보다 더 낮은 perplexity를 보였습니다.

 

Mixtral 모델에도 적용했을때, FP16과 비슷한 수준의 PPL을 달성하며, AWQ가 다양한 아키텍쳐에서도 잘 동작한다는 것을 보였습니다.

 

그 외에 Instruction-tuned, multi-modal language models, visual reasoning, programming and math tasks 등에서도 RTN보다 좋은 성능을 보였습니다.

 

 

2bit quantization을 했을때, RTN은 종종 실패했지만 GPTQ와 AWQ+GPTQ는 성공적으로 양자화가 되었습니다.

(AWQ 혼자 사용하지 않은걸로 봐서는, 2bit on-device에서는 GPTQ보다 낮은 perplexity를 보였을지도 모르겠네요)

 

 

Summary

  • 기존 RTN은 perplexity가 높은 문제가 있다.
  • 중요한 weight (channel)을 FP16으로 보존하면 quantization error를 낮출 수 있지만, 하드웨어 최적화가 어렵다.
  • 추가적인 학습이나 regression없이 scaling을 통해서 중요한 weight를 보호하는 방법을 제안했다.
  • 해당 방법은 W4A16으로 weight-only quantization인데, 이러한 방법이 특히 on-device LLM에서 model memory를 줄이면서 weight loading을 빠르게 하며 속도향상이 가능했다.
  • 그 외에도 가속화를 위한 TinyChat이라는 platforms를 설계했다.
  • 다양한 모델과 task에서 기존 RTN보다 좋고, GPTQ보다 quantization이 잘 되는 것을 보였다.

 

ICLR 2025 Accpeted

 

https://openreview.net/forum?id=DmEHmZ89iB

 

Single Teacher, Multiple Perspectives: Teacher Knowledge...

Do diverse perspectives help students learn better? Multi-teacher knowledge distillation, which is a more effective technique than traditional single-teacher methods, supervises the student from...

openreview.net

 

 

 

기존 KD와 다르게, Multi-teacher를 사용해서 더욱 다양한 관점을 student에게 전달하는 논문들이 많이 나왔었다.

하지만, 이런 방법들은 서로 다른 teacher들을 학습시켜야하는 불편함이 있었다.

 

이 논문에서는 단 하나의 teacher만 사용해서 추가적인 학습없이, 다양한 관점을 distillation할 수 있는 방법을 제안한다.

 

 

방법은 간단하다.

 

"Gaussian Noise"를 feature distillation이면 representation에, logit distillation이면 output logits에 넣는 것이다.

이러면, 동일한 input에 대한 다양한 gaussian noise가 추가된 정보들을 함께 받으면서 다음과 같은 효과를 누릴 수 있다.

  • feature의 경우, 더 넓은 스펙트럼의 feature representation을 전달할 수 있다.
    • 마치 drop-out이나, data augmentation 처럼 말이다.
  • logits의 경우, 더욱 다양한 inter-class relationship을 올려줄 수 있다.
    • One-hot vector를 전달하는 cross-entropy와 다르게, KD는 soft logits (ex) [0.1, 0.2, 0.1, 0.6]) 을 전달하면서 student에게 "regularize"를 하는 효과를 낼 수 있는데, 이를 Gaussian noise로 추가함으로써, 좀 더 다양한 inter-class relationship을 전달하는 것이다.

 

 

<Feature distillation + Synthesis feature distillation>

$i$마다 새로운 Gaussian noise가 있고, 해당 noise와 teacher의 feature를 interpolation해준다. 

이때, $\alpha$ 값은 0.1을 사용했다.

 

interpolation한 $f^{(i)}_{T}(x)$ 와 student의 feature $f_{S}(x)$와 $i$만큼 distillation을 해주고

합성하지 않은 원본 feature도 첫번째 항에서 distillation 해준다.

 

 

<Logits distillation + Synthesis logits distillation>

마찬가지로, $i$마다 새로운 Gaussian noise가 있고, 이 noise와 teacher의 logits $z_{T}(x)$를 interpolation해준다.

interpolation한 $z_{T}^{(i)}(x)$와 student의 $Z_{S}(x)$를 일반적으로 사용하는 KL Divergence loss로 distillation해준다.

합성하지 않은 원본 logits도 첫번째 항에서 distillation 해준다.

 

 

 

 

CIFAR10에서의 기존 KD(logits), CRD(Feature)와 비교한 table이다. (L)은 $L_{logits}^{perturb}$ loss를, (F)는 $L_{feat}$ loss를 말한다.

 

 

single teacher방법과 multi-teacher 방법에 TeKAP loss term을 추가했을때 성능이 향상되는 것을 보였다.

ImageNet에서 Teacher ResNet34 -> Student ResNet18로 distillation 했을때, 기존 KD보다 error rate가 줄어듬을 보였다.

 

Vanilla student나 기존 KD보다 inter-class의 correlations가 줄어드는 것을 보였다.

 

 

 

 

 

 

 

 


 

내가 실험했을때와 크게 다른점은 ImageNet 실험인 것 같다.

기본적으로 DKD나 다른 논문들의 ImageNet의 table을 사용하지 않고, 단순 KD와 비교하는 table을 많이 사용한 것 같다.

또한, Adversarial robustness나 few-shot, imbalance class dataset 등 다양한 세팅에서 table을 채웠다.

내가 리뷰어였으면 최신 SOTA의 ImageNet을 물어봤을 것 같긴 하다.

 

이번에 이 논문이 ICLR2025에 붙으면서, 이 논문의 테이블들을 그대로 가져다가 만들어도 될 것 같다.

 

 

https://arxiv.org/abs/2308.10524

 

Dataset Quantization

State-of-the-art deep neural networks are trained with large amounts (millions or even billions) of data. The expensive computation and memory costs make it difficult to train them on limited hardware resources, especially for recent popular large language

arxiv.org

 

ICCV 2023 Accepted.

 

 

일단, 우리가 생각하는 model quantization을 기대하고 논문을 접하면 안된다.

그냥 data를 compression 하는 방법을 개선하면서, 이름을 quantization이라고 붙였을뿐....

 

 

----

 

 

Data Compression을 하려고 하는 목적은 간단하다.

 

"학습할때 사용하는 데이터가 너무 많은데, 이를 효율적으로 줄이면서 비슷한 성능을 낼 수 없을까?"

 

이러한 목적을 달성하기 위해, 주로 아래 두가지의 방법이 연구되고 있다.

  • Data distillation
  • Active Learning (coreset selection) 

이 논문을 쉽게 정리하기 위해서, 위 방법 두개에 대해서 간단하게 설명하고자 한다.

 

 

 

 

Data distillation

data distillation은 정말 말 그대로, 데이터 "압축" 이다. 

60K의 MNIST를 학습하지 않고, 이를 압축한 데이터 10장을 사용하더라도 94%의 정확도를 낼 수 있다는 것이다.

 

 


Algorithm은 다음과 같다.

  1. 압축할 생성 데이터 $\bar{x}$ 를 초기화한다.
  2. real training data에서 batch를 sampling한다.
  3. 랜덤 초기화한 모델 $n$ 개를 생성한다.
  4. $\bar{x}$를 초기화한 모델에 넣고, 초기화 모델을 업데이트한다.
  5. real training data를 업데이트한 모델에 넣고 loss를 계산한다.
  6. 4~5를 $n$번 반복하면서 loss를 쌓는다.
  7. 이렇게 구한 loss로 생성데이터 $\bar{x}$를 학습한다.

 

왜 랜덤 초기화 모델을 사용하는가?

* 학습되지 않은 다양한 랜덤 모델에서도 잘 되는 "일반화"를 노렸다.

 

 

단점은?

* 모델의 loss를 사용하다보니,ResNet18로 데이터를 압축하고 이 압축된 데이터를 다른 곳에서 사용하면 성능이 크게 하락한다.

 

 

어떻게 해결할 수 있을까?

* 모델에 독립적으로 작동할 수 있도록, 모델의 loss를 사용하지 말자.

 

 

이제 위의 문제를 해결할 수 있는 방법이 Coreset Selection 이다.

 

 

 

Coreset Selection

"전체 데이터셋을 대표하는 sample 데이터를 고르자"

위 submodular gains $P(x_{k}$ 를 최대화할 수 있는 $x_{k}$를 고르는 방법이다.

 

$C_{1}(x_{k})$의 경우 선택했던 coreset의 sample들과 $x_{k}$의 feature distiance는 커야하며 (다양성, $x_{k}$는 선택된 데이터와 다름)

선택되지 않은 sample들과, $x_{k}$의 feature distance는 작아야한다. (대표성, $x_{k}$는 남은 데이터를 대표할 수 있음.)

 

이 방법은, gradient를 사용하지 않기 때문에 다양한 모델에 적용이 가능하다.

 

 

 

Data Quantization

 

이 논문에서는 Coreset Selection의 방법이 다양성이 부족하다고 이야기한다.

항상 전체 데이터 distribution에서 선택하기 때문에, High-density regions에 있는 샘플이 과도하게 선택될 수 있다.

데이터의 압축률이 올라가면, $C_{1}(x_{k})$의 term이 작고, $C_{2}(x_{k})$의 영향만 커지게 된다.

 

저자들은 이러한 현상을 해결하기 위해 "Bin"을 도입했다.

1. 현재 $n$ step에서 submodular gains $P(x_{k})$를 최대화 시킬 수 있는 $x_{k}$를 뽑는다.

2. 다음 $n+1$ step에서, 뽑지 않은 데이터중에서 다시 $P(x_{k})$를 최대화 시키는 $x_{k}$를 뽑는다.

이 과정을 반복하면, bin은 데이터가 겹치지 않게 나눠질 것이다.

 

그 다음, 각 bin에서 균등하게 random sample하는 방법이다.

 

 

원래의 Coreset selection의 경우에는, 항상 동일한 distribution에서 다 뽑았기 때문에, 다양성이 확보가 안될 수 있지만

Data Quantization은 Bin을 나누고, Bin에서 각각 random하게 뽑았으니, 다양한 distribution에서 동일하게 sampling할 수 있다는 이야기다.

 

+ 여기에 data 저장공간을 줄일 수 있는 gradcam score based pruning + MAE reconstruction이 있긴 한데, 내용에선 뺐다. 

ResNet18-gradcam -> dropping -> pretrained MAE reconstruction

 

 

 

Experiments

낮은 압축률, 높은 압축률에서 다 성능이 좋았다.

무엇보다 기존 SOTA DM(data distillation) 방법에 비해서 약 380배정도 빨라졌다고 한다. (근데 원래 data distillation이 28,000 gpu시간쯤 걸렸다.)

 

기존 DM방법과 다르게, ResNet18에서 만든 $S^{*}$가 다른 아키텍쳐에서도 성능이 좋았다.

 

 

 

6줄 요약

“Gradient로 생성하는 압축 데이터셋은 다른 모델에서 안좋다.”

원본 데이터셋을 샘플링하는 Coreset selection을 사용하자

근데, Coreset selection에서 다양성이 확보가 안되는 문제가 있더라

다양성을 기준으로 데이터를 bin만큼 나누고, 나눈 데이터에서 uniform 하게 샘플링하자

데이터 압축을 하기 위해서, GradCAM으로 날리고, 사용할때는 MAE로 사용할 수 있다.”

성능도 높고, 기존 distillation 방법보다 약 400배 더 빠르다

 

 

+ Recent posts