Google이 Gemma 4 QAT 모델을 q4_0 대신 현대적인 q4_k에 맞춤으로써 더욱 개선할 수 있는 가능성
요약
Gemma 4 26b QAT 모델과 최신 Q4_K 양자화 모델을 비교 분석한 결과입니다. QAT가 메모리 효율은 높지만, 정밀도가 중요한 코드 생성 및 창의적 글쓰기 분야에서는 Q4_K 방식보다 성능 퇴보가 발생할 수 있음을 지적합니다.
핵심 포인트
- QAT 모델은 메모리 소비를 줄이는 데 효과적임
- 정밀도가 중요한 작업에서 Q4_K 양자화 모델이 더 우수한 성능을 보임
- 긴 컨텍스트 처리 시 높은 정밀도가 오류 누적 방지에 필수적임
- Gemma 4 QAT 모델을 현대적인 q4_k 방식으로 최적화할 필요성 제기
안녕하세요, 지난 며칠 동안 저는 Gemma 4 26b QAT UD Q4_K_XL을 Bartowski의 Q4_K_L과 비교하여 광범위하게 벤치마킹해 왔습니다. QAT가 그의 가장 높은 q4 양자화 (quant) 모델과 비교했을 때 메모리 소비를 줄이는 데 확실히 매우 효과적이기는 하지만, 모델 제공업체들이 이를 학습에 사용하는 것을 원치 않기 때문에 공유할 수는 없으나 저의 자체적인 내부 벤치마크에서 몇 가지 퇴보 (regressions)를 발견했습니다. 이러한 벤치마크에는 모델이 고정관념에서 벗어나 생각해야 하고 컨텍스트 (context) 상 아주 오래전의 정보도 참조해야 하는 코드 및 창의적 글쓰기 분야의 실제 사용 사례도 포함되어 있어, 모델이 제가 요청하는 바를 수행하기 위해서는 높은 정밀도 (precision)가 매우 중요합니다. 다른 이들은 정밀도를 요구하는 지식 테스트를 수행하기도 합니다. 기본적으로 QAT 모델은 일부 영역에서는 더 똑똑했지만, 충실도 (fidelity) 측면에서 전반적인 개선이라고 말할 수는 없습니다. 어떤 영역에서는 Q4_K_L이 통계적으로 유의미할 정도로 더 나았으며, 제가 왜 이러한 결과들을 보고 있는지에 대해 꽤 확실한 이론을 가지고 있습니다. 비-QAT (non-QAT) 모델에서 텐서 (tensors)가 어떻게 양자화 (quanted)되는지 살펴보겠습니다.
token_embd.weight [2 816, 262 144] Q8_0 blk(30) blk.0(19) blk.0.attn_k.weight [2 816, 2 048] Q8_0 blk.0.attn_k_norm.weight [256] F32 blk.0.attn_norm.weight [2 816] F32 blk.0.attn_q.weight [2 816, 4 096] Q6_K blk.0.attn_q_norm.weight [256] F32 blk.0.attn_v.weight [2 816, 2 048] Q8_0 blk.0.ffn_down.weight [2 112, 2 816] Q8_0 blk.0.ffn_down_exps(2) blk.0.ffn_down_exps.scale [128] F32 blk.0.ffn_down_exps.weight [704, 2 816, 128] Q8_0 blk.0.ffn_gate.weight [2 816, 2 112] Q4_K blk.0.ffn_gate_inp(2) blk.0.ffn_gate_inp.scale [2 816] F32 blk.0.ffn_gate_inp.weight [2 816, 128] F32 blk.0.ffn_gate_up_exps.weight [2 816, 1 408, 128] Q4_K blk.0.ffn_norm.weight [2 816] F32 blk.0.ffn_up.weight [2 816, 2 112] Q4_K blk.0.post_attention_norm.weight [2 816] F32 blk.0.post_ffw_norm.weight [2 816] F32 blk.0.post_ffw_norm_(2) blk.0.post_ffw_norm_1.weight [2 816] F32 blk.0.post_ffw_norm_2.weight [2 816] F32 blk.0.pre_ffw_norm_2.weight [2 816] F32 blk.0.attn_output.weight [4 096, 2 816] Q5_K blk.0.layer_output_scale.weight [1] F32 여기서 볼 수 있듯이, 토큰 임베딩(token embeddings)과 어텐션 레이어와 같은 중요한 레이어들은 Q8_0으로 양자화되었습니다. 따라서 UD Q4_K_XL이나 Q4_K_L 같은 최신 Q4_K 양자화 방식에서는 정밀도가 매우 높습니다. 더 높은 정밀도는 특히 긴 컨텍스트 크기에서 오류가 누적될 가능성을 줄여줍니다. 이제, QAT 버전은 어떻게 보일까요?
(UD_q4_K_XL) token_embd.weight [2 816, 262 144] Q4_0 blk(30) blk.0(19) blk.0.attn_k.weight [2 816, 2 048] Q4_0 blk.0.attn_k_norm.weight [256] F32 blk.0.attn_norm.weight [2 816] F32 blk.0.attn_q.weight [2 816, 4 096] Q4_0 blk.0.attn_q_norm.weight [256] F32 blk.0.attn_v.weight [2 816, 2 048] Q4_0 blk.0.ffn_down.weight [2 112, 2 816] Q4_0 blk.0.ffn_down_exps(2) blk.0.ffn_down_exps.scale [128] F32 blk.0.ffn_down_exps.weight [704, 2 816, 128] Q4_0 blk.0.ffn_gate.weight [2 816, 2 112] Q4_0 blk.0.ffn_gate_inp(2) blk.0.ffn_gate_inp.scale [2 816] F32 blk.0.ffn_gate_inp.weight [2 816, 128] F32 blk.0.ffn_gate_up_exps.weight [2 816, 1 408, 128] Q4_0 blk.0.ffn_norm.weight [2 816] F32 blk.0.ffn_up.weight [2 816, 2 112] Q4_0 blk.0.post_attention_norm.weight [2 816] F32 blk.0.post_ffw_norm.weight [2 816] F32 blk.0.post_ffw_norm_(2) blk.0.post_ffw_norm_1.weight [2 816] F32 blk.0.post_ffw_norm_2.weight [2 816] F32 blk.0.pre_ffw_norm_2.weight [2 816] F32 blk.0.attn_output.weight [4 096, 2 816] Q4_0 blk.0.layer_output_scale.weight [1] F32 이제 q4_0 정밀도에서 훨씬 더 많은 레이어들이 있음을 알 수 있습니다. 이는 Google이 모델을 q4_0에 맞춰 양자화 인식(quantization aware)으로 훈련했기 때문에 당연한 일입니다. 즉, Google은 여러 중요한 레이어가 q4_0에 있음에도 불구하고, 양자화 과정에서 발생하는 노이즈를 인지하도록 모델을 훈련시켰다는 의미이며, 이 노이즈를 상당히 잘 처리할 수 있습니다. 만약 일반적인 비(非)QAT 모델에 이 레시피를 적용하여 양자화를 한다면, 결과는 아마도 재앙적일 것입니다. 하지만 QAT의 경우, 품질이 비교적 잘 유지되어 가중치를 훨씬 뛰어넘을 수 있게 합니다. 그러나 QAT가 마법은 아닙니다. q8_0과 q4_0 사이의 정보 손실은 거대하며, 특히 더 긴 컨텍스트에서는 오류가 축적됩니다. 제 벤치마크에서 낮은 컨텍스트나 높은 컨텍스트 모두 어느 시점에서 충실도(fidelity)의 손실을 확실히 볼 수 있습니다. 하지만 이는 사용 사례에 크게 좌우되므로, 사용자마다 경험이 다를 수 있습니다.
Google의 차기 QAT 모델에 대해 제가 제안하는 바는, 위에서 링크한 것과 같은 현대적인 q4_k 포맷을 QAT 모델이 인지하도록 정렬(align)하는 것입니다. 이 포맷에서는 많은 핵심 레이어(layers)들이 단순한 q4_0 대신 q6k 및 q8_0로 양자화(quantized)됩니다. 단점은 메모리 소비량이 q4_K_L 및 UD_Q4_XL과 동일해져서, 현재의 QAT 모델보다 몇 백 메가바이트 정도 더 많아질 것이라는 점입니다. 하지만 솔직히 두 모델 모두 제 RAM에 들어가고 속도도 비슷하기 때문에, 저는 차라리 더 높은 품질을 선택하겠습니다. 이렇게 된다면 특정 도메인(domain)뿐만 아니라 모든 면에서 우리가 현재 실제로 사용하고 있는 q4k 양자화 모델들보다 확실히 훨씬 더 나은 양자화 모델이 될 것입니다. 이제 여러분은 "Google이 양자화되지 않은 QAT 모델을 공개했으니, 직접 만들면 되잖아요!"라고 말할지도 모릅니다. 안타깝게도 그것은 그렇게 간단하지 않습니다. Unsloth의 Daniel에게 물어보았더니, 일반적인 q4_k_xl 레시피(recipe)로 레이어들을 양자화하면 실제로 성능이 저하된다고 합니다. 따라서 Google은 아마도 임베딩(embeddings)과 어텐션(attention) 레이어들이 q4_0로 대폭 양자화되는 바로 그 레시피에 맞춰, 모델이 해당 양자화 방식에 인지하도록(quantization aware) 훈련했을 가능성이 높습니다. 그러므로 Google은 최상의 품질을 위해 현대적인 q4_k 포맷에 정렬된 QAT 모델을 훈련해야 하며, 저는 그들이 향후 이를 고려해주기를 진심으로 바랍니다. submitted by /u/dampflokfreund [link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기