← Resources
By Ren Sugaya
— Performance Engineer, GPU & Inference
·
· INSIGHT
LLM क्वांटाइज़ेशन समझें: GGUF, Q4 बनाम Q8, और गुणवत्ता
क्वांटाइज़ेशन एक LLM के वज़न को कम परिशुद्धता पर संग्रहीत करके उसका आकार घटाता है, जिससे 4-बिट पर VRAM लगभग चौथाई रह जाती है। यह गाइड VRAM का गणित समझाती है, Q4_K_M जैसे GGUF क्वांट नामों को डिकोड करती है, GGUF की तुलना GPTQ और AWQ से करती है, और दिखाती है कि गुणवत्ता असल में कहाँ टूटती है।
क्वांटाइज़ेशन क्या है, और यह क्यों मायने रखता है
क्वांटाइज़ेशन मॉडल वज़न को संग्रहीत करने में इस्तेमाल होने वाली संख्यात्मक परिशुद्धता को घटाता है — आमतौर पर FP16 (16 बिट, प्रति वज़न 2 बाइट) से 8-बिट या 4-बिट तक। चूँकि मेमोरी बिट्स-प्रति-वज़न के साथ रैखिक रूप से बढ़ती है, 4-बिट FP16 की तुलना में लगभग चौथाई VRAM इस्तेमाल करता है। यह इन्फेरेंस को भी तेज़ करता है, क्योंकि टोकन जनरेशन सिर्फ़ कम्प्यूट से नहीं, बल्कि मेमोरी बैंडविड्थ से सीमित होती है।
आकार का गणित सरल है: bytes ≈ (parameters × bits-per-weight) ÷ 8। FP16 पर एक 8B मॉडल करीब 16 GB का होता है; 4-बिट पर यह करीब 4.5 GB रह जाता है। यही अंतर एक ऐसे मॉडल को, जिसे डेटा-सेंटर GPU चाहिए, लैपटॉप पर चलने लायक बना देता है।
GGUF एक फ़ाइल फ़ॉर्मेट है, कोई विधि नहीं
GGUF एक सिंगल-फ़ाइल फ़ॉर्मेट है जो क्वांटाइज़्ड वज़न के साथ-साथ मॉडल मेटाडेटा (टोकनाइज़र, आर्किटेक्चर, हाइपरपैरामीटर) भी संग्रहीत करता है। यह llama.cpp प्रोजेक्ट के GGML का उत्तराधिकारी है, और CPU, Apple Silicon (Metal), तथा मिश्रित CPU/GPU ऑफलोड के लिए अनुकूलित है — यही वजह है कि llama.cpp, Ollama और LM Studio के ज़रिए लोकल और लैपटॉप इन्फेरेंस में इसका दबदबा है।
क्वांट स्तर फ़ाइलनाम में ही होता है। संख्या औसत बिट्स-प्रति-वज़न दर्शाती है; `_K` का मतलब है k-quants (आधुनिक सुपर-ब्लॉक विधि, जिसमें डबल-क्वांटाइज़्ड स्केलिंग फ़ैक्टर और लेयर-अवेयर बिट आवंटन होते हैं); `_S`, `_M`, `_L` क्रमशः छोटे, मध्यम और बड़े वेरिएंट हैं। `_M` चुनिंदा संवेदनशील लेयर्स — अटेंशन और आउटपुट — को उच्च परिशुद्धता पर बनाए रखता है, यही कारण है कि Q4_K_M एक सपाट 4-बिट क्वांट से बेहतर है।
Q4 बनाम Q5 बनाम Q8: आँकड़ों के साथ आकार और गुणवत्ता
Llama-3.1-8B पर एक peer-reviewed मूल्यांकन इन ट्रेड-ऑफ को ठोस रूप देता है (आकार उसी मॉडल के लिए हैं; अनुपात आम तौर पर लागू होते हैं)। करीब 7.32 के FP16 बेसलाइन perplexity के मुकाबले (कम बेहतर है):
- Q8_0 — 8.5 bits/weight, ~7.95 GiB, perplexity 7.33: व्यावहारिक रूप से बिना किसी नुकसान के।
- Q6_K — 6.56 bpw, ~6.14 GiB, perplexity 7.35।
- Q5_K_M — 5.70 bpw, ~5.33 GiB, perplexity 7.40।
- Q4_K_M — 4.89 bpw, ~4.58 GiB, perplexity 7.56: व्यावहारिक स्वीट स्पॉट, बेसलाइन से आधे प्रतिशत से भी कम दूर।
- Q3 और उससे नीचे — तीखी और लगातार गिरावट, ख़ासकर रीज़निंग कार्यों पर।
4-से-5-बिट का बैंड सुरक्षित क्षेत्र है। 3-बिट से नीचे जाने पर importance-matrix (IQ) क्वांट्स चाहिए, जो कैलिब्रेशन डेटा का इस्तेमाल कर परिशुद्धता को सबसे ज़रूरी जगहों पर लगाते हैं — उपयोग करने लायक, पर तंग मेमोरी का अंतिम उपाय।
GGUF बनाम GPTQ बनाम AWQ
GGUF अकेला विकल्प नहीं है; सही चुनाव इस पर निर्भर करता है कि आप मॉडल कहाँ चलाते हैं।
- GGUF: CPU, Mac और मिश्रित ऑफलोड के लिए बना है। लोकल और डेस्कटॉप इन्फेरेंस के लिए इसे चुनें।
- GPTQ: पोस्ट-ट्रेनिंग, कैलिब्रेशन-आधारित, प्रति-लेयर त्रुटि घटाने के लिए सेकंड-ऑर्डर जानकारी का इस्तेमाल करता है। किसी दी गई बिट चौड़ाई पर वज़न-दर-वज़न सबसे सटीक, पर तैयार होने में धीमा और GPU सर्विंग (vLLM, TGI, TensorRT-LLM) की ओर झुका हुआ।
- AWQ: एक्टिवेशन मैग्निट्यूड के आधार पर लगभग 1% सबसे अहम वज़न की रक्षा करता है; GPTQ से तेज़ी से तैयार होता है और 4-बिट पर GPU-अनुकूलित है।
- bitsandbytes: लोड के समय ऑन-द-फ्लाई क्वांटाइज़ करता है, बिना किसी पूर्व-क्वांटाइज़्ड चेकपॉइंट या कैलिब्रेशन के — सबसे आसान रास्ता, QLoRA फाइन-ट्यूनिंग में व्यापक रूप से इस्तेमाल होता है।
व्यावहारिक बँटवारा: लोकल और लैपटॉप के लिए GGUF, GPU-सर्वर थ्रूपुट के लिए AWQ या GPTQ।
असल में कितनी गुणवत्ता घटती है?
4-बिट पर ज़्यादातर लोगों के डर से कहीं कम, और 3-बिट से नीचे उनकी अपेक्षा से ज़्यादा। Llama-3.1-8B मूल्यांकन में, Q8 पूर्ण परिशुद्धता के लगभग बराबर था, Q4_K_M ने औसत बेंचमार्क पर आधे प्रतिशत से भी कम गँवाया, और गिरावट का किनारा 3-बिट पर दिखा — सबसे साफ़ गिरावट grade-school math जैसे रीज़निंग-भारी मूल्यांकनों पर थी। याद रखें कि निरपेक्ष perplexity और आकार के आँकड़े मॉडल-विशिष्ट हैं — प्रतिशत आम तौर पर लागू होते हैं, पर अपने बेस मॉडल के लिए आँकड़े हमेशा जाँचें। और फ़ाइल आकार से ज़्यादा VRAM का बजट रखें: KV cache और करीब 10–15% फ्रेमवर्क ओवरहेड को भी जगह चाहिए।
osFoundry में क्वांटाइज़ेशन
क्वांट चुनने का मतलब आम तौर पर bits-per-weight समझना, KV cache के लिए जगह छोड़ना, और बिना क्रैश हुए फिट होने वाली एक फ़ाइल ढूँढने के लिए क्रिप्टिक GGUF प्रत्ययों की दीवार खंगालना होता है। osFoundry का लोकल इन्फेरेंस यह चरण हटा देता है: यह आपकी उपलब्ध मेमोरी का पता लगाता है और सही क्वांटाइज़ेशन अपने-आप चुन लेता है — तंग VRAM के लिए Q4_K_M, और हेडरूम होने पर Q5_K_M या Q8_0 — ताकि मॉडल आपके हार्डवेयर के समर्थन की सबसे अच्छी गुणवत्ता पर चले। कैटलॉग हर वेरिएंट के बजाय सिर्फ़ संगत बिल्ड दिखाता है, और कोई भारी क्वांट फिट न होने पर सहजता से फॉलबैक कर देता है। आपको Q4_K_M का मतलब जाने बिना ही, हाथ से GGUF चुनने जैसा आकार-बनाम-गुणवत्ता का सर्वोत्तम संतुलन मिल जाता है।
Frequently asked questions
- सरल शब्दों में LLM क्वांटाइज़ेशन क्या है?
- यह मॉडल के वज़न को कम संख्यात्मक परिशुद्धता पर संग्रहीत करना है — मसलन 16-बिट के बजाय 4-बिट — ताकि उसका आकार घटे। चूँकि मेमोरी बिट्स-प्रति-वज़न के साथ बढ़ती है, 4-बिट क्वांटाइज़ेशन FP16 की तुलना में लगभग चौथाई VRAM इस्तेमाल करता है और तेज़ चलता है, गुणवत्ता में छोटी और आमतौर पर स्वीकार्य कीमत पर।
- GGUF किसका संक्षिप्त रूप है और यह क्या है?
- GGUF llama.cpp प्रोजेक्ट का सिंगल-फ़ाइल मॉडल फ़ॉर्मेट है (GGML का उत्तराधिकारी), जो क्वांटाइज़्ड वज़न को मॉडल मेटाडेटा के साथ बंडल करता है। यह CPU, Apple Silicon और मिश्रित CPU/GPU इन्फेरेंस के लिए अनुकूलित है, यही वजह है कि llama.cpp, Ollama और LM Studio जैसे लोकल टूल्स का यह मानक है। यह एक फ़ाइल फ़ॉर्मेट है, क्वांटाइज़ेशन एल्गोरिदम नहीं।
- Q4, Q5 और Q8 में क्या अंतर है?
- संख्या औसत बिट्स-प्रति-वज़न है, इसलिए Q8, Q5 से बड़ा और ज़्यादा सटीक है, और Q5, Q4 से बड़ा है। एक आम 8B मॉडल पर Q8 करीब 8 GB पर near-lossless है, Q5_K_M करीब 5.3 GB पर ज़रा-सा नीचे है, और Q4_K_M करीब 4.6 GB पर आधे प्रतिशत से कम गुणवत्ता हानि के साथ आकार/गुणवत्ता का स्वीट स्पॉट है।
- मुझे कौन-सा GGUF क्वांटाइज़ेशन इस्तेमाल करना चाहिए?
- ज़्यादातर मामलों में Q4_K_M — यह आकार और गुणवत्ता का सबसे अच्छा संतुलन है और मानक शुरुआती बिंदु है। अगर अतिरिक्त VRAM है और ज़्यादा सटीकता चाहिए तो Q5_K_M या Q8_0 पर जाएँ, और Q4 से नीचे (importance-matrix IQ quants के साथ) सिर्फ़ तभी जाएँ जब मेमोरी सचमुच तंग हो, क्योंकि 3-बिट और उससे नीचे गुणवत्ता तेज़ी से गिरती है।
- 4-बिट क्वांटाइज़ेशन से कितनी गुणवत्ता घटती है?
- हैरानी की हद तक कम। एक peer-reviewed Llama-3.1-8B मूल्यांकन में, Q4_K_M औसत बेंचमार्क पर पूर्ण-परिशुद्धता बेसलाइन से आधे प्रतिशत से भी कम नीचे रहा। ध्यान देने लायक गिरावट 3-बिट से शुरू होती है, ख़ासकर रीज़निंग और गणित कार्यों पर। सटीक आँकड़े मॉडल के हिसाब से बदलते हैं, पर 4-से-5-बिट को व्यापक रूप से सुरक्षित क्षेत्र माना जाता है।
- GGUF बनाम GPTQ बनाम AWQ — मुझे कौन-सा चुनना चाहिए?
- llama.cpp या Ollama के ज़रिए लोकल, लैपटॉप और Apple Silicon इन्फेरेंस के लिए GGUF। GPTQ और AWQ GPU-फ्रेंडली लेआउट में संग्रहीत होते हैं और vLLM या TGI के साथ GPU-सर्वर थ्रूपुट के लिए बेहतर विकल्प हैं — AWQ तैयार होने में तेज़ है, GPTQ अक्सर वज़न-दर-वज़न सबसे सटीक होता है। bitsandbytes सबसे आसान है क्योंकि यह बिना कैलिब्रेशन के लोड के समय क्वांटाइज़ करता है।
- क्वांटाइज़्ड मॉडल के लिए ज़रूरी VRAM की गणना कैसे करूँ?
- bytes ≈ (parameters × bits-per-weight) ÷ 8 का इस्तेमाल करें। 4-बिट पर यह प्रति अरब पैरामीटर करीब 0.5 से 0.6 GB होता है, इसलिए एक 8B मॉडल करीब 4.5 GB का है। फिर KV cache और करीब 10 से 15% फ्रेमवर्क ओवरहेड के लिए हेडरूम जोड़ें — चलते समय का फुटप्रिंट हमेशा डिस्क की फ़ाइल से बड़ा होता है।
Sources