# MoE vs Dense on RX 6800M: 3B Active vs 27B at 16K/262K – VelsTech Lab

> Same RX 6800M 12GB – Ornith 35B MoE (3B active, 262K) vs Qwen 27B dense (27B, 16K) at q8 KV, ROCm vs Vulkan head-to-head.

*Source: https://velstech.net/moe-vs-dense-rx6800m-16k-vs-262k.ta (Tamil translation of https://velstech.net/moe-vs-dense-rx6800m-16k-vs-262k) · Updated: 2026-08-27*

*Markdown version. [Read the interactive guide](https://velstech.net/moe-vs-dense-rx6800m-16k-vs-262k.ta). English Markdown: https://velstech.net/moe-vs-dense-rx6800m-16k-vs-262k.md.*

---

🧪 VelsTech Lab ஒரே கார்டு, ஒரே என்ஜின்கள், அளவிடுவதற்கு இரண்டு எதிர் வழிகள்: 16K-ல் Qwen 27B dense vs 262K-ல் Ornith 35B-A3B MoE (3B active), இரண்டும் 12GB RX 6800M-ல் q8 KV. யார் வெல்கிறார் என்பது நீங்கள் கேட்பதையும் எவ்வளவு உருவாக்குகிறீர்கள் என்பதையும் பொறுத்தது.

🔧 உங்கள் மாடலுக்கான கணக்கீட்டை மீண்டும் இயக்கவும்

MoE: *active* அளவுருக்களை (3B, 35B அல்ல) + தனிப்பயன் KV-ஐ உள்ளிடவும். Dense: முழு அளவுருக்களை உள்ளிடவும். `q8_0` vs `f16`-ஐ நேர்மையாக வைத்திருங்கள்.

[LLM VRAM Calculator →](https://velstech.net/llm-vram-calculator) [GPU Performance →](https://velstech.net/gpu-ai-calculator)

## இரண்டு ரன்களும் பக்கவாட்டில்

ஒரே GPU **RX 6800M 12GB** (~384 GB/s), ஒரே `q8_0` KV, ஒரே `n_threads=8`, ஒரே 335-373 prompt டோக்கன்கள். மாடல் + 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 முழு அறிக்கை](https://velstech.net/qwen-27b-ridge-rocm-vs-vulkan); கடைசி இரண்டு: [Ornith 35B 262K முழு அறிக்கை](https://velstech.net/ornith-35b-moe-262k-rocm-vs-vulkan). அனைத்தும் `-c` ஒதுக்கப்பட்ட KV, `fa on`, 373/335 prompt டோக்கன்கள், ~600 gen டோக்கன்கள்.

## உண்மையில் என்ன நடக்கிறது

- Decode என்பது MoE-வின் வெற்றி, ஆனால் எல்லா இடங்களிலும் அல்ல. 16K dense-ல் Vulkan +20% வெல்லும் (21.84 vs 18.12). 262K MoE-ல் ROCm +30% வெல்லும் (25.62 vs 19.66). ஒரே கார்டு, எதிர் என்ஜின் வெற்றி – 262K-ல் bottleneck தூய VRAM BW (dense 27B) இலிருந்து CPU-MoE + PCIe (CPU-ல் 28 experts) ஆக மாறுகிறது.

- Prompt eval prompt அளவால் அல்ல, context ஒதுக்கீட்டால் சரிகிறது. Qwen 16K prompt 217 tok/s vs Ornith 262K prompt 83 tok/s – ஒரே 335 டோக்கன்கள், ஆனால் Ornith ஒரு 262K KV pool-ஐ (kv_unified=false, n_slots=1) ஒதுக்குகிறது, அது prefill bookkeeping-க்கு செலவாகிறது. Prompt குறுகியதாக இருந்தாலும் -c-க்கு நீங்கள் பணம் செலுத்துகிறீர்கள்.

- MoE ஒவ்வொரு டோக்கனுக்கும் மிகக் குறைவான பைட்டுகளை decode செய்கிறது. Dense ஒவ்வொரு டோக்கனுக்கும் 27B எடைகளை decode செய்கிறது; MoE ~3B active-ஐ decode செய்கிறது. அதனால்தான் 262K-ல் Ornith 12GB-ல் 25.6 tok/s செய்ய முடிகிறது, அதேசமயம் Qwen 16K-ல் 18-21 செய்கிறது – மொத்தம் அல்ல, active தான் முக்கியம். எங்கள் GPU calculator bound decode ≈ BW×0.8 / bytes_per_token அனைத்தும் resident ஆக இருந்தால் ~30 tok/s கணிக்கிறது; 25.6-க்கான இடைவெளி CPU MoE + offload ஆகும்.

- இரண்டும் -ngl 999-ஐ கட்டாயப்படுத்தியது → failed to fit params... abort. --fit on புறக்கணிக்கப்பட்டது. அடுத்த Lab -ngl-ஐ நீக்கி fitted layers-ஐ log செய்யும், மேலும் MoE-க்கு --load-mode none-ஐ சேர்க்கும் (மேலும் tensor overrides to CPU with mmap-ஐ சரிசெய்கிறது).

## VRAM கணக்கீடு – 12GB ஏன் இன்னும் இயங்குகிறது

Qwen 27B 3.7bpw: `27B ×0.4625 ≈12.5 GB` எடைகள் + q8 KV 16K ≈2.2 GB + 6% overhead → ~15.6 GB ([VRAM Calculator](https://velstech.net/llm-vram-calculator)-இலிருந்து) – 12GB-க்கு அதிகமாக, எனவே partial offload 18-21 tok/s vs 30 tok/s bound-ஐ விளக்குகிறது.

Ornith 35B MoE 3B active: 35B ஆக எண்ணினால் Q5/Q4 கலவை ≈13-14 GB, ஆனால் ஒவ்வொரு டோக்கனுக்கான KV active 3B-உடன் அளவிடப்படுகிறது, எனவே naive ஆக dense என எண்ணினால் 262K q8 ≈262K×0.5KB ≈131 GB ஆகும். அதனால்தான் 28 experts-ஐ CPU-க்கு கட்டாயப்படுத்துகிறோம் – நீங்கள் resident அல்ல, நீங்கள் sparse. கால்குலேட்டரில் 35B அல்ல, `3B active` + custom `layers 48 / kv 4 / hd 128`-ஐ உள்ளிடவும், அல்லது `Custom model…`-ஐ மாற்றவும்.

எப்படி கணக்கிடுகிறோம் – எண்களுக்குப் பின்னால் உள்ள சூத்திரங்கள்

#### 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* அளவுருக்களைப் பயன்படுத்தவும். [LLM VRAM Calculator](https://velstech.net/llm-vram-calculator) → Custom model-ஐப் பார்க்கவும்.

#### வேக வரம்பு

```
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 கார்டில் எதைத் தேர்ந்தெடுக்க வேண்டும்?

- குறுகிய prompts + நீண்ட பதில்கள் (chat, 16K சாளரம்): Vulkan-ல் Qwen 27B dense (21.8 tok/s) சிறந்த chat அனுபவத்தை அளிக்கிறது.

- பெரிய context + MoE (262K சாளரம், 28 CPU experts): ROCm-ல் Ornith 35B MoE (25.6 tok/s) சாளரம் இருந்தாலும் decode-ல் வெல்லும், ஆனால் --load-mode none மற்றும் முதல் prompt-ல் பொறுமை (83 tok/s) தேவை.

- அடுத்த மேம்படுத்தல்: இரண்டுக்கும் -ngl 999 இல்லாமை, fitted layers-ஐ log செய்வது, மற்றும் ஒவ்வொரு context-லும் q8 vs f16 KV-ஐ சோதிப்பது தேவை. அதுவே Lab #4.

🧪 மூல ரன்களில் ஆழ்ந்து பார்க்கவும்

முழு logs, கட்டளைகள் மற்றும் எச்சரிக்கைகள் இரண்டு மூல Labs-களிலும் உள்ளன – Qwen 16K-லிருந்து தொடங்கவும், பிறகு Ornith 262K, பிறகு இங்கே ஒப்பிடவும்.

[Qwen 27B 16K →](https://velstech.net/qwen-27b-ridge-rocm-vs-vulkan) [Ornith 35B 262K →](https://velstech.net/ornith-35b-moe-262k-rocm-vs-vulkan)

---

*VelsTech – https://velstech.net/moe-vs-dense-rx6800m-16k-vs-262k.ta.md*
