🧪 VelsTech Lab – Coming soon यह Lab format में पहली measured post है: exact hardware, software, command और raw llama-server timings – क्या टूटा, वह भी शामिल।
LLM VRAM Calculator – क्या 27B 3.7bpw + 16K आपके VRAM में fit होगा? · GPU AI Performance Calculator – चलाने से पहले कितने tok/s की उम्मीद करें।
Open calculators →हमने क्या टेस्ट किया
- GPU: AMD RX 6800M 12GB (mobile, RDNA2, 12 GB VRAM, ~384 GB/s) – वही budget 12 GB card जिसे हम local AI के लिए recommend करते हैं
- Model:
Qwen3.8-27B-Ridge-3.7bpw.gguf– Qwen 27B class पर 3.7 bits per weight (~12.3 GB weights)। Ridge quant, K-quants नहीं। - Context:
-c 16384के साथ--cache-type-k q8_0 --cache-type-v q8_0 -fa on(q8 KV, flash attention on) - Offload:
-ngl 999 --fit on(सभी layers force कीं; नीचे warning देखें) - Prompt: 373 tokens (दोनों runs में same prompt),
n_slots=4, n_ctx_slot=16384, kv_unified=true, n_threads=8 - Builds: Run 1 –
/home/user-name/llama.cpp/build/bin/llama-server(ROCm); Run 2 –/home/user-name/llama.cpp_vulkan/build-vulkan/bin/llama-server(Vulkan)
हमने इसे कैसे चलाया
export LD_LIBRARY_PATH=/opt/rocm/lib:$LD_LIBRARY_PATH llama-server \ -m /home/user-name/models/Qwen3.8-27B-Ridge-3.7bpw.gguf \ -ngl 999 \ --cache-type-k q8_0 --cache-type-v q8_0 \ -c 16384 -fa on --fit on --reasoning-preserve --jinja
दो backends, identical flags। Server listening on http://127.0.0.1:8080 रिपोर्ट करता है फिर 373-token prompt को process करके ~228-243 tokens generate करता है (600 token budget, truncated 0)।
हमने क्या मापा
Run Prompt eval Decode (tg) Total ───────────────────────────────────────────────────────────────────────────── ROCm (build) 1713 ms / 373 tok = 4.60 ms/tok = 217.6 tok/s 100:18.42 155:18.12 210:18.08 → 18.12 tok/s 14.24s / 601 tok graphs reused 226 Vulkan 2493 ms / 373 tok = 6.68 ms/tok = 149.6 tok/s 100:22.09 166:21.83 232:21.82 → 21.84 tok/s 13.57s / 616 tok graphs reused 241
Takeaway: Vulkan decode पर ~20% तेज़ है (21.84 vs 18.12 tok/s) – वही हिस्सा जो chatting के लिए मायने रखता है। ROCm prompt eval पर ~45% तेज़ है (217 vs 149 tok/s) – लंबे prompt पर time to first token। 615 tokens के लिए end-to-end, Vulkan 0.67s से जीतता है (13.57 vs 14.23) क्योंकि decode हावी है।
Logs ने वास्तव में क्या कहा – और क्या टूटा
W common_fit_params: failed to fit params to free device memory: n_gpu_layers already set by user to 999, abort– आपने-ngl 999force किया इसलिए--fit onignore हो गया। 12 GB card पर यह 27B q8-KV run आंशिक रूप से offload होना ही चाहिए; 999 force करने से छिप जाता है कि वास्तव में कितने layers fit हुए। अगले run के लिए fix:-ngl 999हटाएँ और--fit onको चुनने दें, या-ngl 60सेट करें औरn_gpu_layerslog करें।- 14×
W model has unused tensor blk.64.* (size ~20KB–73MB)– Model header 65 blocks (0-64) दिखाता है लेकिन block 64 Qwen3 काnextnspeculative head है (eh_proj/enorm/hnorm/shared_head_norm)। llama.cpp इसे ignore करता है जब इस build में--jinja --reasoning-preserveके साथ drafting नहीं हो रहा। Error नहीं है, लेकिन आप ~300 MB dead weight load करते हैं। kv_unified=true, n_slots=4, n_ctx_slot=16384– 4 slots एक ही KV pool share करते हैं। अगर आप 16K पर parallel requests मारेंगे, तो single-slot test से भी तेज़ OOM होगा।
Calculators पर यह कैसे map होता है
Weights: 27B × 0.4625 bytes (3.7bpw/8) ≈ 12.5 GB। KV q8 16K पर: हमारा VRAM Calculator 8K पर ~1.0 GB अनुमान लगाता है 2×layers×kv_heads×head_dim×2 bytes×context से – 16K q8 पर यह ~2× है, तो ~2.2 GB। साथ में 6% overhead + 0.25 GB → कुल ~15.6 GB, 12 GB से काफी ऊपर। इसका चलना ही साबित करता है कि partial offload हुआ (system RAM के ज़रिए) – जो ~18-21 tok/s बनाम GPU AI Performance Calculator की ~30 tok/s upper bound को समझाता है अगर fully resident होता। यही delta offload tax है।
हम कैसे calculate करते हैं – संख्याओं के पीछे के formulas
Calculators जैसा ही logic, ताकि आप verify कर सकें।
VRAM: LLM VRAM Calculator
weights = params × bytes_per_weight / GiB kv_per_token = 2 × layers × kv_heads × head_dim × 2 bytes kv_cache = kv_per_token × context × batch / GiB
Speed: GPU AI Performance Calculator
decode_tok/s ≈ (memory_BW × 0.8) / bytes_per_token
आपका measured 18-21 tok/s 30 tok/s bound से नीचे है क्योंकि bytes_per_token में VRAM BW के अलावा PCIe + RAM offload भी शामिल है।
निष्कर्ष
12 GB RX 6800M पर 16K पर Qwen 27B Ridge 3.7bpw चलता तो है, लेकिन fully resident नहीं है। अगर आप chat करते हैं (decode-bound), तो Vulkan का +20% वास्तविक है। अगर आप लंबे documents feed करते हैं, तो ROCm का तेज़ prefill ज़्यादा मायने रखता है। Lab verdict के लिए: usable लेकिन offloaded – 16K q8 KV पर 18-21 tok/s की उम्मीद करें, 32K पर और धीमा। आराम से resident चाहिए? c 8192 पर drop करें, q8_0→f16 सिर्फ headroom हो तभी इस्तेमाल करें, या 16/24 GB पर step up करें।
अगला: वही model --fit on के साथ बिना -ngl 999 के (fitted layers दिखाएँ), और q8_0 vs f16 KV 16K पर। फिर 70B range सिर्फ cloud पर।