PTQ Failure Diagnosis

마지막 수정:

Draft
설명: 점검 전 위젯: 점검 전 링크: 점검 전
quantizationptqqatdiagnosismixed-precisionevaluation

PTQ가 실패했다는 말은 충분하지 않다.

중요한 질문은 이것이다.

모델이 어디서, 어떤 방식으로 망가졌는가?

QAT는 비용이 큰 처방이다. 그래서 바로 QAT로 가기 전에, 먼저 PTQ 실패를 분해해야 한다.

1

Bit-width sweep

FP baseline, INT8, INT4를 같은 eval set에서 비교한다.

INT8 ok / INT4 fail
2

Layer sensitivity

한 번에 한 layer만 quantize해서 drop ranking을 만든다.

hot layer or no hot layer
3

Slice degradation

class, prompt type, domain별로 어떤 slice가 망가졌는지 본다.

localized quality loss
4

Confidence shift

accuracy가 유지돼도 margin, entropy, logprob이 흔들렸는지 본다.

hidden fragility

Concentrated

Evidence
one layer or slice dominates
Action
mixed precision / layer fallback

Diffuse

Evidence
small errors compound across layers
Action
QAT candidate

Catastrophic

Evidence
near random chance
Action
raise bit-width or change scheme
PTQ failure diagnosis turns one bad metric into a treatment choice. The main question is whether damage is concentrated enough to target, or diffuse enough to justify QAT.

먼저 bit-width sweep을 한다

가장 먼저 FP baseline과 여러 bit-width의 PTQ 결과를 비교한다.

FP16 baseline -> task metric 측정
INT8 PTQ      -> delta 확인
INT4 PTQ      -> delta 확인

예를 들어:

FP16: 92.4%
INT8: 92.0%  (-0.4%)
INT4: 51.0%  (-41.4%)

이 결과는 INT8은 괜찮지만 INT4는 거의 무너졌다는 뜻이다. 여기서 멈추면 “INT4는 안 된다”가 되지만, 5장의 핵심은 여기서 한 단계 더 들어가는 것이다.

Layer sensitivity로 내부 원인을 찾는다

Layer sensitivity analysis는 layer를 하나씩만 quantize해 보면서 task metric이 얼마나 떨어지는지 보는 방법이다.

baseline model
-> layer 1만 INT4로 변경
-> 평가

baseline model
-> layer 2만 INT4로 변경
-> 평가

결과가 이렇게 나오면:

layer 1 only -> -0.2%
layer 2 only -> -0.1%
layer 3 only -> -26.0%
layer 4 only -> -0.3%

문제는 전체 모델이 아니라 layer 3에 몰려 있다.

이런 경우에는 전체 QAT보다 mixed precision이나 layer fallback이 먼저다.

layer 3 -> INT8 or FP16 유지
나머지 -> INT4

Class나 slice별 degradation을 본다

전체 평균 accuracy는 문제를 숨길 수 있다.

overall:
FP16 90%
INT4 87%

겉으로는 괜찮아 보이지만 class별로 보면 다를 수 있다.

common class A: 92% -> 91%
common class B: 90% -> 89%
rare class C:   88% -> 68%

이 경우 양자화는 전체를 균등하게 망가뜨린 것이 아니라 특정 slice를 크게 망가뜨렸다.

LLM에서는 class 대신 slice로 보면 된다.

short QA
long-context summarization
code generation
math reasoning
Korean prompts
safety / refusal cases
tool-use prompts

평균 benchmark가 괜찮아도 code나 long-context만 크게 떨어지면 deployment에서는 실패일 수 있다.

Confidence shift는 숨은 약화를 잡는다

Accuracy가 그대로여도 모델의 confidence는 흔들릴 수 있다.

FP16:
correct class 0.91
second class  0.06

INT4:
correct class 0.53
second class  0.35

둘 다 정답을 맞혔다면 accuracy는 변하지 않는다. 하지만 margin이 크게 줄었다.

지금은 맞지만,
조금 더 어려운 input에서는 뒤집힐 수 있음

반대로 과하게 확신하는 것도 문제다.

FP16:
correct class 0.70

INT4:
correct class 0.99

이 경우 모델이 불확실해야 할 상황에서도 과신할 수 있다. Confidence shift는 accuracy로 아직 드러나지 않은 quantization damage를 보는 신호다.

LLM에서는 다음 신호가 비슷한 역할을 한다.

validation loss / perplexity 증가
정답 token logprob 감소
multiple-choice margin 감소
같은 prompt에서 답변 변동성 증가

Concentrated failure와 diffuse failure를 나눈다

진단 결과는 크게 두 가지로 나뉜다.

concentrated failure:
특정 layer나 slice가 대부분의 손실을 만든다

diffuse failure:
작은 quantization error가 여러 layer를 지나며 누적된다

Concentrated failure라면 비싼 QAT보다 targeted fix가 먼저다.

mixed precision
layer fallback
특정 layer의 granularity 조정

Diffuse failure라면 모델 전체가 낮은 precision 세계에 적응해야 한다. 이때 QAT가 의미를 가진다.

fake quantization을 넣고 fine-tune
-> 모델이 rounding / clipping noise를 경험
-> INT grid에 맞는 weight 배치를 학습

판단 규칙

INT8 PTQ가 baseline과 거의 같다
-> PTQ로 끝

INT4 PTQ가 나쁘지만 특정 layer가 지배한다
-> mixed precision / layer fallback

각 layer는 조금씩만 나쁜데 전체가 크게 나쁘다
-> QAT 후보

성능이 random chance에 가깝다
-> bit-width, granularity, quantization scheme 재검토

QAT는 “PTQ보다 고급이라서 쓰는 방법”이 아니다. PTQ 실패를 진단한 뒤, 더 싼 처방으로 해결되지 않을 때 쓰는 훈련 기반 처방이다.

확인

  • Layer sensitivity analysis는 무엇을 하나씩 바꿔 보며 측정하는가?
  • Class나 slice별 degradation이 전체 accuracy보다 더 중요한 경우는 언제인가?
  • Concentrated failure와 diffuse failure는 처방이 어떻게 다른가?