Voodoo Dynamic Quant - 이제 MIT 라이선스로 공개
Voodoo Dynamic Quant - Now MIT Licensed
핵심 요약
경사 하강법을 활용한 새로운 동적 양자화 기법 'Voodoo Quant'가 오픈소스로 공개되었습니다.
- Voodoo Quant — 경사 하강법으로 텐서별 최적 양자화 수준을 결정하는 기법임
- 오픈소스 전환 — 작성자가 바쁜 일정으로 인해 커뮤니티 발전을 위해 MIT 라이선스로 공개함
- 성능 비교 — 고성능 양자화에서는 Unsloth가 우세하나, 저성능/공격적 양자화에서는 Voodoo가 더 효율적임
- 연구용 도구 — 현재 Qwen 모델 아키텍처를 지원하며 향후 다른 모델로 확장 가능함
두 달 전, 나는 일부 소형 Qwen3.5 GGUF 모델에서 가장 공격적인 양자화 수준에 대해 SOTA를 기록한 'Voodoo Quant'라는 새로운 동적 양자화 방식을 찾아냈다고 발표했었지. 당시에는 방법론을 비공개로 유지했지만, 최근 여러 모델에 대한 동적 양자화 요청이 너무 많이 들어와서 그냥 커뮤니티에 공개하기로 했다. 내가 이걸 제대로 확장해서 완성할 시간까지는 없거든. 내가 이제 막 겉핥기 식으로 시작한 단계라, 이 글이 다른 연구자들에게 영감을 줘서 더 발전시켜 주길 바랄 뿐이다.
직접 동적 양자화를 만들 수 있는 새로운 툴셋은 여기 있다: https://github.com/curvedinf/voodoo-dyn-quant
다들 내가 어떤 방식을 썼는지 추측이 많았는데, 사실 꽤 간단하고 우아한 방법이야. 나는 경사 하강법(gradient descent)을 사용해 텐서별 양자화 레이아웃을 최적화하는 방법을 찾아냈거든.
동적 양자화(Dynamic Quant)란 무엇인가? GGUF 같은 일부 모델 포맷은 각 텐서(가중치 집합)마다 서로 다른 양자화 수준을 적용해 압축하는 걸 지원해. 정적 양자화는 특정 유형의 텐서에 정해진 양자화 수준을 고정적으로 적용하지만, 동적 양자화는 체크포인트 크기마다 각 텐서에 대해 최적의 양자화 방식을 다르게 선택하지.
Voodoo Quant는 어떻게 작동하나? Voodoo Quant는 모델의 모든 텐서에 대해 가능한 모든 양자화 수준을 동시에 돌려보고, 주어진 목표 파일 크기 내에서 손실(loss)을 가장 낮게 만드는 조합을 경사 하강법으로 찾아내. 기술적으로 말하자면, (llama.cpp의 기반 라이브러리인 gglm에서 직접 변환된) 모든 후보 양자화 가중치를 고정해두고, 텐서별/양자화 수준별로 단일 스칼라 게이트만 학습시키는 에포크를 한 번 돌리는 방식이야. 텐서의 스칼라 게이트는 어떤 양자화 수준이 가장 최적인지를 나타내지. 시간이 지나면서 타우(tau) 레벨을 어닐링(annealing)하면, 훈련이 진행됨에 따라 여러 양자화 방식이 섞이는 게 아니라 각 텐서마다 하나의 지배적인 양자화 선택지로 수렴하게 돼. 소프트맥스(Softmax)를 사용해서 특정 선택지가 거의 고정된 상태에서도 모든 양자화 수준이 그래디언트를 받을 수 있게 설계했어. 양자화 선택지는 다양한 캘리브레이션 데이터셋으로 학습시키지. 훈련 결과는 혼합 양자화 로짓(mixed-quant logits)과 참조 BF16 체크포인트 사이의 KL 발산(KL divergence)을 측정하는 손실 함수로 평가하는데, KLD가 낮을수록, 그리고 목표 파일 크기에 가까울수록 높은 점수를 주는 방식이야. 이 정도 정보면 대충 어떻게 돌아가는지 감이 올 거고, 더 자세한 내용은 소스 코드를 파보면 될 거야!
레포에는 뭐가 들어있나? 이 방법론을 사용해서 직접 동적 양자화를 훈련할 수 있는 전체 툴셋이 들어있어. 현재는 Qwen에 맞춰져 있지만, 어떤 모델 아키텍처든 금방 적용할 수 있을 거다.
UD 3.0과는 어떻게 비교되나? Unsloth Dynamic 3.0은 Unsloth 측에서 세부 사항을 전혀 공개하지 않은 독자적인 방법론이야(참고로, 내 방법론 공개 안 한다고 욕하던 사람들 많았는데, Unsloth는 몇 년째 그러고 있었다고!). 어쨌든 UD 3.0이 성능이 아주 좋다는 건 우리도 알지. 내가 테스트해 본 바로는, 높거나 중간 정도의 양자화 수준에서는 UD3가 VQ보다 낫지만, 공격적인 수준에서는 VQ가 더 나았어. 내가 보기에 UD 3.0은 현재 사실상 표준인 정적 분석(static analysis) 기법을 발전시킨 형태야. 정적 분석이란 통계나 정적 함수를 사용해 모델 가중치를 여러 방식으로 분석하는 걸 말하는데, 때로는 KLD나 다른 지표를 벤치마킹하면서 반복적으로 튜닝하기도 하지. Voodoo Quant는 내가 알기로 역전파(backwards pass)와 경사 하강법을 사용해 텐서별 양자화 수준을 결정하는 최초의 방식이야. 경사 하강법으로 양자화 수준을 최적화하려면 정적 분석보다 훨씬 강력한 시스템이 필요하지만, 기술적으로는 정적 분석으로 가능한 수준보다 훨씬 많은 벤치마킹 반복을 비교하기 때문에 성능을 극대화하는 데 훨씬 효율적이지.
