localaiforum
로그인
가이드 › 모델과 포맷

양자화 깊게 보기

양자화는 가중치를 16비트 부동소수점에서 더 적은 비트로 줄여, 작은 품질 손실을 큰 메모리 절약과 맞바꿉니다. 한 줄 요약(Q8 ≈ 무손실, Q4_K_M ≈ 스윗 스팟, Q3 미만은 손상)만으로 시작하기엔 충분합니다. 이 페이지는 한 단계 아래를 봅니다. 태그가 실제로 무엇을 하는지, K-quant와 I-quant가 어떻게 다른지, 품질 손실이 어디서 먼저 드러나는지.

4비트가 애초에 작동하는 이유

학습된 가중치는 균등한 잡음이 아닙니다. 각 텐서의 값들은 좁고 대략 종 모양의 분포에 뭉쳐 있고, 네트워크의 동작은 그 분포의 모양이 운반합니다 — 개별 가중치의 마지막 자리 숫자가 아니라. 그래서 가중치는 압축 가능합니다. 각 가중치를 작은 정수와 공유 스케일 인수로 저장하면, 잃는 것은 미세 디테일뿐입니다.

현실의 복잡성 하나: 아웃라이어 채널. 아주 일부의 채널이 나머지보다 훨씬 큰 활성화를 운반합니다. 텐서 전체에 스케일 하나면 그 범위 전부를 아웃라이어에 쓰고 나머지를 진흙으로 짓누릅니다. 모든 제대로 된 양자화 방식은 근본적으로 아웃라이어 처리 방식입니다 — 블록별 스케일, 활성화 인지 보호(AWQ), 또는 실제 데이터에 대한 캘리브레이션(imatrix).

블록 양자화 메커니즘

핵심 트릭: 각 텐서를 스케일 하나를 공유하는 작은 블록으로 자릅니다. 가중치의 역양자화는 곱셈 하나입니다:

w ≈ s · q                       # s: block scale, q: stored integer

Q4_0:     block = 32 weights → 1×fp16 scale + 32×4-bit ints ≈ 4.5 bpw
K-quants: super-block = 256 weights
          1×fp16 super-scale + 8×fp8 sub-scales + ints ≈ 4.8 bpw

bpw는 스케일 오버헤드를 포함한 가중치당 비트입니다. 그 오버헤드 때문에 아무것도 정확히 4.0이 아닙니다. 4비트 가중치는 반 바이트이고, 2바이트 스케일을 가중치 32개에 뿌리면 0.5 bpw가 더해집니다. K-quant는 두 단계 스케일링으로 비용을 분산합니다 — 256개 가중치 슈퍼블록의 8개 서브블록이 값싼 fp8 스케일을 받습니다 — 그리고 비슷한 크기에서 Q4_0보다 나은 품질로 ~4.8 bpw에 착륙합니다.

K-quant와 _M / _S 접미사

Q4_K_M은 "모자 쓴 Q4_K"가 아닙니다 — 접미사는 믹스입니다. 양자화기는 대량은 Q4_K에 둔 채 특정 텐서를 더 높은 quant로 올립니다. 보통 어텐션 사영(wv, wo)과 때로 토큰 임베딩 테이블이 Q6_K로 갑니다. 접미사는 믹스의 등급입니다:

  • _S (small) — 올라가는 텐서가 가장 적고, 파일이 가장 작음
  • _M (medium) — 기본 추천, 크기/품질 균형의 최적점
  • _L (large) — 더 많은 텐서가 더 높은 정밀도, 수익 체감

믹스가 존재하는 이유는 층이 고르게 나빠지지 않기 때문입니다. 어텐션 사영과 임베딩은 거대한 피드포워드 행렬보다 민감합니다. 거기 몇백 MB를 더 쓰면 실제 품질을 삽니다 — 그래서 순수 Q4_K 대신 _M이 커뮤니티 기본값입니다.

I-quant: 캘리브레이션되고, 더 작고, CPU에서 느림

IQ quant(IQ4_XS, IQ3_XXS, IQ2_XS…)는 캘리브레이션 단계를 추가합니다. 먼저 대표적인 텍스트 표본으로 모델을 돌려 **중요도 행렬(imatrix)**을 계산하고, 그다음 중요한 가중치가 실제로 있는 곳에 양자화 레벨을 배치합니다. 보상: 동급 K-quant보다 작은 크기에 같은 품질 — IQ4_XS는 Q4_K_S보다 작은 크기로 같거나 더 나은 품질을 내고, IQ2/IQ3은 3 GB 미만의 7–8B 모델을 애초에 가능하게 만듭니다.

트레이드오프는 디코드 속도입니다. I-quant의 역양자화는 단순 곱셈이 아닙니다 — 2의 거듭제곱이 아닌 룩업과 구조화된 재구성이 필요합니다. CPU에서는 이 추가 산술이 tokens/sec에 보입니다. GPU에서는 메모리 레이턴시 뒤에 숨어 거의 공짜입니다. 법칙: CPU 박스에는 K-quant, GPU에서는 I-quant 무방, IQ2/IQ3은 VRAM이 강요할 때만.

품질 사다리, 정직하게

7–8B 모델의 근사 파일 크기. 파라미터에 대략 선형으로 스케일합니다 — 14B는 대략 두 배:

Quant 크기 bpw 정직한 품질 비고
Q8_0 8.5 GB 8.5 투명; FP16과의 블라인드 A/B에서 살아남음
Q6_K 6.6 GB 6.6 거의 투명; 편집증 직전의 마지막 정거장
Q5_K_M 5.7 GB 5.7 약간의 손실, 챗에서는 체감 어려움
Q4_K_M 4.9 GB 4.8 스윗 스팟; 벤치마크 한 자릿수 저율 하락
IQ4_XS 4.5 GB 4.25 ≈ Q4_K_S 품질, 더 작음; GPU 권장
Q3_K_M 3.9 GB 3.9 사실 회상과 수학에서 체감됨
IQ3_XXS 3.2 GB 3.1 유창한 챗, 흔들리는 사실; 사실상 GPU 전용
Q2_K 3.2 GB 3.4 최후 수단 — 개성은 살고 정밀도는 죽음

정확한 퍼센트는 속설 정도로만 취급하세요. 손실은 모델, 언어, 과제에 의존합니다. 크기 순위는 숫자가 바뀌어도 안정적입니다.

양자화가 먼저 아프게 하는 곳

손상은 능력에 걸쳐 균등하지 않습니다. 대략 무너지는 순서대로:

  1. 사실 회상 — 이름, 날짜, 숫자가 먼저 표류합니다. Q3 모델은 자신만만하게 잘못 귀속합니다.
  2. 수학과 다단계 추론 — 작은 오차가 사슬을 타고 복리로 쌓입니다.
  3. 롱 컨텍스트 일관성 — 긴 프롬프트 깊은 곳에서의 회상이 짧은 프롬프트 동작이 암시하는 것보다 흔들립니다.
  4. 저자원 언어 — 무거운 quant에서 한국어는 영어보다 먼저 저하됩니다. 한국어 토큰은 학습에서 더 드물었으므로 정밀도 여유가 더 적습니다. 한국어가 중요하면 가능한 한 Q5+를 유지하세요.
  5. 챗 유창성과 스타일 — 거의 드러나지 않습니다. Q2 모델도 여전히 듣기엔 괜찮습니다. 그게 함정입니다. 유창함은 손상의 나쁜 대리지표입니다.

작은 모델이 더 크게 다칩니다

양자화 오차는 여유분을 먹고, 작은 모델은 여유분이 가장 적습니다. Q4의 70B는 거의 아무것도 잃지 않습니다. Q4의 3B는 눈에 띄게 더 잃습니다. ~2B 미만에서는 무거운 quant가 모델을 파냅니다. 실용 규칙: 파라미터 ~4B 미만에는 Q6_K 또는 Q8_0 — 작은 모델을 짓눌러 절약하는 절대 GB는 어차피 근소합니다. 비트를 어디에 쓸지 정하기 전에 파라미터에서 크기 대 능력 기준선을 얻으세요.

KV 캐시는 별도의 결정입니다

가중치를 양자화해도 KV 캐시에는 아무것도 하지 않습니다 — 그것은 자기만의 메모리 항목입니다(기본 fp16, llama.cpp에서 q8_0/q4_0로 별도 양자화 가능). 긴 컨텍스트에서는 캐시가 가중치와 맞먹을 수 있습니다. KV 캐시에서 독립적으로 예산을 잡으세요.

실용 의사결정 사다리

계산 예제 — 12 GB 카드, 8B 덴스 모델, 8k 컨텍스트:

weights    Q4_K_M                 4.9 GB
KV cache   8k tokens, fp16        1.0 GB    (8B GQA ≈ 128 KiB/token)
overhead   compute buffers + ctx  ~1.5 GB
─────────────────────────────────────────
total                             ~7.4 GB  → 여유를 두고 들어감

VRAM 계산을 전제로 한 사다리:

  1. 예산: VRAM − 컨텍스트 − 오버헤드 = 가중치에 남는 것.
  2. Q6_K가 들어가면 → Q6_K를 돌려 보세요. Q4_K_M만 들어가면 → 죄책감 없이 Q4_K_M를 돌려 보세요.
  3. IQ4_XS/Q3까지 내려가는 것은 컨텍스트를 맞추거나 CPU 오프로드를 피하기 위해서만 — 오프로드는 quant 한 단계가 품질에 치르는 것보다 더 많은 속도를 치릅니다.
  4. 목표 모델이 Q4에 안 들어가면, Q2까지 양자화하기보다 크기급을 한 단계 내리세요. Q4의 튼튼한 8B가 실전에서 짓눌린 14B를 대체로 이깁니다.

관련: VRAM 계산 · KV 캐시 · 파라미터 · 모델 포맷