🧪 VelsTech Lab एक ही card, एक ही engine, scale करने के दो विपरीत तरीके: Qwen 27B dense 16K पर बनाम Ornith 35B-A3B MoE (3B active) 262K पर, दोनों q8 KV पर 12GB RX 6800M पर। कौन जीतेगा यह इस पर निर्भर करता है कि आप क्या पूछते हैं बनाम आप कितना generate करते हैं।

🔧 अपने model के लिए गणित दोहराएँ

MoE: active params (35B नहीं, 3B) + custom KV दर्ज करें। Dense: पूरे params दर्ज करें। q8_0 vs f16 को ईमानदारी से रखें।

LLM VRAM Calculator → GPU Performance →

दोनों runs आमने-सामने

एक ही GPU RX 6800M 12GB (~384 GB/s), एक ही q8_0 KV, एक ही n_threads=8, एक ही 335-373 prompt tokens। केवल model + context + MoE offload अलग हैं।

Model               Params   Context  KV type  Offload          Build   Prompt eval          Decode tg          Total
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Qwen 27B Ridge       27B dense  16K   q8_0     -ngl 999 (+fit abort)  ROCm    1713 ms /373 = 217.6 tok/s   18.12 tok/s   14.23s /601 tok
3.7bpw Ridge                                                Vulkan  2493 ms /373 = 149.6 tok/s   21.84 tok/s   13.57s /616 tok

Ornith 35B-A3B MoE   35B/3B*    262K  q8_0     --n-cpu-moe 28        ROCm    3995 ms /335 = 83.8 tok/s    25.62 tok/s   14.65s /609 tok
Q5_K/Q4_K mix               kv_unified=false              Vulkan  4029 ms /335 = 83.1 tok/s    19.66 tok/s   19.59s /642 tok
* 35B total, 3B active – MoE decodes 3B, not 35B.

पहली दो पंक्तियाँ: Qwen 27B 16K full report; आखिरी दो: Ornith 35B 262K full report। सभी -c reserved KV, fa on, 373/335 prompt tokens, ~600 gen tokens पर।

वास्तव में क्या हुआ

VRAM गणित – 12GB अब भी क्यों चलता है

Qwen 27B 3.7bpw: 27B ×0.4625 ≈12.5 GB weights + q8 KV 16K ≈2.2 GB + 6% overhead → ~15.6 GB (VRAM Calculator से) – 12GB से काफी अधिक, इसलिए partial offload 18-21 tok/s बनाम 30 tok/s bound को समझाता है।

Ornith 35B MoE 3B active: 35B mix Q5/Q4 अगर 35B के रूप में गिना जाए तो ≈13-14 GB, लेकिन KV प्रति token active 3B के साथ scale करता है, इसलिए 262K q8 naively dense के रूप में गिनने पर ~262K×0.5KB ≈131 GB होगा। इसलिए हम 28 experts को CPU पर force करते हैं – आप resident नहीं हैं, आप sparse हैं। calculator में 35B नहीं, 3B active + custom layers 48 / kv 4 / hd 128 दर्ज करें, या Custom model… को toggle करें।

हम कैसे calculate करते हैं – संख्याओं के पीछे के formulas

VRAM

weights = params × bytes_per_weight / GiB
kv_per_token = 2 × layers × kv_heads × head_dim × bytes
kv_cache = kv_per_token × context × batch / GiB
total = weights + kv_cache + (weights+kv)×0.06+0.25

MoE के लिए KV के लिए active params का उपयोग करें, total नहीं। LLM VRAM Calculator → Custom model देखें।

Speed bound

decode_tok/s ≈ (memory_BW ×0.8) / bytes_per_token (weights + KV per token)

MoE bytes_per_token ≈ active 3B, dense ≈27B – इसलिए Ornith कुल बड़ा होने के बावजूद Qwen से तेज़ हो सकता है।

तो 12GB card पर कौन सा चुनें?

🧪 Raw runs में गहराई से देखें

पूरे logs, commands और warnings दोनों source Labs में हैं – Qwen 16K से शुरू करें, फिर Ornith 262K, फिर यहाँ compare करें।

Qwen 27B 16K → Ornith 35B 262K →