🧪 VelsTech Lab – Coming soon यह Lab format में पहली measured post है: exact hardware, software, command और raw llama-server timings – क्या टूटा, वह भी शामिल।

🔧 पहले अपना fit चेक करें

LLM VRAM Calculator – क्या 27B 3.7bpw + 16K आपके VRAM में fit होगा? · GPU AI Performance Calculator – चलाने से पहले कितने tok/s की उम्मीद करें।

Open calculators →

हमने क्या टेस्ट किया

हमने इसे कैसे चलाया

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 ने वास्तव में क्या कहा – और क्या टूटा

  1. W common_fit_params: failed to fit params to free device memory: n_gpu_layers already set by user to 999, abort – आपने -ngl 999 force किया इसलिए --fit on ignore हो गया। 12 GB card पर यह 27B q8-KV run आंशिक रूप से offload होना ही चाहिए; 999 force करने से छिप जाता है कि वास्तव में कितने layers fit हुए। अगले run के लिए fix: -ngl 999 हटाएँ और --fit on को चुनने दें, या -ngl 60 सेट करें और n_gpu_layers log करें।
  2. 14× W model has unused tensor blk.64.* (size ~20KB–73MB) – Model header 65 blocks (0-64) दिखाता है लेकिन block 64 Qwen3 का nextn speculative head है (eh_proj/enorm/hnorm/shared_head_norm)। llama.cpp इसे ignore करता है जब इस build में --jinja --reasoning-preserve के साथ drafting नहीं हो रहा। Error नहीं है, लेकिन आप ~300 MB dead weight load करते हैं।
  3. 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 करें।

🧪 और Lab

अगला: वही model --fit on के साथ बिना -ngl 999 के (fitted layers दिखाएँ), और q8_0 vs f16 KV 16K पर। फिर 70B range सिर्फ cloud पर।

Back to VelsTech Lab →