जब आप model.Q4_K_M.gguf जैसी फ़ाइल देखते हैं, तो Q4 बहुत काम कर रहा होता है। यह quantization level है – वह knob जो model के size और speed को answer quality के बदले trade करता है। GGUF explained में हमने अक्षरों का मतलब बताया था। यहाँ गहराई से देखें: quantization वास्तव में model पर क्या करता है, आप कितनी quality छोड़ते हैं, और यह वास्तविक speed numbers में कैसे दिखता है।
Quantization वास्तव में क्या करता है
Neural network के weights संख्याएँ हैं – सामान्यतः 16-bit floating point (या 32-bit तक) में store की जाती हैं। Quantization उन संख्याओं को कम precision में store करता है। weight 0.7321024… होने के बजाय कुछ 0.73 जैसा बन जाता है, या 16 संभावित values (4 bits) में से एक पर snap हो जाता है।
यह सुनने में विनाशकारी लगता है, और है भी – लेकिन तरकीब यह है कि model इसके प्रति बेहद robust होते हैं। Neural networks में ज़बरदस्त redundancy होती है, इसलिए आप weights की ज़्यादातर precision हटा सकते हैं इससे पहले कि model का व्यवहार सार्थक रूप से बिगड़े। इसीलिए 4-bit model भी आश्चर्यजनक रूप से अच्छा रहता है।
Size का गणित आसान है। 7-billion-parameter model 16 bits पर लगभग 7B × 2 bytes ≈ 14 GB होता है। 4 bits पर यह 7B × 0.5 bytes ≈ 3.5 GB है। यही "मेरे laptop में fit नहीं होता" और "मेरे laptop पर आराम से चलता है" के बीच का फ़र्क़ है।
Trade-off, आँकड़ों में
Quantization level तीन चीज़ों को प्रभावित करता है: file size, speed और quality। Size और speed समझना आसान है; quality थोड़ी fuzzy है।
| Level | Bits per weight | Relative size | Quality |
|---|---|---|---|
| Q2_K | ~2.6 | ~25% | खराब – सिर्फ बहुत छोटे budget के लिए |
| Q3_K | ~3.4 | ~32% | औसत – स्पष्ट गिरावट दिखती है |
| Q4_K_M | ~4.3 | ~42% | अच्छी – default |
| Q5_K_M | ~4.8 | ~49% | बहुत अच्छी – साफ़ तौर पर sharper |
| Q6_K | ~6.0 | ~58% | लगभग original जैसी |
| Q8_0 | ~8.0 | ~78% | पहचान से परे – indistinguishable |
| F16 | 16 | 100% | Original weights |
महत्वपूर्ण बारीकी: Q4, Q5, Q6 और Q8 के बीच का अंतर ज़्यादातर कठिन tasks में दिखता है – लंबी reasoning chains, जटिल code, math, या factual recall जहाँ एक गलत token पूरी chain बिगाड़ देता है। Casual chat और summarization के लिए आप Q4 और Q6 में फ़र्क़ मुश्किल से बता पाएँगे। इसीलिए Q4_K_M सभी के लिए default है: ज़्यादातर वास्तविक उपयोग में quality gap न के बराबर है।
Speed में यह कैसे दिखता है
छोटे weights का मतलब तेज़ inference है, क्योंकि bottleneck memory bandwidth है – GPU compute units को कितनी तेज़ी से bytes feed कर सकता है। Decode speed लगभग:
decode_tok/s ≈ (memory_bandwidth × 0.8) / bytes_per_token
7B model को Q4 पर ~0.5 bytes/weight × 7B ≈ 3.5 GB प्रति token pass चाहिए। Q8 पर यह ~7 GB है। इसलिए Q4, Q8 से लगभग दोगुना तेज़ है decode पर, बाकी सब समान होने पर – और F16 से लगभग 4× तेज़। इसीलिए quantized model इतना snappier लगता है।
यह असर आप VelsTech benchmark database में देख सकते हैं – हमारा tested Qwen 27B 3.7bpw पर 12 GB RX 6800M पर ~18–22 tok/s चला, और वह भी partial offload के साथ। बड़ा quantization कम fit होगा और धीमे चलेगा।
K-quants ("K" और "_K_M") क्यों clever हैं
पुराने quantizations हर weight पर एक ही bit width लगाते थे। K-quantization ज़्यादा smart है: यह कम-महत्वपूर्ण weights पर कम bits और ज़रूरी weights पर ज़्यादा bits लगाता है, हर block के हिसाब से। नतीजा यह कि "4-bit" k-quant फ़ाइल अक्सर उसी size की naive 4-bit फ़ाइल से बेहतर होती है – और कभी-कभी थोड़ी बड़ी naive quantization को भी पछाड़ देती है।
_S (small) और _M (medium) suffix बताते हैं कि यह कितनी aggressively लागू हुआ है। Q4_K_S सबसे छोटा "अच्छा" 4-bit विकल्प है; Q4_K_M थोड़ा बड़ा size लेकर स्पष्ट रूप से बेहतर quality देता है। ज़्यादातर लोगों के लिए _M सही चुनाव है।
कब higher पर जाएँ (और कब नहीं)
- Q4_K_M पर रहें general chat, writing और ज़्यादातर coding के लिए – default, और सबसे अच्छा size/quality balance।
- Q5_K_M या Q6_K पर जाएँ जब model reasoning-heavy या factual काम के लिए हो और आपके पास RAM/VRAM की गुंजाइश हो।
- Q8/F16 skip करें जब तक आप benchmarking न कर रहे हों या बहुत बड़ी memory न हो। Q6 पर quality gain minimal है और आप size और speed में दोगुनी कीमत चुकाते हैं।
- Q3 पर तभी जाएँ जब model Q4 पर fit न हो और आपको किसी भी तरह चलाना हो।
जानना चाहते हैं कि आपके card पर क्या fit होगा? आँकड़े LLM VRAM Calculator में डालकर देखें।
निष्कर्ष
Quantization ही वजह है कि local AI संभव है। यह एक compression है जिसका quality tax ज़्यादातर tasks के लिए छोटा है और सिर्फ कठिन tasks के लिए महत्वपूर्ण है। Q4_K_M smart default है, Q5_K_M quality upgrade है, और Q6 से ऊपर की चीज़ें consumer hardware पर आमतौर पर बर्बाद हैं। यह समझ लें तो आप कभी download बर्बाद नहीं करेंगे।