🧪 VelsTech Lab 12 GB mobile GPU-ல் 27B dense model உண்மையில் பயனுள்ளதாக இயங்குமா? Qwen3.8 27B GSQ-RCO-யின் இரண்டு quants – IQ2_XS (MTP draft head உடன்) மற்றும் IQ3_S – ஐ RX 6800M-ல் பக்கத்துக்குப் பக்கமாக இயக்கினேன். எந்த quant தேர்வு செய்கிறீர்கள் என்பது context பட்ஜெட்டையும் வேகத்தையும் தீர்மானிக்கிறது; llama.cpp-ல் ஒரு flag தவறு IQ3_S ஓட்டத்திடமிருந்து அமைதியாக 92% context-ஐ பறித்தது.

🔧 முதலில் உங்கள் fit-ஐ நீங்களே சரிபார்க்கவும்

LLM VRAM Calculator – 27B IQ2/IQ3 + உங்கள் context உங்கள் VRAM-ல் பொருக்குமா? · GPU AI Performance Calculator – இயக்குவதற்கு முன்பே எந்த tok/s எதிர்பார்க்கலாம் என்று கணக்கிடுங்கள்.

கால்குலேட்டர்களைத் திறக்க →

சோதனை இயந்திரம்

System details பலகை: ASUS ROG Strix G513QY, Ryzen 9 5900HX, 32 GB RAM, AMD Radeon RX 6800M, Ubuntu 26.04
சோதனை இயந்திரம் – 12 GB RDNA2 mobile GPU கொண்ட 2021 கேமிங் லேப்டாப்.

எப்படி இயக்கினோம்

Run 1 – IQ2_XS (MTP tensors உடன்)

export LD_LIBRARY_PATH=/opt/rocm/lib:$LD_LIBRARY_PATH
llama-server \
 -m /home/user-name/models/Qwen3.8-27B-GSQ-RCO-IQ2_XS-mtp.gguf \
 -ngl 999 \
 --cache-type-k q8_0 \
 --cache-type-v q8_0 \
 -fa on \
 --fit on \
 --reasoning-preserve \
 --jinja

Run 2 – IQ3_S

export LD_LIBRARY_PATH=/opt/rocm/lib:$LD_LIBRARY_PATH
llama-server \
 -m /home/user-name/models/Qwen3.8-27B-GSQ-RCO-IQ3_S.gguf \
 -ngl 999 \
 --cache-type-k q8_0 \
 --cache-type-v q8_0 \
 -fa on \
 --fit on \
 --reasoning-preserve \
 --jinja

அளவீட்டு முடிவுகள்

Metric               IQ2_XS-mtp          IQ3_S           Delta
──────────────────────────────────────────────────────────────
Decode (eval)        20.77 tok/s         18.97 tok/s     +9.5%
Decode (tg)          20.70 tok/s         18.93 tok/s     +9.4%
Prompt eval          113.51 tok/s        178.32 tok/s    -36%  (IQ3_S வேகம்)
Context fitted       52,736 tok          4,096 tok       12.9×
VRAM used            11.57 / 12.87 GB    12.52 / 12.87 GB
                     (90%)               (97%)
Graphs reused        124                 252
Chat UI avg speed    20.9 t/s            19.0 t/s

முக்கிய கண்டுபிடிப்பு: IQ2_XS decode-ல் வென்றது – 13 மடங்கு அதிக context எடுத்தபடி – பெரிய KV cache decode-ஐ மெதுவாக்குமே தவிர வேகமாக்காது, எனவே இந்த வெற்றி உண்மை. IQ3_S ஒரு token-க்கு அதிக bytes படிக்கிறது (~3 bpw vs ~2 bpw); இந்த அட்டை bandwidth-bound, அந்த வேறுபாடு ~1.8 tok/s-ஆக தெரிகிறது. ஆச்சரியம் prompt eval-ல்: IQ3_S உள்ளீட்டை 57% வேகமாக செயலாக்குகிறது (178 vs 114 tok/s) – 2 bpw i-quants compute-bound prompt pass-ல் கனமான dequant/codebook செலவு தருகின்றன; bandwidth-bound decode-ல் தரவரிசை திரும்பிவிடுகிறது.

சான்று – chat ஓட்டங்கள்

llama.cpp chat UI-ல் IQ2_XS model அறிமுகம், 52.74K-ல் 498 context பயன்பாடு, சராசரி வேகம் 20.9 tokens வினாடி
IQ2_XS: 498 / 52.74K context பயன்பாடு, chat UI-ல் 20.9 t/s சராசரி.
llama.cpp chat UI-ல் IQ3_S model அறிமுகம், 4.10K-ல் 711 context பயன்பாடு (17 சதவீதம்), சராசரி வேகம் 19.0 tokens வினாடி
IQ3_S: பதில் நீளமாக வந்தது, ஆனால் நிரப்ப 4.10K context மட்டுமே இருந்தது – 19.0 t/s.

VRAM – அமைதியான பெரிய கதை

GPU மானிட்டர்: AMD Radeon RX 6800M வீடியோ மேம்பாடு 11.57 / 12.87 GB, 90 சதவீதம்
90% VRAM-ல் IQ2_XS – weights ப்ளஸ் 52K q8_0 KV cache, ~1.3 GB இடம் மீதம்.
GPU மானிட்டர்: AMD Radeon RX 6800M வீடியோ மேம்பாடு 12.52 / 12.87 GB, 97 சதவீதம்
இயல்பான 4K context-ோடே IQ3_S 97% VRAM-ல் – weights மட்டும் அட்டையை நிரப்பிவிடுகின்றன.

லாக்கள் என்ன சொன்ன – என்ன உடைந்தது

  1. Run 2: W common_fit_params: failed to fit params to free device memory: n_gpu_layers already set by user to 999, abort--fit தானே -ngl-உம் context-உம் தேர்வு செய்ய வேண்டும்; கைமுறையாக -ngl 999 திணித்ததும் அது விட்டுக்கொடுத்து விட்டது, அதனால் IQ3_S இயல்பான 4096-token context-ல் நின்றுபோய்விட்டது. (கீழே உள்ள follow-up-ல் இந்த model-ல் -ngl நீக்குவது உண்மையில் மோசம் என்று தெரிகிறது – ஃபோர்ஸ் செய்தே வைக்கவும்.)
  2. Run 1: பதினைந்து W model has unused tensor blk.64.* வரிகள் – முழு extra transformer block-உம் (attention + FFN + nextn.* MTP head, ~348 MB) --spec-type draft-mtp flag கொடுக்காததால் புறக்கணிக்கப்பட்டது. இந்த ஓட்டத்தில் MTP head வெறும் dead weight; அதை இயக்குவது தான் அடுத்த தெளிவான சோதனை (Tiel-Coder 35B-A3B-ல் அது +14.6% தந்தது).
  3. இரண்டு ஓட்டங்களும்: W srv llama_server: CORS is set to allow all origins ('*') and no API key is set – server 127.0.0.1-ல் மட்டுமே bind ஆகி இருக்கும் வரை பாதுகாப்பானது; API key இல்லாமல் இந்த port-ஐ எப்போதும் நெட்வொர்க்கு வெளியே திறக்கக் கூடாது.
  4. இரண்டு ஓட்டங்களும்: n_ctx_slot = 52736 / 4096, kv_unified = 'true' – 4 slots-ல் unified KV; 52K என்ற எண்ணை IQ2_XS weights-உடன் சேர்த்து --fit தான் பொருத்தியது.

Follow-up: --fit-க்கு தேர்வு விட்டு, MTP-யும் இயக்கினோம்

முதல் சுற்றின் இரண்டு திறந்த கேள்விகளுக்கு முதல் மீண்டும் இரண்டு configs-ஐ ஓட்டினேன். இரண்டு பதில்களும் எதிர்பார்ப்புக்கு நேர் எதிர்.

IQ3_S -ngl இல்லாமல் – auto-fit

prompt eval:   3329.43 ms / 373 tokens (   8.93 ms/tok,  112.03 tok/s)
eval (decode): 45080.30 ms / 330 tokens ( 137.02 ms/tok,    7.30 tok/s)
context:       n_ctx_slot = 4096  (fit உயர்த்தவே இல்லை)
W resolve_fused_ops: layer 0 is assigned to device CPU but fused
  Gated Delta Net (chunked) is assigned to device ROCm0
W fused Gated Delta Net (chunked) not supported, set to disabled

-ngl 999 நீக்கியதில் நிலை வியக்கத்தக்க வகையில் மோசமானது: 7.30 tok/s – manual அமைப்பின் மூன்றில் ஒரு பங்கு. --fit layer 0-ஐ CPU-ல் போட்டது; context default 4K-ஐ தாண்டவே இல்லை. இந்த warning model உண்மையில் என்ன என்பதையும் வெளிப்படுத்துகிறது: Qwen3.8 ஒரு Gated Delta Net (GDN) hybrid – பெரும்பாலான layers linear attention பயன்படுத்துகின்றன; ROCm-ல் fused chunked-GDN kernel இல்லை, அதனால் CPU/GPU கலப்பு பிரிவு throughput-ை அழித்துவிடுகிறது. இந்த அட்டையில் IQ3_S-க்கு சரியான config -ngl 999 (எல்லா layers-உம் GPU-ல், சிறிய context-ஐ ஏற்றுக்கொள்ளவும்) – என் அசல் "தவறு" தான் சரியான பதிலாக வெளிவந்தது.

IQ2_XS --spec-type draft-mtp உடன்

prompt eval:   3568.06 ms / 373 tokens (   9.57 ms/tok,  104.54 tok/s)
eval (decode): 8148.60 ms / 189 tokens (  43.34 ms/tok,   23.07 tok/s)
generate:      103 tokens @ 26.73 tok/s (tg), 26.99 tok/s (tg_3s)
draft:         acceptance = 0.48052 (111 accepted / 231 generated), mean len = 2.44
context:       n_ctx_slot = 4096  (--fit aborted: -ngl 999 + draft context)
W llama_sampler_backend_support: device 'ROCm0' does not have
  support for op TOP_K needed for sampler 'top-k'  (×4)

MTP head இயங்குகிறது: 23.07 tok/s (உச்சம் 26.7) – இல்லாதபோது 20.77. இரண்டு காரணங்களால் இது தெளிவான +11% ஆகிவிடவில்லை: MTP run-க்கு 4K context தான் கிடைத்தது (draft context-ஆல் --fit KV-க்கு செலவிடும் திறன் உறிஞ்சப்படுகிறது; -ngl 999 இருந்தால் fit விட்டுவிடுகிறது), சிறிய KV cache decode-ஐ அழகாகக் காட்டும் – சம context-ல் நிகர MTP லாபம் +5–8% அருகில். நான்கு TOP_K warning-களும் முக்கியம்: ROCm draft sampler-ின் top-k-வை GPU-ல் இயக்க முடியாது, அது acceptance-ஐ 48%-ல் முடக்கலாம் (Tiel-Coder-ல் 54.7%). ஆனாலும், இந்த அட்டையில் இதுவரையிலான வேகமான IQ2_XS எண்.

முடிவு

12 GB RX 6800M-ல் இந்த 27B-க்கு IQ2_XS தான் practical choice: 52K context-ல் ~21 tok/s, --spec-type draft-mtp உடன் ~23 tok/s – 4K context போதும் என்றால் (அல்லது fit/MTP ஒன்றோடொன்று பழகும் வரை காத்திருங்கள்). IQ3_S தாள் மீது நல்ல quant, ஆனால் இந்த அட்டைக்கு மீறியது: உண்மையான context-க்கு முன்பே 97% VRAM; "proper" auto-fit பாதை ஒரு பொறி – layer 0 CPU-க்குச் சென்று decode 7.3 tok/s-ல் விழுந்துவிடும். IQ3_S ஓட்ட வேண்டுமென்றால் -ngl 999 ஃபோர்ஸ் செய்யவும், 4K-ஐ ஏற்கவும். இனி திறந்த கேள்விகள் hardware-து அல்ல, software stack-து: ROCm-க்கு fused GDN kernel, MTP sampler-க்கு TOP_K support – இவைதான் இந்த 3 bpw quant-ஐயும் மேலான draft acceptance-ஐயும் திறக்கும்.