🧪 VelsTech Lab இரண்டாவது அளவிடப்பட்ட Lab: ஒரே 12GB RX 6800M, ஒரே q8 KV, ஆனால் 28 CPU experts மற்றும் 262K context சாளரம் கொண்ட 35B MoE. சிறிய prompt, பெரிய KV ஒதுக்கீடு.
LLM VRAM Calculator – உங்கள் quantization-க்கு 262K-இல் weights + KV · GPU AI Performance Calculator – offload-க்கு முன் tok/s மேல் வரம்பு.
கால்குலேட்டர்களைத் திறக்கவும் →நாங்கள் சோதித்தது
- GPU: RX 6800M 12GB (RDNA2, ~384 GB/s) – Qwen 27B 16K சோதனையின் அதே கார்டு, எனவே MoE vs dense வன்பொருளில் apples-to-apples
- Model:
Ornith-1.5-35B-A3B-AD-Q5_K-Q4_K.gguf– 35B மொத்தம், 3B active (A3B MoE), Q5_K + Q4_K கலப்பு quant - MoE CPU offload:
--n-cpu-moe 28– 28 experts CPU-க்கு கட்டாயப்படுத்தப்பட்டனர் (எனவேtensor overrides to CPU with mmapஎச்சரிக்கை) - Context:
-c 262144 -fa on --cache-type-k q8_0 --cache-type-v q8_0,n_slots=1, kv_unified=false– ஒரு slot, 262K KV pool ஒதுக்கப்பட்டது - மற்றவை:
-ngl 999 --jinja --reasoning-preserve --parallel 1 --temp 0.6 --top-p 0.95 --top-k 20,n_threads=8 - Builds: Run 1 –
llama.cpp/build/bin/llama-server(ROCm); Run 2 –llama.cpp_vulkan/build-vulkan/bin/llama-server(Vulkan)
அதை எப்படி இயக்கினோம்
llama-server \ -m Ornith-1.5-35B-A3B-AD-Q5_K-Q4_K.gguf \ -ngl 999 --n-cpu-moe 28 \ --cache-type-k q8_0 --cache-type-v q8_0 \ -c 262144 -fa on --jinja --reasoning-preserve \ --parallel 1 --temp 0.6 --top-p 0.95 --top-k 20
இரண்டு ரன்களிலும் ஒரே 335-டோக்கன் prompt (progress 322→331), ~274 vs 307 tokens generate. Server: listening on 127.0.0.1:8080, llama threadpool n_threads=8.
நாங்கள் அளந்தது
Run Prompt eval Decode (tg) Total Graphs ───────────────────────────────────────────────────────────────────────────────────────────── ROCm 3995 ms /335 tok = 11.93 ms/tok = 83.84 tok/s 100:25.16 179:25.52 257:25.60 → 25.62 tok/s 14.65s /609 tok 272 Vulkan 4029 ms /335 tok = 12.03 ms/tok = 83.13 tok/s 100:19.65 160:19.66 219:19.65 → 19.66 tok/s 19.59s /642 tok 305
முக்கிய கண்டுபிடிப்பு: 262K + MoE-இல், ROCm decode-இல் ~30% வேகமானது (25.62 vs 19.66). Prompt eval ~83 tok/s-இல் சமம் – 335 tokens 262K திறனுடன் ஒப்பிடும்போது அற்பம், எனவே prefill context-ஐ அழுத்துவதில்லை. மொத்த wall நேரம் decode-ஐ பிரதிபலிக்கிறது: ~600 tok-க்கு ROCm 14.65s vs Vulkan 19.59s.
Logs உண்மையில் என்ன சொன்னது – மற்றும் என்ன உடைந்தது
W common_fit_params: failed to fit params to free device memory: n_gpu_layers already set by user to 999, abort(ROCm run) – Qwen போலவே: நீங்கள்-ngl 999-ஐ கட்டாயப்படுத்தினீர்கள், எனவே--fitபுறக்கணிக்கப்படுகிறது. சரிசெய்தல்:-ngl 999-ஐ நீக்கி fitted layers-ஐ log செய்யவும், அல்லது-ngl 60மற்றும்--n-cpu-moe-ஐ ஒன்றாக தெளிவாக அமைக்கவும்.W llama_model_loader: tensor overrides to CPU are used with mmap enabled - consider using --load-mode none for better performance–--n-cpu-moe 28உடன் நீங்கள் உடனடியாக CPU RAM-க்கு நகலெடுக்கப்படும் tensors-ஐ mmap செய்கிறீர்கள். MoE CPU offload-க்கு--load-mode none-ஐ சேர்க்கவும்.kv_unified=false, n_slots=1, n_ctx_slot=262144– prompt 335 tokens ஆக இருந்தாலும் ஒரு slot, 262K KV pool ஒதுக்கப்பட்டுள்ளது. அந்த ஒதுக்கீடுதான் உங்களுக்கு q8 KV தேவைப்படுவதற்கான காரணம் – 262K-இல் f16 ~2× பெரியதாக இருக்கும், OOM ஆகலாம். இங்குள்ள decode வேகம் pool ஒதுக்கப்பட்ட நிலையில் உள்ளது, நிரப்பப்படவில்லை.
இது கால்குலேட்டர்களுக்கு எப்படி பொருந்துகிறது
எடைகள் ~35B கலப்பு Q5/Q4 ≈ 13–14 GB (சராசரியாக Q5 0.66 + Q4 0.61). MoE-க்கு 262K-இல் KV q8 என்பது எளிய 2×layers×kv_heads×head_dim×2×context அல்ல – MoE ஒவ்வொரு டோக்கனுக்கும் KV-ஐ பகிர்ந்து கொள்கிறது, எனவே நீங்கள் 35B-ஐ உள்ளிட்டால் எங்கள் VRAM Calculator அதிகமாக மதிப்பிடும்; 3B active + 28 CPU experts-ஐ தனித்தனியாக உள்ளிடவும் அல்லது குறைக்கப்பட்ட KV உடன் custom model பயன்படுத்தவும். 3B active-இல் கூட, 262K q8 என்பது ~262K × ~0.5KB → முழுமையாக resident ஆக இருந்தால் ~130 GB – நீங்கள் resident அல்ல, MoE-sparse + q8 + CPU offload, எனவே முழு VRAM-ஐ கருதும் GPU AI Performance Calculator-இலிருந்து வரும் 60 tok/s bound அல்ல, 19–25 tok/s நம்பத்தகுந்தது.
எப்படி கணக்கிடுகிறோம் – எண்களுக்குப் பின்னால் உள்ள சூத்திரங்கள்
VRAM: LLM VRAM Calculator
weights = params × bytes_per_weight / GiB kv_per_token = 2 × layers × kv_heads × head_dim × 2 bytes (f16) or ×1 (q8) kv_cache = kv_per_token × context × batch / GiB
262K-இல் MoE-க்கு, ஒவ்வொரு டோக்கனுக்கான KV-க்கு மொத்த 35B அல்ல, active அளவுருக்களைப் பயன்படுத்தவும், அல்லது custom model-ஐ மாற்றவும்.
Speed: GPU AI Performance Calculator
decode_tok/s ≈ (memory_BW × 0.8) / bytes_per_token
MoE ஒவ்வொரு டோக்கனுக்கும் குறைவான பைட்டுகளை decode செய்கிறது (35B அல்ல, active 3B), எனவே bound 35B dense-ஐ விட அதிகம். உங்கள் 25 tok/s என்பது bound-இல் ~40% – இடைவெளி CPU MoE + PCIe.
இறுதி வரி
Ornith 35B MoE 262K-இல் q8 KV + 28 CPU experts உடன் 12GB-இல் இயங்குகிறது, ஆனால் decode-இல் செலுத்துகிறீர்கள்: ROCm 25.6 tok/s குறுகிய பதில்களுக்கு பயன்படத்தக்கது, Vulkan 19.6 இங்கு மெதுவானது (Qwen 16K-வின் எதிர்மறை). இரண்டுக்கும் உகந்ததாக --load-mode none மற்றும் -ngl 999 இல்லாமை தேவை. அடுத்த Lab ஒரே RX 6800M-ல் MoE vs dense ஆகும்: இந்த Ornith 35B-A3B (3B active) vs Qwen 27B dense 16K – active அளவுருக்கள் vs context பரிமாற்றம், ஒரே கார்டு, இரண்டு என்ஜின்கள்.
ஒரே RX 6800M-ல் Ornith 35B MoE (3B active, 262K) vs Qwen 27B dense (27B, 16K)-ஐ ஒப்பிடுவோம் – ROCm vs Vulkan, q8 vs f16 KV, fitted layers log செய்யப்பட்ட நிலையில்.
Qwen 27B 16K சோதனையைப் படிக்கவும் →