AI Briefing

INT4 붕괴 해결

I found why KV cache INT4 breaks on some models (Qwen2-7B: ΔPPL +238) and built a 4-line fix  no training, no calibration, 12 models tested up to 40B

·2026.04.16 05:23

핵심 내용

KV cache INT4가 일부 모델에서 무너지는 원인을 찾고 4줄짜리 보정으로 개선했다.

자세히 보기

KV cache INT4 quantization이 모델마다 성능 차이가 극단적으로 나는 문제를 분석했다.

  • Falcon-40B: ΔPPL +0.08로 거의 손실이 없었지만
  • Qwen2-7B: ΔPPL +238로 출력이 사실상 붕괴했고
  • Pythia-6.9B: ΔPPL +22, Pythia-410M: ΔPPL +77처럼 모델별 편차가 컸다.

원인은 두 가지로 정리된다.

  • token-wise norm variation: Pre-LN 모델에서 토큰마다 KV 벡터 norm이 2~5배 흔들려 row 단위 absmax 양자화가 불안정해짐
  • activation outlier channels: 일부 채널이 평균보다 8~100배 커서 스케일을 독점하고 나머지 채널 정밀도를 망가뜨림

한쪽만 고치면 효과가 부족했다.

  • norm 분리만 적용: +57.5
  • per-channel만 적용: +97.8
  • 둘을 함께 적용: +0.32로 개선, 약 744배 향상

핵심 아이디어는 KV 벡터를 norm(16-bit scalar) 과 direction(unit vector) 으로 분해한 뒤, direction에 per-channel scaling을 적용하는 방식이다. 제시된 PyTorch 코드는 4줄 수준이며, 학습 없음, calibration 없음, 모델별 튜닝 없음으로 기존 양자화 앞단에 넣는 드롭인 전처리로 동작한다.

12개 모델(124M~40B) 테스트에서 대부분의 경우 손실을 크게 줄였고, 이미 잘 동작하던 모델은 거의 그대로 유지했다. 최악의 경우도 OPT-125m에서 ΔPPL +0.24 수준의 악화에 그쳤다.

이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.