🧪 VelsTech Lab क्या 12 GB mobile GPU पर 27B dense model चलाना असल में काम कर सकता है? मैंने Qwen3.8 27B GSQ-RCO के दो quants – IQ2_XS (MTP draft head के साथ) और IQ3_S – को RX 6800M पर साथ-साथ चलाया। कौन-सा quant चुनना है यह तय करता है कि आपको कितना context और कितनी speed मिलेगी – और llama.cpp का एक flag गलती ने IQ3_S run से चुपचाप 92% context छीन लिया।
LLM VRAM Calculator – क्या आपकी VRAM में 27B IQ2/IQ3 + आपका context फिट होगा? · GPU AI Performance Calculator – चलाने से पहले कितने tok/s मिलेंगे, अनुमान लगाएँ।
कैलकुलेटर खोलें →टेस्ट मशीन
- Machine: ASUS ROG Strix G513QY · Ryzen 9 5900HX (8C/16T) · AMD RX 6800M 12GB (RDNA2, mobile) · 32 GB RAM · 2 TB NVMe
- OS: Ubuntu 26.04.1 LTS (Wayland) · ROCm · llama.cpp (current build),
n_threads=8 - Model A:
Qwen3.8-27B-GSQ-RCO-IQ2_XS-mtp.gguf– 27B dense, ~2 bpw i-quants, block-64 MTP draft head के साथ - Model B:
Qwen3.8-27B-GSQ-RCO-IQ3_S.gguf– वही model, ~3 bpw, draft head नहीं - दोनों runs:
-ngl 999 --cache-type-k q8_0 --cache-type-v q8_0 -fa on --fit on --reasoning-preserve --jinja
कैसे चलाया
Run 1 – IQ2_XS (MTP tensors के साथ)
export LD_LIBRARY_PATH=/opt/rocm/lib:$LD_LIBRARY_PATH llama-server \ -m /home/user-name/models/Qwen3.8-27B-GSQ-RCO-IQ2_XS-mtp.gguf \ -ngl 999 \ --cache-type-k q8_0 \ --cache-type-v q8_0 \ -fa on \ --fit on \ --reasoning-preserve \ --jinja
Run 2 – IQ3_S
export LD_LIBRARY_PATH=/opt/rocm/lib:$LD_LIBRARY_PATH llama-server \ -m /home/user-name/models/Qwen3.8-27B-GSQ-RCO-IQ3_S.gguf \ -ngl 999 \ --cache-type-k q8_0 \ --cache-type-v q8_0 \ -fa on \ --fit on \ --reasoning-preserve \ --jinja
नतीजे
Metric IQ2_XS-mtp IQ3_S Delta
──────────────────────────────────────────────────────────────
Decode (eval) 20.77 tok/s 18.97 tok/s +9.5%
Decode (tg) 20.70 tok/s 18.93 tok/s +9.4%
Prompt eval 113.51 tok/s 178.32 tok/s -36% (IQ3_S तेज़)
Context fitted 52,736 tok 4,096 tok 12.9×
VRAM used 11.57 / 12.87 GB 12.52 / 12.87 GB
(90%) (97%)
Graphs reused 124 252
Chat UI avg speed 20.9 t/s 19.0 t/s
मुख्य बात: IQ2_XS ने decode जीती – वो भी 13× ज़्यादा context लेकर – और बड़ा KV cache decode को धीमा करता है, तेज़ नहीं, तो ये जीत असली है। IQ3_S प्रति token ज़्यादा bytes पढ़ता है (~3 bpw vs ~2 bpw) और ये कार्ड bandwidth-bound है; यही अंतर ~1.8 tok/s बनकर दिखता है। असली सरप्राइज़ prompt eval है: IQ3_S इनपुट 57% तेज़ प्रोसेस करता है (178 vs 114 tok/s) – 2 bpw वाले i-quants को compute-bound prompt pass में भारी dequant/codebook खर्च देना पड़ता है, जबकि bandwidth-bound decode में रैंकिंग पलट जाती है।
प्रूफ – chat runs
VRAM – चुपचाप सबसे बड़ी बात
लॉग्स ने क्या कहा – और क्या टूटा
- Run 2:
W common_fit_params: failed to fit params to free device memory: n_gpu_layers already set by user to 999, abort–--fitखुद-nglऔर context तय करना चाहता है; हाथ से-ngl 999फ़ोर्स करने पर वो मान ही जाता है, इसलिए IQ3_S डिफ़ॉल्ट 4096-token context पर रुक गया। (नीचे follow-up में दिखता है कि-nglहटाना इस model पर असल में और बुरा है – इसे फ़ोर्स करके ही रखें।) - Run 1: पंद्रह
W model has unused tensor blk.64.*लाइनें – पूरा extra transformer block (attention + FFN +nextn.*MTP head, ~348 MB) ignore हो गया क्योंकि--spec-type draft-mtpflag पास ही नहीं हुआ। इस run में MTP head सिर्फ़ dead weight है; उसे चालू करना अगला साफ़-सुथरा टेस्ट है (Tiel-Coder 35B-A3B पर इसने +14.6% दिए थे)। - दोनों runs:
W srv llama_server: CORS is set to allow all origins ('*') and no API key is set– जब तक server सिर्फ़127.0.0.1पर bind है तब तक बेहतर है; API key के बिना ये port कभी नेटवर्क पर न खोलें। - दोनों runs:
n_ctx_slot = 52736 / 4096, kv_unified = 'true'– 4 slots पर unified KV; 52K वो आँकड़ा है जो--fitने IQ2_XS weights के साथ फिट होते हुए साबित किया।
Follow-up: --fit को चुनने दिया, और MTP चालू किया
पहले राउंड के दो खुले सवालों के जवाब में मैंने दोनों configs दोबारा चलाए। दोनों जवाब उम्मीद से हटकर निकले।
IQ3_S बिना -ngl – auto-fit
prompt eval: 3329.43 ms / 373 tokens ( 8.93 ms/tok, 112.03 tok/s) eval (decode): 45080.30 ms / 330 tokens ( 137.02 ms/tok, 7.30 tok/s) context: n_ctx_slot = 4096 (fit ने बढ़ाया ही नहीं) W resolve_fused_ops: layer 0 is assigned to device CPU but fused Gated Delta Net (chunked) is assigned to device ROCm0 W fused Gated Delta Net (chunked) not supported, set to disabled
-ngl 999 हटाने से हालत नाटकीय रूप से खराब हो गई: 7.30 tok/s – manual सेटिंग का एक-तिहाई भी नहीं। --fit ने layer 0 को CPU पर डाल दिया और context डिफ़ॉल्ट 4K से बढ़ाया ही नहीं। ये warning ये भी बताती है कि model आख़िर है क्या: Qwen3.8 एक Gated Delta Net (GDN) hybrid है – ज़्यादातर layers linear attention इस्तेमाल करती हैं, और ROCm पर fused chunked-GDN kernel नहीं है, इसलिए CPU/GPU हाइब्रिड विभाजन throughput गिरा देता है। इस कार्ड पर IQ3_S के लिए -ngl 999 (सारी layers GPU पर, छोटा context स्वीकार करें) ही सही config है – मेरी असली "गलती" ही सही जवाब निकली।
IQ2_XS --spec-type draft-mtp के साथ
prompt eval: 3568.06 ms / 373 tokens ( 9.57 ms/tok, 104.54 tok/s) eval (decode): 8148.60 ms / 189 tokens ( 43.34 ms/tok, 23.07 tok/s) generate: 103 tokens @ 26.73 tok/s (tg), 26.99 tok/s (tg_3s) draft: acceptance = 0.48052 (111 accepted / 231 generated), mean len = 2.44 context: n_ctx_slot = 4096 (--fit aborted: -ngl 999 + draft context) W llama_sampler_backend_support: device 'ROCm0' does not have support for op TOP_K needed for sampler 'top-k' (×4)
MTP head चालू है: 23.07 tok/s (peak 26.7) बनाम इसके बिना 20.77। दो बातें इसे साफ़ +11% नहीं रहने देतीं: MTP वाले run को सिर्फ़ 4K context मिला (draft context उस headroom को खा जाता है जिसे --fit KV पर खर्च करता, और -ngl 999 सेट होने पर fit मान जाता है), और छोटा KV cache decode को बेहतर दिखाता है – बराबर context पर शुद्ध MTP लाभ +5–8% के करीब है। चारों TOP_K warnings भी मायने रखते हैं: ROCm draft sampler का top-k GPU पर नहीं चला सकता, जिससे acceptance 48% पर अटक सकती है (Tiel-Coder पर 54.7%)। फिर भी इस कार्ड पर अब तक का सबसे तेज़ IQ2_XS नंबर।
निष्कर्ष
12 GB RX 6800M पर इस 27B के लिए IQ2_XS ही practical choice है: 52K context पर ~21 tok/s, और --spec-type draft-mtp के साथ ~23 tok/s अगर 4K context चलेगा (या fit/MTP के आपस में पटने का इंतज़ार करें)। IQ3_S कागज़ पर बेहतर quant है पर इस कार्ड के बस से बाहर: असली context से पहले ही 97% VRAM, और "proper" auto-fit रास्ता एक जाल है – layer 0 CPU पर चला जाता है और decode 7.3 tok/s पर गिरकर रुक जाता है। अगर IQ3_S चलाना ही है तो -ngl 999 फ़ोर्स करें और 4K मान लें। अब खुले सवाल hardware के नहीं, software stack के हैं: ROCm के लिए fused GDN kernel और MTP sampler के लिए TOP_K support – यही इस 3 bpw quant और बेहतर draft acceptance को खोलेंगे।
संबंधित: LLM के लिए कितनी VRAM चाहिए? · Quantization deep dive · इसी कार्ड पर MoE vs Dense।
VelsTech Lab पर वापस →