반응형
Google이 TurboQuant 논문을 ICLR 2026에서 발표했어요. 근데 공식 코드는 아직 없어요. Q2 2026 출시 예정이에요.
그런데 논문 공개 48시간 만에 커뮤니티가 PyTorch 구현체를 만들어버렸고, 2주 만에 Mac에서 104B 모델을 돌리는 데까지 왔어요.
그중 Apple Silicon에 가장 최적화된 게 turboquant_plus예요. TheTom이라는 개발자가 만든 커뮤니티 구현체로, MLX 백엔드 지원, Sparse V 최적화, 레이어 보호 기능까지 추가된 버전이에요. 공식 구현체가 나오기 전까지 Mac 사용자에게 가장 실용적인 선택이에요.
설치
git clone https://github.com/TheTom/turboquant_plus
cd turboquant_plus
pip install -r requirements.txt
pip install mlx mlx-lm
쓰기 전 vs 후 — 한눈에 비교
32GB M3 Pro, Qwen2.5-32B 기준
TurboQuant 전 TurboQuant 후
| 최대 모델 크기 | 13B | 32B |
| 최대 컨텍스트 | 16K | 64K |
| KV 캐시 메모리 | 8GB | 1.7GB |
| 디코딩 속도 | 기준 | 약 동일~약간 빠름 |
| 퍼플렉시티 | 3.89 | 3.97 (차이 미미) |
| 품질 체감 | 기준 | 육안 구분 불가 |
실제로 뭐가 달라지나
전 — 32GB Mac에서 32B 모델 실행 시도
python -m mlx_lm.generate \
--model Qwen/Qwen2.5-32B-Instruct \
--prompt "긴 문서 분석해줘..." \
--max-tokens 1024
# 결과:
# Error: Out of memory
# 또는 컨텍스트 4K로 강제 제한됨
후 — TurboQuant 적용
from turboquant_plus import TurboQuantKVCache
from mlx_lm import load, generate
model, tokenizer = load("Qwen/Qwen2.5-32B-Instruct")
kv_cache = TurboQuantKVCache(
key_bits=3,
value_bits=2,
protected_layers=4,
sparse_v=True
)
response = generate(
model, tokenizer,
prompt="긴 문서 분석해줘...",
max_tokens=1024,
kv_cache=kv_cache
)
# 결과:
# ✅ 정상 실행
# ✅ 64K 컨텍스트 가능
# ✅ 품질 FP16이랑 육안 구분 불가
메모리별 전/후 비교
16GB Mac
전: 7B, 8K 컨텍스트
후: 13B, 32K 컨텍스트
32GB Mac
전: 13B, 16K 컨텍스트
후: 32B, 64K 컨텍스트
64GB Mac
전: 32B, 32K 컨텍스트
후: 70B, 128K 컨텍스트 (책 한 권 통째로 넣기 가능)
128GB Mac (M5 Max)
전: 70B, 64K 컨텍스트
후: 104B, 128K 컨텍스트
품질 차이 직접 확인하는 법
# FP16 기준
python eval_perplexity.py \
--model Qwen/Qwen2.5-7B-Instruct \
--kv-format fp16
# → perplexity = 3.891
# TurboQuant 적용
python eval_perplexity.py \
--model Qwen/Qwen2.5-7B-Instruct \
--kv-format turbo3
# → perplexity = 3.972
차이 0.08이에요. 텍스트 봐도 어느 게 압축된 건지 구분 못 해요.
속도 차이
짧은 컨텍스트 (4K 이하):
→ FP16보다 살짝 느림 (압축 오버헤드)
긴 컨텍스트 (32K 이상):
→ FP16보다 빠름
→ sparse_v=True 켜면 128K에서 +22.8% 추가
짧은 대화엔 기본 설정, 긴 문서 처리할 때만 TurboQuant 켜면 돼요.
실전 추천 설정
# 일반용 (품질 우선)
kv_cache = TurboQuantKVCache(
key_bits=4,
value_bits=3,
protected_layers=4,
sparse_v=True
)
# 초장문용 (메모리 우선, 64K+)
kv_cache = TurboQuantKVCache(
key_bits=3,
value_bits=2,
protected_layers=4,
sparse_v=True
)
반응형
'LLM' 카테고리의 다른 글
| Qwen 3.5 완전 분석 — 397B 파라미터인데 왜 저렴하고 빠른가 (0) | 2026.04.15 |
|---|---|
| LLM 프루닝 완전 정리 — 모델 크기 40% 줄이면서 성능 유지하는 법 (0) | 2026.04.14 |
| Anthropic이 가장 강력한 모델을 공개하지 않은 이유 — Mythos Preview 완전 분석 (0) | 2026.04.10 |
| Meta Muse Spark 발표 — Llama 이후 독자 모델 (0) | 2026.04.10 |
| Speculative Decoding 완전 정리 — 추론 속도 2~3배 올리는 법 (0) | 2026.04.09 |