Knowledge Distillation

이정훈·2026년 1월 13일

Knowledge Distillation

Forward KL: KL[Pt][Ps]KL[P_t][P_s]: teacher와 student의 logit이 완화되는 loss function
Reverse KL: KL[Ps][Pt]KL[P_s][P_t]: logit이 하나만 가지도록 하는 loss function

  1. Response-based KD
    T와 S의 답(softmax의 결과)을 비교하는 방법

  2. Feature-based KD
    layer간의 feature, activation map, attention map..을 비교하는 방법

  • NST ()
    cosine simmilality를 구해서 분포를 맞춰주는 방식

  • Factor Transfer
    attention Transfer는 추상화 된 개념이사 KD가 잘안된다 -> factor Transfer: Auto encoder으로 feature를 압축시켜서 student로 전달

    큰 모델을 만들어서 ** block importance 측정 & 필요 없는거 제거 -> feature-based KD -> importance 측정 ... 으로 모델 사이즈를 줄이는 방식으로 쵝근에 많이 사용

  1. Stuctural / Functional KD
    (Distillation of structure, not value)
    Matching relational information: FSP(flow of solution procedure)는 레이어에서 input에서 output이 나오기 까지 변화는 과정을 의미하며, 이 과정을 학습 시키는 것
    Relations between different samples: vector들간의 관계(distance)를 KD한는 법

Model Compression Technuques
Quantization FP16 -> FP8
W(weight) x A(activation)이고 Quantization한다는거는 W의 bit수를 낮춘다는 의미
FP format에서 BF format으로 변경 ==> 부동 소숫점 bit수를 희생 + sacle값으로 norm 해주는 효과
NF4 --> GPU메모리가 부족해서 모델을 압축해서 파인튜닝 하고싶다
FP4 --> 메모리가 충분해서 압축없이 그대로 때려박아 TP를 올리고 싶다

PTQ vs QAT
PTQ는 inference단게에서만 quantize시켜준거라 메모리를 절약시켜서 infer해줄수 있음(error로 인한 acc 저하 발생) --> error를 학습시켜보자하는게 QATl
in PTQ, channel마다 분포가 다르기 때문에 Per-Channel Scale Facter를 두는게 일반적
However, 작은 모델에 대해서는 성능이 잘안나옴
in QAT, 학습또한 quantazation하겠다. 그렇다면 미분이 불하능한(q(x))함수는? --> bypass하자
non-linear한 함수는 quan적용, linear한 함수(softmax)는 다시 dequantize해주는게 일반적(정확도를 위해)
train이후에 inference단계에서도 quan된 값으로 하자

Parameter Pruning
0과 가까운 값을 가진 파라미터는 계산하지 않음
HW based 방법론이라 s/w 적으로는 잘 쓰이지 않음
큰 맥락으로는 dense mat을 spase mat으로 바꿔서 연산, space로 어떻게 바꾸느냐? -> elememt-wise로 할거냐? vector-wise로 할꺼야? 에 따라 방법론이 달라짐

Low-Rank Approximation: LoRa QK로 만들어진 semetric행렬을 두 백터로 나타내어 메모리를 줄임

KD(knowlidge Distilation)

KV cache 메모리를 줄이기 위한 방안
GQA(Grouped-query attention) 실제로 많이 쓰이고 있음

profile
AngDDo

0개의 댓글