Authors: Yuhang Li, Youngeun Kim, Donghyun Lee, Priyadarshini Panda
Published Year: 2024
Journal/Conference: ECCV 2024
Keywords: Quantization
Read Status: Completed
URL: https://arxiv.org/abs/2312.05272
목적
Quantization error를 완화하기 위해서는 훈련 데이터가 필요함.
ZeroQ와 같이 Distilled Dataset 생성하여 훈련 데이터 대체했던 방법(Data-free Quantization) 존재
But 한계점도 동시에 존재
기존 방식: Image Inversion & GAN 기반으로 data 합성(생성)
한계점
계산 효율성이 매우 떨어짐 (계산 비용이 너무 높음)
Batch Normalization(BN) Layer가 없는 모델은 활용할 수 없음.
세가지 핵심 기여
GenQ 방식 제안, text-to-image 모델(Diffusion model)을 데이터 합성(Data-free Quantization)에 활용한 최초의 시도, 합성 데이터와 실제 데이터 간의 분포 차이를 줄이기 위한 “에너지 점수 필터링”, “배치정규화 분포 필터링” 제안
데이터가 부족한 경우를 위해 실제 데이터를 이용해 “토큰 임베딩”을 학습하여 학성 데이터 생성
SOTA 달성, PTQ/ QAT 에서 모두 SOTA 달성
사전 지식
Quantization
wint=clip(⌊sw⌉+z,n,p)
변수 설명 w: 양자화하려는 원본 가중치 (실수) / wint: 정수화된 가중치 s: step size ⌊⌉: 반올림 연산 z: 제로 포인트 벡터 (실수의 0이 어떤 정수 값에 매핑되는지) z=−⌊smin(w)⌉n,p: 양자화된 정수 값의 하한/ 상한 (uniform quant→n=0,p=2b−1)
wq=s(wint−z)
변수 설명 wq: 양자화된 가중치 (정수화된 가중치를 실수 스케일로 변환)
QAT
LSQ(Learned Step Size Quantization)
s를 고정된 값이 아닌 gradient descent를 이용해 최적의 값을 찾음
STE(Straight-Through Estimator)
반올림 연산이 미분 불가능하기에, 역전파 과정에서 반올림 함수의 그레디언트를 1로 가정 → s,w에 대한 그레디언트 계산 가능
(∂x∂⌊x⌉=1)
PTQ
양자화 오차(∣∣w−wq∣∣2)를 최소화하는 s를 찾음
추가적으로 weight rounding을 통해 모델 성능 향상
Stable Diffusion Dataq Generation
Stable Diffusion → DDPM(Denoising Diffusion Probabilistic Model)을 이용
구성 요소 τθ(⋅): 텍스트 인코더 E(⋅): 이미지 인코더 D(⋅): 이미지 디코더 ϵθ(⋅): Denoising U-Net (노이즈 제거)
추론 과정 (Inference Process)
가우시안 분포 N(0,1)에서 무작위 노이즈 잠재 이미지 z 샘플링
텍스트 프롬프트를 s라 가정, denoising U-net이 cross-attention layer를 이용해 텍스트 인코더 τθ(s)와 이미지(z) 융합 → 점진적으로 이미지의 노이즈 제거
T 타임스텝 만큼의 노이즈 제거 과정 이후, 이미지 디코더 D(⋅)에 의해 디코딩 되어 고해상도 이미지 생성
학습 과정 (Training Process)
원본 이미지 x를 이미지 인코더 E(x)를 통해 잠재 벡터 x^0로 압축
x^0=E(x)
잠재 벡터 x^0에 점진적으로 노이즈 추가(Diffusion process), t 시점의 노이즈가 추가된 잠재 벡터 x^t → Markov chain process
q(x^t∣x^t−1)=N(x^t;1−βtx^t−1,βtI)
βt: 노이즈의 양을 조절하는 하이퍼 파라미터
t가 커질수록 (시간이 경과할수록) 완전한 노이즈 z에 가까워짐 (t=T,x^t=z)
U-Net 학습, t 시점의 노이즈 낀 잠재 벡터 x^t 와 t를 입력받아, 원본 잠재 벡터에 추가되었던 노이즈 ϵ 예측하도록 학습
θminEt∼U(1,T),ϵ∼N(0,I)λ(t)∣∣ϵ−ϵθ(x^t,t)∣∣F2
λ(t): positive weighting function
ϵ: xt에서 예측한 노이즈 벡터
U-Net이 예측한 노이즈 ϵθ(x^t,t)가 실제 추가된 노이즈 ϵ과 최대한 같아지도록 U-Net의 파라미터 θ 최적화
방법
Data-Free GenQ
실제 데이터가 전혀 없을 때, 클래스 이름만으로 데이터 생성 및 필터링
Label Prompt Method
Prompt="A photo of a {D}{C}" 형태의 간단현 프롬프트로 이미지 생성
{C}: 고양이, 개 와 같은 클래스 이름, {D}: nice, dark와 같은 형용사 템플릿
문제점: 레이블에만 의존/ 실제 데이터의 분포를 반영하지 못함(분포 불일치 문제(OOD) 발생)
Model-Dependent Selection (필터링)
위 문제점 해결하고 더 나은 품질의 데이터 얻기 위해 2단계 필터링
Energy Filtering
생성된 이미지를 pre-trained된 모델에 넣어 energy score 계산
energy score: 생성된 이미지가 얼마나 익숙한지 (낮을 수록 익숙함)
E(x,f)=−αi=1∑Cefi(x)/α
C,α: 이미지 클래스의 수/ 온도(temperature)
모델에게 낯선 데이터(OOD(Out-of-Distribution))는 여러 클래스의 로짓 값이 비슷
→ 전체 합이 커져 에너지 점수 높아짐
에너지 점수가 낮은 이미지를 선택하여 1차 필터링
BatchNorm Distribution Filtering (CNN 모델)
목적: 데이터의 일관성 확보
기존 방식 문제점
BN 통계치가 배치 단위로 계산되므로 부정확함
제안 방법
BN sensitivity: 한 이미지가 배치 전체의 통계에 얼마나 큰 영향을 미치는지 (민감도)
S(xi)=DBN({xj}j=1B)−DBN({xj}j=1,j=iB)
S(xi): 전체 배치의 BN 오차에서 i번째 이미지를 뺐을 때의 BN 오차를 뺀 값
BN sensitivity가 큰 이미지를 이상치로 간주 및 제거
Patch Similarity Filtering (ViT 모델)
데이터의 정보량과 다양성 확보
ViT 모델은 BN layer가 없기에 다른 필터링 방식 필요
→ 이미지 내 patch들의 다양성을 측정하여 정보의 풍부함 평가
제안 방법
ViT의 출력 피처맵을 패치 단위로 나누고, 모든 패치 쌍 간의 코사인 유사도 계산
Γ(oi,oj)=∣∣oi∣∣∣∣oj∣∣oi⋅oj
oi: 출력 피처맵의 i번째 패치
위 코사인 유사도 값들의 분포를 이용해 Differential Entropy 계산
H=−∫f^h(x)⋅log[f^h(x)]dx
유사도 낮음(패치들이 서로 다름) → 엔트로피 커짐 → 선택
유사도 높음(단조로운 이미지) → 엔트로피 낮음 → 선택 X
필터링 정리
모든 생성된 이미지에 대해 에너지 필터링 적용
CNN 모델 → BN Filtering / ViT 모델 → Patch Similarity Filtering 적용
최종 선택된 데이터셋을 양자화에 사용
Data-Scarce GenQ
데이터가 한정된 경우(적은 경우) 사용 (ex) 1-shot learning)
Token Embedding Learning
Prompt[i]="A photo of a {C[i]} in the style of {S}"