जब आप 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 है।

LevelBits per weightRelative sizeQuality
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
F1616100%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 पर जाएँ (और कब नहीं)

जानना चाहते हैं कि आपके 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 बर्बाद नहीं करेंगे।