लोकल LLM के लिए GPU VRAM कैलकुलेटर
4 बिट पर 7B मॉडल के वज़न को लगभग 3.3 GiB चाहिए, और Llama 3.1 8B श्रेणी का मॉडल हर 8,192 टोकन कॉन्टेक्स्ट पर लगभग 1 GiB KV कैश जोड़ता है।
कैसे इस्तेमाल करें
- पैरामीटर, लेयर, KV हेड और हेड डायमेंशन भरने के लिए कोई मॉडल प्रीसेट चुनें, या "कस्टम" चुनकर मॉडल की config.json के मान खुद डालें।
- वज़न के क्वांटाइज़ेशन बिट (Q4 के लिए 4, FP16 के लिए 16) और KV कैश की सटीकता तय करें।
- कॉन्टेक्स्ट लंबाई टोकन में और बैच साइज़ डालें, यानी एक साथ कितने सीक्वेंस चलेंगे।
- कुल मान और उसका वज़न, KV कैश और ओवरहेड में बँटवारा देखें। तालिका बताती है कि कौन से आम GPU आकार में यह आता है।
गणना कैसे होती है
वज़न की मेमोरी = पैरामीटर × बिट ÷ 8 बाइट। 7 अरब पैरामीटर का मॉडल 4 बिट पर 7,000,000,000 × 0.5 = 3.5 GB यानी 3.26 GiB लेता है। 16 बिट पर यही 14 GB हो जाता है, जो Hugging Face गाइड "Optimizing LLMs for Speed and Memory" में bfloat16 के लिए प्रति अरब पैरामीटर 2 GB के नियम से मेल खाता है।
KV कैश = 2 × लेयर × KV हेड × हेड डायमेंशन × कॉन्टेक्स्ट लंबाई × बैच साइज़ × प्रति मान बाइट। 2 कीज़ और वैल्यूज़ के लिए है। Hugging Face ब्लॉग "Unlocking Longer Generation with Key-Value Cache Quantization" में 16 बिट मानों के लिए प्रति टोकन रूप 2 × 2 × लेयर × KV हेड × हेड डायमेंशन दिया गया है।
ओवरहेड को वज़न और KV कैश के योग के प्रतिशत के रूप में डाला जाता है। यह CUDA कॉन्टेक्स्ट, एक्टिवेशन बफ़र और मेमोरी फ़्रैगमेंटेशन की जगह लेता है। डिफ़ॉल्ट 10 प्रतिशत एक अनुमान है, मापा हुआ मान नहीं।
सभी नतीजे GiB में हैं (1 GiB = 1,073,741,824 बाइट)। GPU निर्माता 24 GiB के कार्ड को "24 GB" लिखते हैं, इसलिए फ़िट तालिका कुल मान की सीधी तुलना 8, 12, 16, 24, 48 और 80 से करती है। यह अनुमान है। असली उपयोग फ़्रेमवर्क (llama.cpp, vLLM, Ollama, Transformers), कर्नेल और कैश आवंटन के तरीके पर निर्भर करता है।
VRAM में क्या भरता है
दो चीज़ें हावी रहती हैं। मॉडल और क्वांटाइज़ेशन चुनते ही वज़न तय हो जाता है। KV कैश कॉन्टेक्स्ट के हर टोकन और बैच के हर सीक्वेंस के साथ बढ़ता है, इसलिए लंबे कॉन्टेक्स्ट या कई समानांतर उपयोगकर्ताओं पर जो मॉडल "आ रहा था", वह अचानक नहीं आता।
ग्रुप्ड क्वेरी अटेंशन (GQA) वाले मॉडलों में अटेंशन हेड से कम KV हेड होते हैं, जिससे कैश कई गुना छोटा हो जाता है। इसलिए अटेंशन हेड की संख्या से ज़्यादा KV हेड वाला खाना मायने रखता है। मॉडल की config.json में num_key_value_heads देखें।
प्रति अरब पैरामीटर वज़न का आकार
| प्रति वज़न बिट | प्रति 1 अरब पैरामीटर GiB | उदाहरण: 8B मॉडल |
|---|---|---|
| 16 (FP16 / BF16) | 1.86 | 14.90 GiB |
| 8 (INT8 / Q8) | 0.93 | 7.45 GiB |
| 6 (Q6) | 0.70 | 5.59 GiB |
| 5 (Q5) | 0.58 | 4.66 GiB |
| 4 (Q4) | 0.47 | 3.73 GiB |
| 3 (Q3) | 0.35 | 2.79 GiB |
| 2 (Q2) | 0.23 | 1.86 GiB |
प्रीसेट के स्रोत
- हर रिपॉज़िटरी की config.json: huggingface.co/Qwen/Qwen2.5-{7B,14B,32B,72B}, huggingface.co/Qwen/Qwen3-{8B,32B}, huggingface.co/mistralai/Mistral-7B-v0.3, huggingface.co/mistralai/Mistral-Nemo-Base-2407, huggingface.co/microsoft/phi-4।
- Llama 3.1 8B और 70B: Meta की config.json Hugging Face पर अनुमति के बाद ही मिलती है, इसलिए मान Meta के पेपर "The Llama 3 Herd of Models" (arXiv 2407.21783) की Table 3 से लिए गए हैं। Gemma 2 9B और 27B: Google की रिपोर्ट "Gemma 2" (arXiv 2408.00118) की Table 1।
- पैरामीटर संख्या वही safetensors कुल है जो Hugging Face API हर रिपॉज़िटरी के लिए दिखाता है। जहाँ config.json में head_dim नहीं है, वहाँ hidden_size ÷ अटेंशन हेड इस्तेमाल होता है।
अक्सर पूछे जाने वाले सवाल
4 बिट पर 7B मॉडल को कितना VRAM चाहिए?
सिर्फ़ वज़न के लिए लगभग 3.3 GiB। Llama 3.1 8B श्रेणी के मॉडल में 8,192 टोकन कॉन्टेक्स्ट पर KV कैश लगभग 1 GiB जोड़ता है, यानी ओवरहेड मिलाकर करीब 5 GiB मानें। 8 GB का कार्ड इसे चला लेता है और लंबे कॉन्टेक्स्ट की गुंजाइश भी बचती है।
क्या 24 GB का कार्ड 32B मॉडल चला सकता है?
4 बिट पर हाँ। Qwen2.5 32B में लगभग 32.76 अरब पैरामीटर हैं, इसलिए वज़न करीब 15.3 GiB लेता है। 8,192 टोकन कॉन्टेक्स्ट पर KV कैश 2 GiB है, और 10 प्रतिशत ओवरहेड के साथ कुल करीब 19 GiB होता है।
मेरा असली उपयोग अनुमान से अलग क्यों है?
फ़्रेमवर्क का ओवरहेड अलग-अलग होता है। vLLM अपने KV कैश के लिए GPU का ज़्यादातर हिस्सा पहले ही रिज़र्व कर लेता है और जगह खत्म होने पर अनुरोधों को प्रीएम्प्ट करता है, llama.cpp शुरू में ही पूरे कॉन्टेक्स्ट का कैश आवंटित करता है, और GGUF के K-quant अतिरिक्त स्केल मान रखते हैं, इसलिए उनके असली बिट नाममात्र संख्या से ज़्यादा होते हैं। मेमोरी खत्म होने की त्रुटि आए तो बिट या ओवरहेड बढ़ाएँ।
क्या यह मिक्सचर ऑफ़ एक्सपर्ट्स मॉडलों पर काम करता है?
वज़न फिर भी पूरा मेमोरी में रहना चाहिए, इसलिए सक्रिय नहीं बल्कि कुल पैरामीटर डालें। KV कैश सिर्फ़ अटेंशन लेयर पर निर्भर करता है, इसलिए config की लेयर और KV हेड इस्तेमाल करें। यहाँ के प्रीसेट सभी डेंस मॉडल हैं।
Gemma 2 स्लाइडिंग विंडो इस्तेमाल करता है। क्या अनुमान कम होना चाहिए?
Gemma 2 में 4,096 टोकन की विंडो वाली लोकल लेयर और ग्लोबल लेयर बारी-बारी से आती हैं। यह टूल हर लेयर में पूरा कॉन्टेक्स्ट गिनता है, इसलिए कॉन्टेक्स्ट विंडो से लंबा होने पर Gemma 2 के लिए यह ऊपरी सीमा देता है।