MagicQuant (v2.0) - 하이브리드 혼합 GGUF 모델 + Unsloth 동적 학습 양자화 구성 + 압축된 승자 목록을 포함한
요약
MagicQuant는 하이브리드 GGUF 양자화 혼합(quant mixes) 파이프라인을 구축하여, 기존의 단일 양자화 방식으로는 발견하기 어려운 최적의 성능-효율 균형점을 찾는 도구입니다. 이 시스템은 Unsloth 등의 학습 기법과 결합하여 모델 아키텍처별 특성을 분석하고, VRAM 제약 하에서 가장 가성비가 좋은 '승자'들만을 선별합니다. 이 프로젝트는 단순히 양자화된 모델을 나열하는 것을 넘어, KLD(Kullback–Leibler divergence) 변화 추이와 같은 미묘한 성능 트레이드오프를 분석하여 사용자에게 실제로 다운로드할 가치가 있는 최적의 지점을 제시하는 것이 핵심입니다.
핵심 포인트
- MagicQuant는 하이브리드 GGUF 양자화 혼합을 통해 모델의 효율성과 성능을 극대화합니다.
- 단순한 벤치마크를 넘어, KLD 변화와 같은 미묘한 트레이드오프 지점을 분석하여 최적의 '승자'들을 선별합니다.
- 모델 아키텍처별로 특정 양자화 방식이나 비트 범위에 대한 선호도(또는 알레르기) 패턴을 발견하고 이를 활용합니다.
- VRAM 제약 조건 하에서 가장 가성비가 좋은 모델 조합과 양자화를 찾아내는 것을 목표로 합니다.
저는 지난 5개월 이상 하이브리드 GGUF 양자화 혼합 (quant mixes)을 생성하는 파이프라인을 구축하는 데 시간을 보냈습니다. 또한 Unsloth(또는 다른) 모델의 양자화-텐서 할당 (quant to tensor assignment)을 활용하여 해당 모델들로부터 학습할 수 있도록 설계했습니다. Qwen2.5 27B와 같은 일부 아키텍처는 모델 크기를 유의미하게 줄이면서도 KLD (Kullback–Leibler divergence)를 진정으로 낮출 수 있는 매우 특이한 패턴을 가지고 있습니다. 물론 아키텍처에 따라 완전히 다릅니다! 이 프로젝트를 구축하는 것은 저에게 믿을 수 없을 정도로 즐거운 일이었습니다. 저는 제 프로젝트를 "MagicQuant"라고 부릅니다. 그리고 공개된 리포지토리(repo)와 함께 현재 무엇을 만들어내고 있는지 여러분께 보여드리고 싶습니다.
하이브리드 측면은 매우 흥미로우며 제가 주로 이야기할 부분입니다. 하지만 최종 결과 테이블에는 하이브리드 모델만 포함되는 것이 아니라, Unsloth, llama.cpp 또는 시스템이 학습한 다른 모든 것들이 포함되지만, 파이프라인의 가혹한 검증(gauntlet)을 통과한 생존자들만을 보여줍니다.
MagicQuant에는 지배적(dominance), 프리미엄(premium), 비선형 부분 공간(nonlinear sub space) 승자, 그리고 "IQ4_XS와 Q4_K_S 중 어느 것이 더 나은지 모르겠습니다. 크기는 같지만 말이죠. 또한 이 모델이 IQ4_NL에 알레르기가 있는지도 모르겠습니다. 행운을 빕니다!"라고 말하는 양자화 더미 리포지토리 대신 사용할 수 있는 압축 로직(collapse logic)이 있습니다. MagicQuant는 여러분이 보유한 VRAM을 기준으로 가성비가 가장 좋은 것이 무엇인지 실제로 테스트하는 것을 목표로 합니다.
어떤 모델들은 매우 예측 가능하고 지루하며, 정말로 엄청난 개선을 이룰 수 있는 부분이 없지만, 아마도 괜찮은 선택적 서브 존(sub zones)이나 훌륭한 압축 공간(collapse spaces) 등이 있을 수 있습니다. 어떤 모델들은 이상하고 특이한 점이 있는데, 시스템은 이를 인식하고 이를 극한까지 최적화합니다.
MagicQuant는 제가 이 분야에서 개인적으로 겪고 있는 몇 가지 핵심적인 문제들을 해결하는 것을 목표로 합니다:
1.) 모두가 Q8/Q6/Q5 등을 게시합니다. 하지만 벤치마크가 없습니다. 한 양자화에서 다른 양자화로 넘어갈 때 KLD가 급격히 떨어졌나요? 만약 그렇다면, 왜 명백히 나쁜 트레이드오프(trade-off)를 보여주는 것입니까?
2.) 만약 제가 Q4 크기 범위에 있어야 하지만, 비선형적으로 더 나은 KLD 이득을 위해 몇 바이트를 더 희생할 용의가 있다면 어떻게 될까요? 즉, 하나의 옵션으로서 존재할 가치가 있는 좋은 비선형 KLD 트레이드 포인트(trade points)를 찾는 것입니다.
3.) 모델을 다운로드할 때, 저는 어떤 양자화 (quant) 모델들이 중요한지만 알고 싶습니다. 현재 사용 가능한 모든 양자화 모델이 아니라 말이죠. 어떤 것이 가치가 있을까요? 이 모델에서는 어떤 것이 더 성능이 좋았을까요? 힌트를 드리자면, 모델 아키텍처 (architecture)는 기묘합니다. 어떤 모델은 특정 양자화를 선호하고, 어떤 모델은 노이즈가 이득이 되는 특정 비트 범위 (bit ranges)에서만 기묘한 양자화를 선호하며, 어떤 모델은 특정 양자화에 알레르기 반응을 보이기도 하고, 어떤 모델은 기묘한 양자화를 압도적으로 선호하기도 합니다. 어떤 모델들은 MXFP4를 매우 좋아하지만, 대부분은 싫어하죠. ㅎㅎ
4.) 이상 징후 (anomalies)를 감지하고, 추적하고, 그 존재를 검증한 뒤, 학습된 패턴을 활용하십시오. 이는 드문 일이지만, 존재한다면 반드시 활용하십시오! Qwen3.6 27B는 활용 가능한 기묘함의 범주에 속합니다.
이 포스트는 깁니다. '건너뛰어도 되는 부분'은 다음과 같습니다:
- Example Section (예시 섹션) - 실제 결과물을 보여줍니다. 이해를 위해 읽어보아야 합니다.
- Please Understand (이해 부탁드립니다) - "이것은 당신이 생각하는 것보다 더 근거가 확실하니, X를 이해해 주세요"라는 주제의 섹션이 있다는 것이 이상하게 느껴질 수 있음을 이해합니다. 하지만 이 섹션이 없다면 MagicQuant를 잘못 판단하거나 오해할 수 있습니다. 원한다면 건너뛰어도 되지만, 중요하다고 생각합니다.
- Cloning Section (클로닝 섹션) - 선택적 읽기 사항이지만, 꽤 멋집니다.
- Nonlinear Wins Section (비선형 승리 섹션) - 승자가 어떻게 선정되는지 또는 이것이 무엇을 의미하는지에 관심이 없다면 건너뛰십시오.
- What Is MagicQuant Section (MagicQuant란 무엇인가 섹션) - 아마도 읽어야 하겠지만, 만약 결과만 보고 다운로드해서 바로 플레이하고 싶다면 이 부분도 건너뛰십시오.
기본적으로 Examples와 마지막 섹션들이 정말로 필요한 전부입니다. 나머지는 이해하고 싶거나 질문이 있는 분들을 위한 부가적인 정보 (sauce)일 뿐입니다. 다시 한번, 분량이 길어진 점 사과드립니다. 하지만 엄청난 작업량이었고, 매우 즐거웠으며, 퇴근 후 많은 시간을 들여 이 작업에 매진했습니다.
MagicQuant Repo Examples
가장 재미있었던, 그리고 지금까지 나온 결과 중 가장 좋은 결과부터 시작하겠습니다. 대부분의 모델은 훨씬 더 얌전하지만, Qwen3.6 27B는 MagicQuant가 찾아낸 것들을 과시할 수 있는 여지가 아주 많았습니다.
Qwen3.6 27B
탈락하여 업로드된 모델들이 훨씬 더 많았습니다. 하지만 참조 지점을 제공하기 위해 취소선이 그어진 몇 가지만 보여드렸습니다. 학습 구성 (learning config) 패턴을 학습하는 데에는 Unsloth Dynamic XL 모델 (XL 모델만 보유하고 있었습니다)과 llama.cpp 기본 설정이 활용되었습니다.
| 이름 | KLD | 크기 (GB) |
|---|---|---|
| ... |
Q8보다 작지만 더 낮은 KLD?
자, 이제 핵심적인 의문점을 짚어보겠습니다. 도대체 MagicQuant가 어떻게 Q8_0보다 1.35 GB나 더 작으면서도 KLD 손실을 거의 25%나 줄인 모델을 만들 수 있었을까요?
그 이유는 ffn_down에서의 Q6_K가 Q8_0를 사용했을 때보다 더 낮은 KLD를 결과로 내놓았기 때문입니다! 이는 격리된 환경에서는 감지할 수 없는 패턴이었으나, 전체적으로 BF16이 훨씬 적은 상태에서 양자화 (quantization)가 일어날 때 나타나는 창발적 행동 (emergent behavior)이었습니다.
MagicQuant는 이상 징후를 스모크 테스트 (smoke test)할 수 있는 방법들을 가지고 있으며, 이 시나리오에서는 여러 개를 찾아냈지만 그중 하나를 지목하고 있습니다. 그리고 MQ-Q6_K_1은 단순히 ffn_down을 제외한 모든 그룹에 Q8_0를 적용하여 동일한 모델을 다시 구축한 것입니다.
무슨 일이 일어나고 있는 걸까요?
MagicQuant는 KLD 대비 크기 트레이드오프 (trade-off) 측면에서 비선형적으로 더 우수하거나, 제가 소위 '공짜 점심' (free lunch, 즉 크기는 더 작거나 같으면서 성능은 더 좋은 것)이라고 부르는 승자 모델들을 구축합니다.
지배적 승자 (dominance winners) 또는 비선형적 승자 (nonlinear winners)의 경우, 이는 단순히 잘 찾아낸 우수한 모델들을 의미합니다.
또 어떤 경우에는 그만큼 극단적이지 않고, 다음과 같은 패턴으로 MQ-IQ4_NL_1에 의해 탈락한 UD-Q4_K_XL과 같은 승리 사례가 나타나기도 합니다:
{
"embeddings": "IQ4_NL",
"lm_head": "UD-Q4_K_XL",
"attn_q": "IQ4_XS",
"attn_kv": "Q5_K_S",
"attn_output": "UD-Q4_K_XL",
"ffn_up_gate": "UD-Q4_K_XL",
"ffn_down": "UD-Q4_K_XL"
}
Unsloth의 Q4_K_XL을 그대로 사용하면서, "오, 이 2개 그룹만 바꾸면 공짜 점심(free lunch)이네"라고 말하는 듯한 이 방식이 정말 마음에 듭니다. 사실 UD-Q3_K_XL이 탈락한 방식도 이와 같았지만, 순수하게 "더 나은" 모델이라서가 아니라 "premium" 로직에 의해 탈락했습니다.
"premium" 승자란 비교 대상인 베이스라인(baseline)보다 최대 1%까지만 더 크면서, KLD(Kullback–Leibler divergence)가 다음 비트 앵커 포인트(bit anchor point)로 넘어가는 것보다 비선형적으로 더 우수함을 의미합니다. 따라서 제 파이프라인에서는 다소 편향되고 자극적인(spicy) 승자이지만, 제 생각에 이는 매우 높은 기준이기도 합니다.
하지만 보시다시피 이 모델에서 MagicQuant는 매우 강력한 성능을 보여줄 수 있었습니다. 이상 탐지(Anomaly detection)는 드물게 발생하지만, 발생할 때면 이와 같은 광기 어린 결과가 나타납니다. 그리고 이를 통해 7개의 하이브리드(hybrid) 모델이 최종 생존자로 결정적으로 선택되었습니다.
하지만 제가 관찰한 바에 따르면, 보통 27B 모델은 유독 자극적이었지만, 더 온순하고 일반적인 결과는 Qwen3 4B와 유사한 모습입니다.
Qwen3 4B 2507 Instruct
이제 다음의 Qwen3-4B-Instruct-2507은 제가 MagicQuant의 "정상적인" 모습이라고 부를 만한 것에 더 가깝습니다. 이상 징후도 없고, 광기도 없으며, 제가 생각하는 순수한 가치 그 자체입니다.
| 이름 | 양자화 제품군 (Quant Family) | KLD | 크기 (GiB) |
|---|---|---|---|
| LM-Q8_0 | Q8_0 | 0.001339 | 3.99 |
| ... |
하이브리드 GGUF의 멋진 승리는 MQ-Q4_K_M_1이었습니다. 이것은 MagicQuant가 "비선형적(nonlinear)" 승자라고 부르는 것이었으며, 결국 UD-Q4_K_XL, LM-Q4_K_M을 무너뜨리고 제거했습니다.
다음은 나란히 비교한 결과입니다:
| Model | KLD | PPL Δ | Size (GiB) |
|---|---|---|---|
| MQ-Q4_K_M_1 | 0.020346 | 0.8312% | 2.439 |
| ... | |||
이것은 해당 모델이 병합(collapse)된 모델들과 크기가 같거나 더 작았다는 것을 의미하지는 않습니다. 때로는 그럴 수도 있고, 아닐 수도 있습니다. 하지만 시스템은 비선형적 승자(nonlinear winners)를 가치 있게 평가합니다. 기본적으로 크기 차이가 3개를 모두 유지하기에는 너무 작다고 판단되었습니다. 특히 LM-Q4_K_M 하위에 추가적인 더 작은 양자화 모델(quants)들이 있었을 때 더욱 그러했습니다. 시스템에는 이 시나리오에서 "서로 113 MB 크기 범위 내에 있는 3개의 별도 모델이 정말로 필요한가?"라고 묻는 스마트하고 구성 가능한 로직이 많이 포함되어 있습니다. 그리고 병합 가능한 범위 내에 비선형적 승리 모델인 하이브리드(hybrid), Unsloth 모델, 그리고 llama.cpp 모델이 존재했습니다. |
하지만 이것은 MagicQuant가 가치 있고 실제로 제 역할을 다하는 명확한 승자들을 선별하여 깔끔한 양자화 테이블을 만들기 위해 내리는 수많은 결정 중 하나를 보여주는 것일 뿐입니다.
참고로, 하이브리드(hybrids), llama.cpp, 또는 Unsloth 모델은 동일하게 취급됩니다. 각각이 병합된 공간에서 승리할 수 있으며, 예를 들어 UD-Q5_K_XL과 LM-Q4_K_S는 모두 다른 모델들을 병합시키고 승자가 되었습니다.
또한 테이블에 표시된 것처럼, 하이브리드 중 2개인 MQ-Q6_K_1과 MQ-5_K_1은 모두 해당 양자화 제품군(quant family)의 비트 공간 사이에서 비선형적 트레이드 오프(trade wins)가 발견되었습니다. 즉, 단순히 Q6.5나 Q5.5가 아니라, 크기 증가 대비 KLD 측면에서 진정으로 훌륭한 트레이드라는 의미입니다. 따라서 시스템은 이들이 존재할 가치가 있다고 결정했습니다.
표시된 3개의 MagicQuant 하이브리드는 실제로 다음과 같은 구성을 사용했습니다:
| Name | embeddings | attn_q | attn_kv | attn_output | ffn_up_gate | ffn_down |
|---|---|---|---|---|---|---|
| MQ-Q6_K_1 | Q8_0 | Q8_0 | Q8_0 | Q8_0 | Q6_K | Q8_0 |
| ... | ||||||
| 목표는 하이브리드 모델로만 지도를 가득 채우는 것이 아닙니다. KLD 대비 파일 크기 사이에서 최상의 트레이드 오프를 찾아내는 것입니다. |
Qwen3.6 35B A3B - MOE 예시
그렇다면 이 시스템은 MOE (Mixture of Experts)를 어떻게 처리할까요? 음, 모델이 학습한 양자화 (Quant) 방식이 무엇이든 상관없이 처리합니다. 여기 새로운 Qwen3.6 시리즈를 활용한 더 재미있고 최신인 예시가 있습니다. 이 시리즈에는 보여줄 만한 Unsloth Dynamic (UD) 요소가 더 많이 포함되어 있습니다. 이제 많은 MagicQuant 하이브리드 모델과 더 적은 옵션들을 확인하실 수 있을 것입니다.
이유는 수많은 항목이 지배되거나 붕괴되었기 때문입니다. 사실 이는 까다로운 하이브리드 모델들 때문에 더 적게 나타났습니다. 실제로 가장 독특했던 것은 다음과 같았습니다:
{
"embeddings": "UD-IQ3_S",
"lm_head": "Q8_0",
"attn_q": "Q6_K",
"attn_kv": "Q8_0",
"attn_output": "Q8_0",
"ffn_up_gate": "UD-IQ4_NL",
"ffn_down": "UD-Q3_K_XL",
"moe_router": "Q8_0"
}
하지만 실제로 대부분은 다음과 같았습니다:
{
"embeddings": "UD-IQ3_S",
"lm_head": "UD-Q6_K",
"attn_q": "UD-Q6_K",
"attn_kv": "UD-Q6_K",
"attn_output": "UD-Q6_K",
"ffn_up_gate": "UD-Q6_K",
"ffn_down": "UD-Q6_K",
"moe_router": "UD-Q6_K"
}
이 MOE 모델은 대부분 전문가 (Experts) 레이어에 달려 있으며, Unsloth가 거의 모든 곳을 지배했습니다. 물론 당연한 결과이기도 합니다! 하지만 UD-IQ3_S는 기본적으로 공짜 점심과 같은 치트키였습니다. 왜 Q3를 사용했는지 물으실 수도 있겠네요. Unsloth Dynamic이 텐서 민감도 (Tensor sensitivity)를 파악한다는 점을 기억하십시오. UD-IQ3_S와 그에 상응하는 다양한 다른 방식들이 (다른 것들이 동점이었음에도 제 시스템이 포착한 것들입니다) 그 지점에 도달했습니다. Unsloth는 UD-IQ3_S의 임베딩 (Embeddings)을 매우 매우 강력하게 만들었는데, 이는 그들의 시스템이 해당 부분이 민감하며 보호할 가치가 있다는 것을 분명히 찾아냈기 때문입니다. 참고로 해당 텐서 그룹의 크기는 실제로 Q5보다 크지만, 더 작으면서도 더 낮은 KLD (Kullback–Leibler divergence)를 기록했기 때문에 해당 카테고리에서 Q6와 Q8을 압도했습니다!
그 결과 다음과 같은 테이블이 탄생하게 되었습니다:
| Name | KLD | Size (GB) |
|---|---|---|
| LM-Q8_0 | 0.004654 | 36.90 |
| ... |
참고로, 이것은 제가 관찰해 온 꽤 명확한 패턴입니다. 사용할 수 있는 Unsloth Dynamic 모델이 더 많을수록, 모델의 성능은 더 좋아집니다. 다시 말하지만... 이는 매우 타당한 결과입니다. 하지만 이것이 MagicQuant가 작동하는 방식입니다. 때로는 승리가 정말 기묘한 조합으로 나타나기도 하고, 때로는 이상 현상(anomalies)으로 나타나기도 하며, 때로는 멋진 서브 존(sub zones)으로 나타나기도 하고, 때로는 단순히 여기저기에 약간의 미세 조정(tweaks)을 가하는 것만으로도 효과적으로 약간의 성능 향상을 얻을 수 있다는 점을 발견하는 것일 수도 있습니다.
Please Understand (이해해 주시기 바랍니다)
저는 MagicQuant가 무엇인가를 "보장"할 수는 없다는 점을 강조하고 싶습니다. 저는 "최적화된 Q4를 내놓으라"고 말할 수 없습니다. 대신 MagicQuant는 탐색 공간 (search space)을 확인하고, 공간이 존재한다면 그것을 찾으려고 시도합니다. 공간이 존재할 수도 있고 존재하지 않을 수도 있습니다. 그것이 핵심입니다. 어떤 MagicQuant 테이블은 지도 위의 MagicQuant 하이브리드(hybrids)를 크리스마스트리처럼 밝게 빛나게 할 것입니다. 어떤 MagicQuant는 "Unsloth가 압도했으니, 그것을 사용하세요. 만약 당신이 이 VRAM 크기 범위에 있다면, 비선형적 승리 (nonlinear wins)를 위한 서브 존이 2개 정도 있을 수 있습니다"라고 말할 것입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기