ข้ามไปยังเนื้อหา

โหมด

ชุดสี

รายงานผลการทดสอบ: AMD Radeon RX 9070 XT 16GB กับการรัน Local LLM บน Windows — ประชัน ROCm vs Vulkan บน 8 โมเดล LLM พร้อมทดสอบขีดจำกัด Concurrency

ประเภท: Benchmark · วันที่ทดสอบ: 2026-08-20 · เครื่องมือ: PromptMark v0.4.0 & Concurrent Text Probe v0.2.0 (llama.cpp ROCm b10362 & Vulkan b10182/b10362)


AMD Radeon RX 9070 XT เป็นกราฟิกการ์ดสถาปัตยกรรมรุ่นเรือธงในกลุ่มเกมมิ่งของ AMD บนพื้นฐาน RDNA 4 (gfx1201) ที่มาพร้อมหน่วยความจำ 16GB GDDR6 (บัส 256-bit แบนด์วิดท์ 640 GB/s) ในการทดสอบรอบนี้ เรานำ RX 9070 XT มารันการประเมินผลเชิงลึกทั้งแบบผู้ใช้คนเดียว (Single-User 6 เวิร์กโหลด) และการทดสอบรองรับคำขอพร้อมกันหลายคน (Concurrent Multi-Client สเกลตั้งแต่ 1 ถึง 16 สล็อต) เพื่อค้นหาว่ารันไทม์ระหว่าง ROCm Native บน Windows กับ Vulkan Backend ใครคือผู้ชนะตัวจริง

  1. Vulkan ดันโมเดล MoE ทะลุ 71+ Tokens/s: สำหรับโมเดลสถาปัตยกรรม Mixture of Experts (MoE) ขนาด 26B และ 35B รันไทม์ Vulkan ทำผลงานได้อย่างยอดเยี่ยม โดยดันความเร็ว Decode สูงสุดถึง 71.34 tokens/s บน gemma-4-26B-A4B-it และ 71.03 tokens/s บน Qwen3.6-35B-A3B เหนือกว่า ROCm ถึง +14.5% ถึง +40.7%
  2. ROCm ครองอำนาจบนโมเดล Dense แท้ (เหนือกว่าสูงสุด +50%): ในทางกลับกัน เมื่อเปลี่ยนมาทดสอบโมเดลแบบ Dense ที่ต้องคำนวณ Matrix Multiplication เต็มเม็ดเต็มหน่วย ROCm บน Windows คอมไพล์ด้วย Clang 20.1.8 กลับพลิกมาชนะ Vulkan อย่างเด็ดขาด:
    • Muse-Glimmer-30B-UD: ROCm Decode ทำได้ 33.84 tokens/s เทียบกับ Vulkan ที่ได้เพียง 22.61 tokens/s (ROCm เร็วกว่า +49.7%)
    • Qwen3.8-27B: ROCm Decode อยู่ที่ 20.86 tokens/s เทียบกับ Vulkan 14.85 tokens/s (ROCm เร็วกว่า +40.5%) พร้อมอัตรา Prefill ที่เร็วกว่าถึง +77%
  3. ความนิ่งของ Prefill บน ROCm (Zero Long-Context Penalty บน 12B): บนโมเดล gemma-4-12B-it ROCm รักษาความเร็ว Prefill ได้เฉลี่ย 1,880 – 1,985 tokens/s ตั้งแต่บริบท 512 ไปจนถึง 8,192 โทเค็นโดยแทบไม่สูญเสียความเร็ว ขณะที่ Vulkan เกิดการถดถอยอย่างรุนแรงจาก 1,363 tokens/s ร่วงลงเหลือ 711 tokens/s เมื่อเจอบริบท 8K (ช้ากว่า ROCm เกือบ 2.6 เท่าตัว)
  4. กำแพง 16GB VRAM Boundary Wall (gemma-4-31B-it): ด้วยขนาด VRAM 16,304 MiB โมเดล Dense ขนาด 31B ควอนไทซ์ Q4_K_M ไม่สามารถบรรจุลง VRAM ได้ครบ 100% ร่วมกับ Context 12K ส่งผลให้เกิดการ Spillover ข้ามบัสระบบ ความเร็ว Decode จึงลดฮวบลงมาเหลือเพียง 7.45 – 9.34 tokens/s เป็นเครื่องยืนยันว่า VRAM 16GB เหมาะกับ Dense ไม่เกิน 27B–30B
  5. ความพร้อมของ NVFP4 บน RDNA 4: สถาปัตยกรรม RDNA 4 รองรับฟอร์แมตควอนไทซ์สุดล้ำอย่าง NVFP4 (NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4) ได้อย่างราบรื่นทั้ง ROCm (Decode นิ่งสนิทที่ 55.67 tokens/s ตลอดทุกความยาวบริบท) และ Vulkan (47.94 tokens/s) โดยไม่เกิดปัญหาแครช
  6. การรับโหลดพร้อมกัน 16 ผู้ใช้ (16-Slot Multi-Tenant Serving): ในการทดสอบเซิร์ฟเวอร์ด้วย Context รวม 65,536 tokens (16 slots × 4K) การ์ด RX 9070 XT ใบเดียวสามารถสร้าง Throughput รวมได้สูงถึง 66.48 tokens/s บน Vulkan และรักษา Throughput ต่อผู้ใช้ไว้ที่ราว 5.0 – 6.0 tokens/s แม้จะโดนรุมยิงคำขอพร้อมกัน 16 งาน

การทดสอบนี้ดำเนินการบนเครื่องพีซีปฏิบัติการ Windows 11 Pro โดยใช้ซอฟต์แวร์มาตรฐานสำหรับการวัดประสิทธิภาพ LLM

รายการ รายละเอียดการตั้งค่าฮาร์ดแวร์และซอฟต์แวร์
GPU 1× AMD Radeon RX 9070 XT
สถาปัตยกรรม GPU RDNA 4 (gfx1201), Compute Units 64 CUs (4,096 Stream Processors), 128 AI Accelerators
หน่วยความจำ VRAM 16,304 MiB GDDR6 (บัส 256-bit แบนด์วิดท์สูงสุด 640 GB/s)
อินเทอร์เฟซ PCIe 5.0 / 4.0 x16
ระบบปฏิบัติการ Windows 11 Pro
เครื่องมือทดสอบเดี่ยว PromptMark v0.4.0 (รัน 6 เวิร์กโหลดมาตรฐาน, 1 Warm-up + 5 Measured Runs แบบ Round-Robin)
เครื่องมือทดสอบ Concurrent Concurrent Text Benchmark v0.2.0 (ทดสอบสเกล Concurrency C=1, 2, 4, 8, 12, 16)
รันไทม์ ROCm llama-server.exe build 10362 (commit 4801e3c56, Clang 20.1.8 for Windows x86_64)
รันไทม์ Vulkan llama-server.exe build 10182 (commit afeebe103) และ build 10362
พารามิเตอร์รันไทม์เดี่ยว -c 12288 -ngl 999 -np 1 --no-cache-prompt --fit off --device ROCm0 (หรือ Vulkan0)
พารามิเตอร์ Concurrent -c 65536 -ngl 999 -np 16 --no-cache-prompt --metrics --fit off (4,096 tokens context ต่อผู้ใช้)
นโยบายแคช ปิด Prompt Cache (fresh_prompt_cache_off) ทุกการทดสอบเพื่อวัดพลังการคำนวณจริง
  1. Content Generation (content_generation_512): Context 512 tokens / Generation 256 tokens (การเขียนบทความและคอนเทนต์ทั่วไป)
  2. Creative Writing (creative_writing_512): Context 512 tokens / Generation 512 tokens (งานเขียนวรรณกรรมต่อเนื่องระยะยาว)
  3. Summarization Light (summary_2k): Context 2,048 tokens / Generation 256 tokens (สรุปอีเมลและบทความสั้น)
  4. Summarization Moderate (summary_4k): Context 4,096 tokens / Generation 256 tokens (สรุปรายงานและเอกสารวิชาการขนาดกลาง)
  5. Summarization Long (summary_8k): Context 8,192 tokens / Generation 256 tokens (สรุปเอกสารขนาดยาว วัดบทลงโทษ KV Cache)
  6. Code Analysis (code_analysis_4k): Context 4,096 tokens / Generation 256 tokens (การวิเคราะห์โครงสร้างโค้ดและตรวจจับบั๊ก)

โมเดลสถาปัตยกรรม MoE เป็นรูปแบบที่เปิดใช้งานเฉพาะบางพารามิเตอร์ย่อย (Active Parameters) ในระหว่างการสร้างคำ ทำให้มีความเร็ว Decode สูงมากแม้ขนาดพารามิเตอร์รวมจะใหญ่ถึง 26B–35B

โมเดล MoE ยอดนิยมขนาด 35B ที่ใช้พารามิเตอร์ประมวลผลจริงเพียง 3B ต่อโทเค็น

เวิร์กโหลด (Workload) Context/Gen Backend Prompt Speed (t/s) Decode Speed (t/s) TTFT (ms) E2E Latency (ms)
Content Generation 512 / 256 ROCm / Vulkan 833.81 / 1076.34 50.47 / 71.03 725.0 / 577.7 5799.9 / 4185.0
Creative Writing 512 / 512 ROCm / Vulkan 832.85 / 1029.14 50.25 / 70.73 691.3 / 563.4 10873.9 / 7805.3
Summary 2K 2048 / 256 ROCm / Vulkan 909.09 / 1326.02 48.93 / 70.64 2323.8 / 1607.2 7546.8 / 5226.6
Summary 4K 4096 / 256 ROCm / Vulkan 905.67 / 1378.67 47.08 / 70.10 4541.5 / 3014.8 9974.1 / 6669.8
Summary 8K 8192 / 256 ROCm / Vulkan 876.51 / 1388.03 43.69 / 69.39 9372.8 / 5944.8 15229.5 / 9635.8
Code Analysis 4K 4096 / 256 ROCm / Vulkan 899.41 / 1343.21 47.09 / 70.04 4610.5 / 3241.2 10048.9 / 6889.8

ข้อสังเกต: Vulkan แสดงความเป็นผู้นำอย่างโดดเด่นบน Qwen3.6-35B โดยทำความเร็ว Decode ได้ถึง 71.03 tokens/s (เร็วกว่า ROCm ที่ทำได้ 50.47 tokens/s ถึง +40.7%) ขณะที่ความเร็ว Prefill ในระดับ 8K context ทำได้ถึง 1,388 tokens/s ส่งผลให้ TTFT ในงานสรุปเอกสาร 8K เร็วกว่า ROCm เกือบ 3.5 วินาที


โมเดลสถาปัตยกรรม MoE 35B สำหรับงานวิเคราะห์ขั้นสูง

เวิร์กโหลด (Workload) Context/Gen Backend Prompt Speed (t/s) Decode Speed (t/s) TTFT (ms) E2E Latency (ms)
Content Generation 512 / 256 ROCm / Vulkan 825.75 / 1058.33 50.89 / 69.28 726.7 / 585.2 5759.4 / 4274.0
Creative Writing 512 / 512 ROCm / Vulkan 828.12 / 1032.77 50.67 / 68.72 706.6 / 550.9 10803.4 / 8004.4
Summary 2K 2048 / 256 ROCm / Vulkan 909.41 / 1308.31 49.38 / 66.02 2314.1 / 1624.8 7499.4 / 5505.6
Summary 4K 4096 / 256 ROCm / Vulkan 914.22 / 1358.72 47.61 / 62.17 4508.5 / 3039.8 9884.6 / 7161.8
Summary 8K 8192 / 256 ROCm / Vulkan 897.08 / 1364.95 44.16 / 56.35 9159.5 / 6035.4 14961.7 / 10578.1
Code Analysis 4K 4096 / 256 ROCm / Vulkan 906.99 / 1334.60 47.49 / 62.14 4576.9 / 3250.0 9968.7 / 7379.8

ข้อสังเกต: ผลลัพธ์ของ Ornith-1.0 สอดคล้องกับ Qwen3.6-35B โดย Vulkan ทำความเร็ว Decode แตะ 69.28 tokens/s (เร็วกว่า ROCm +36.1%) อย่างไรก็ตาม เมื่อบริบทขยายสู่ 8K โทเค็น ความเร็ว Decode ของ Vulkan ตกลง 18.6% (จาก 69.28 เหลือ 56.35 tokens/s) ขณะที่ ROCm ตกลงเพียง 13.2%


โมเดล MoE อัจฉริยะจากตระกูล Gemma 4 ใช้งาน 4B Active Parameters

เวิร์กโหลด (Workload) Context/Gen Backend Prompt Speed (t/s) Decode Speed (t/s) TTFT (ms) E2E Latency (ms)
Content Generation 512 / 256 ROCm / Vulkan 1123.91 / 1673.53 62.33 / 71.34 620.1 / 479.2 4728.6 / 4067.8
Creative Writing 512 / 512 ROCm / Vulkan 1123.03 / 1706.82 59.83 / 68.16 570.6 / 389.6 9127.7 / 7902.8
Summary 2K 2048 / 256 ROCm / Vulkan 1177.07 / 1723.65 49.92 / 59.88 1819.3 / 1265.1 6942.6 / 5540.2
Summary 4K 4096 / 256 ROCm / Vulkan 1183.08 / 1472.12 47.82 / 56.55 3489.9 / 2807.2 8843.8 / 7335.5
Summary 8K 8192 / 256 ROCm / Vulkan 1151.68 / 1088.25 44.09 / 50.76 7151.9 / 7561.7 12953.0 / 12601.0
Code Analysis 4K 4096 / 256 ROCm / Vulkan 1181.93 / 1479.85 47.83 / 56.54 3543.3 / 2830.7 8895.9 / 7363.7

ข้อสังเกต: โมเดลนี้ทำความเร็ว Decode สูงสุดในการทดสอบการ์ดใบเดียวที่ 71.34 tokens/s บน Vulkan ด้านการประมวลผลคำถามสั้น (512–2048 tokens) Vulkan ทำอัตรา Prefill พุ่งสูงถึง 1,723 tokens/s แต่ในระดับ 8K โทเค็น ROCm พลิกกลับมามี Prefill สูงกว่าเล็กน้อยที่ 1,151 tokens/s


โมเดล MoE ขนาด 30B ที่ใช้ฟอร์แมตควอนไทซ์ระดับ 4-bit Floating Point ยุคใหม่ (NVFP4)

เวิร์กโหลด (Workload) Context/Gen Backend Prompt Speed (t/s) Decode Speed (t/s) TTFT (ms) E2E Latency (ms)
Content Generation 512 / 256 ROCm / Vulkan 828.29 / 991.35 55.67 / 47.94 689.6 / 565.8 5283.6 / 5905.6
Creative Writing 512 / 512 ROCm / Vulkan 831.69 / 1007.86 55.62 / 47.84 672.0 / 558.6 9876.6 / 11261.0
Summary 2K 2048 / 256 ROCm / Vulkan 964.96 / 1288.11 55.72 / 47.84 2172.2 / 1633.0 6770.8 / 6980.3
Summary 4K 4096 / 256 ROCm / Vulkan 995.38 / 1346.48 55.58 / 47.75 4135.1 / 3049.8 8741.0 / 8410.9
Summary 8K 8192 / 256 ROCm / Vulkan 1009.24 / 1378.15 55.34 / 47.66 8134.5 / 5966.6 12767.2 / 11338.8
Code Analysis 4K 4096 / 256 ROCm / Vulkan 992.52 / 1324.09 55.58 / 47.77 4173.4 / 3128.2 8777.5 / 8486.4

ข้อสังเกตสำคัญ:

  1. แตกต่างจากฮาร์ดแวร์คู่แข่งที่มักประสบปัญหาแครชบนรันไทม์ Vulkan กับฟอร์แมต NVFP4 การ์ด RX 9070 XT สามารถรันโมเดลนี้บน Vulkan b10362 ได้อย่างราบรื่น ไม่มี Error แม้แต่รอบเดียว
  2. ROCm เหนือกว่าในด้าน Decode: ROCm ทำความเร็ว Decode ได้ถึง 55.67 tokens/s (เร็วกว่า Vulkan +16.1%) และที่น่าทึ่งคือ Decode Retention สูงถึง 99.4% แม้บริบทจะเพิ่มจาก 512 ไปเป็น 8,192 โทเค็น ความเร็วก็แทบไม่ตก (55.67 → 55.34 tokens/s)

2. กลุ่มโมเดลสถาปัตยกรรม Dense (คำนวณครบทุกเลเยอร์)

หัวข้อที่มีชื่อว่า “2. กลุ่มโมเดลสถาปัตยกรรม Dense (คำนวณครบทุกเลเยอร์)”

โมเดล Dense ต้องส่งผ่านเมทริกซ์ทุกพารามิเตอร์ในทุกๆ สเต็ปของการสร้างคำ จึงเป็นบททดสอบ Memory Bandwidth (640 GB/s) และความสามารถในการประมวลผล Kernel GEMM ของการ์ดจออย่างแท้จริง

โมเดล Dense ระดับ 27 พันล้านพารามิเตอร์ ซึ่งถือเป็นขนาดเกือบเต็มความจุ VRAM 16GB

เวิร์กโหลด (Workload) Context/Gen Backend Prompt Speed (t/s) Decode Speed (t/s) TTFT (ms) E2E Latency (ms)
Content Generation 512 / 256 ROCm / Vulkan 410.38 / 231.66 20.86 / 14.85 1450.7 / 2397.0 13738.3 / 19636.5
Creative Writing 512 / 512 ROCm / Vulkan 409.04 / 235.29 20.73 / 14.77 1403.7 / 2320.8 26103.6 / 36989.8
Summary 2K 2048 / 256 ROCm / Vulkan 444.13 / 250.07 20.00 / 14.39 4703.0 / 8295.8 17500.3 / 26093.4
Summary 4K 4096 / 256 ROCm / Vulkan 442.35 / 252.63 19.02 / 13.85 9277.3 / 16257.9 22744.2 / 34739.0
Summary 8K 8192 / 256 ROCm / Vulkan 427.93 / 252.06 17.35 / 12.91 19157.6 / 32544.7 33918.9 / 52369.1
Code Analysis 4K 4096 / 256 ROCm / Vulkan 443.36 / 251.73 19.00 / 13.85 9342.0 / 16608.6 22812.1 / 35091.2

ข้อสังเกต: บนโมเดล Dense ขนาดใหญ่ ROCm มีชัยเหนือ Vulkan แบบเบ็ดเสร็จในทุกตัวชี้วัด:

  • Decode Speed: ROCm ทำได้ 20.86 tokens/s เร็วกว่า Vulkan (14.85 tokens/s) ถึง +40.5%
  • Prefill Speed: ROCm ทำได้ 410 – 444 tokens/s เร็วกว่า Vulkan (231 – 252 tokens/s) ถึง +77%
  • ในงานบริบท 8K ตัว ROCm ช่วยลดเวลารอตอบแรก (TTFT) ลงจาก 32.5 วินาที เหลือ 19.1 วินาที และจบงาน E2E ได้เร็วกว่าเกือบ 18.5 วินาที

โมเดล Dense ขนาด 30B ควอนไทซ์ระดับ Extra-Large สำหรับงานเขียนและงานสร้างสรรค์

เวิร์กโหลด (Workload) Context/Gen Backend Prompt Speed (t/s) Decode Speed (t/s) TTFT (ms) E2E Latency (ms)
Content Generation 512 / 256 ROCm / Vulkan 587.45 / 393.21 33.84 / 22.61 1070.8 / 1521.7 8548.9 / 12712.2
Creative Writing 512 / 512 ROCm / Vulkan 586.64 / 409.57 33.73 / 22.55 1031.9 / 1427.4 16117.6 / 23996.7
Summary 2K 2048 / 256 ROCm / Vulkan 636.04 / 443.85 33.55 / 22.48 3360.0 / 4794.9 10899.0 / 16045.8
Summary 4K 4096 / 256 ROCm / Vulkan 643.47 / 446.75 33.49 / 22.45 6495.3 / 9329.4 14046.9 / 20595.0
Summary 8K 8192 / 256 ROCm / Vulkan 649.58 / 449.83 33.35 / 22.40 12737.5 / 18367.5 20322.1 / 29659.0
Code Analysis 4K 4096 / 256 ROCm / Vulkan 644.16 / 448.48 33.46 / 22.45 6515.8 / 9306.0 14072.2 / 20573.3

ข้อสังเกต: โมเดล Muse-Glimmer แสดงให้เห็นถึงประสิทธิภาพของ ROCm บน RDNA 4 ที่ชัดเจนที่สุด โดย ROCm Decode เร็วถึง 33.84 tokens/s เหนือกว่า Vulkan ที่ทำได้ 22.61 tokens/s ถึง +49.7% นอกจากนี้ ROCm ยังรักษา Decode Speed ได้นิ่งสนิทตั้งแต่ 512 ถึง 8K tokens (ลดลงเพียง 1.4%)


โมเดล Dense ขนาดยอดนิยมที่ลงตัวที่สุดกับ VRAM 16GB

เวิร์กโหลด (Workload) Context/Gen Backend Prompt Speed (t/s) Decode Speed (t/s) TTFT (ms) E2E Latency (ms)
Content Generation 512 / 256 ROCm / Vulkan 1837.02 / 1363.62 61.85 / 65.08 496.1 / 650.1 4635.4 / 4577.9
Creative Writing 512 / 512 ROCm / Vulkan 1883.47 / 1384.66 61.34 / 64.09 429.4 / 499.4 8775.6 / 8490.9
Summary 2K 2048 / 256 ROCm / Vulkan 1985.59 / 1247.14 59.69 / 60.47 1147.3 / 1748.3 5439.1 / 5982.5
Summary 4K 4096 / 256 ROCm / Vulkan 1974.07 / 1010.48 59.40 / 58.89 2104.4 / 4079.9 6415.4 / 8427.3
Summary 8K 8192 / 256 ROCm / Vulkan 1880.78 / 711.60 58.89 / 55.30 4387.9 / 11547.8 8737.2 / 16177.0
Code Analysis 4K 4096 / 256 ROCm / Vulkan 1980.31 / 1006.30 59.35 / 58.81 2152.6 / 4161.4 6475.6 / 8512.1

ข้อสังเกต: โมเดลขนาด 12B เปิดเผยจุดต่างอย่างมีนัยสำคัญ:

  • Prefill Scaling: ROCm รัน Prefill ได้เฉลี่ย 1,880 – 1,985 tokens/s คงที่ในทุกบริบท
  • Vulkan KV Cache Penalty: ฝั่ง Vulkan แม้บริบทสั้นจะทำ Decode ได้เร็วกว่าเล็กน้อย (65.08 vs 61.85 tokens/s) แต่เมื่อขยับบริบทไปที่ 4K และ 8K อัตรา Prefill ของ Vulkan ถดถอยลงอย่างรุนแรงจาก 1,363 เหลือ 711 tokens/s ส่งผลให้ในงาน Summary 8K ฝั่ง ROCm จบงานได้เร็วกว่าเกือบเท่าตัว (8.7 วินาที เทียบกับ 16.2 วินาที)

โมเดล Dense ขนาด 31B เพื่อทดสอบจุดชนเพดาน VRAM

เวิร์กโหลด (Workload) Context/Gen Backend Prompt Speed (t/s) Decode Speed (t/s) TTFT (ms) E2E Latency (ms)
Content Generation 512 / 256 ROCm / Vulkan 322.90 / 105.08 9.34 / 7.45 1993.4 / 5317.6 29386.3 / 39700.0
Creative Writing 512 / 512 ROCm / Vulkan 331.66 / 106.27 9.15 / 7.31 1783.4 / 5065.6 57709.7 / 75142.8
Summary 2K 2048 / 256 ROCm / Vulkan 338.47 / 105.19 8.26 / 6.97 6359.9 / 19796.3 37341.8 / 56540.7
Summary 4K 4096 / 256 ROCm / Vulkan 328.63 / 100.49 8.04 / 6.79 12484.9 / 40783.6 44323.7 / 78496.3
Summary 8K 8192 / 256 ROCm / Vulkan 303.60 / 91.20 7.67 / 6.50 27022.1 / 89859.8 60418.5 / 129218.0
Code Analysis 4K 4096 / 256 ROCm / Vulkan 328.74 / 100.53 8.05 / 6.79 13015.3 / 41271.8 44819.7 / 78962.4

บทเรียนเรื่อง VRAM Boundary: ตัวโมเดล gemma-4-31B-it-Q4_K_M มีขนาดไฟล์กว่า 18.2 GB ซึ่ง เกินขนาด VRAM 16GB ของ RX 9070 XT ทำให้ llama.cpp ต้องสลับหน่วยความจำบางส่วนหรือดึง System RAM ผ่านบัส PCIe สิ่งที่เกิดขึ้นคือความเร็ว Decode ตกลงสู่ระดับ 7.45 – 9.34 tokens/s (ลดลงฮวบฮาบถึง 70% เมื่อเทียบกับ Muse-Glimmer 30B ที่ฟิตพอดี VRAM) และในระดับบริบท 8K บน Vulkan การรอคำแรก (TTFT) พุ่งสูงถึงเกือบ 90 วินาที! นี่คือข้อพิสูจน์ที่ชัดเจนว่าการรัน Local LLM ต้องควบคุม Model Weights + KV Cache ไม่ให้เกินความจุ VRAM จริง


ในการนำการ์ดจอไปใช้งานจริงเป็นเซิร์ฟเวอร์ Local AI ภายในองค์กร การทดสอบแบบผู้ใช้คนเดียว (Concurrency C=1) ไม่เพียงพอ การทดสอบชุดนี้ใช้ PromptMark Concurrent Text Benchmark v0.2.0 ตั้งค่าเซิร์ฟเวอร์เปิด 16 Parallel Slots (-np 16) และจอง Context Window รวม 65,536 tokens (เฉลี่ย 4,096 tokens ต่อผู้ใช้) รันเวิร์กโหลด summary_2k โดยยิงคำขอพร้อมกันตั้งแต่ 1, 2, 4, 8, 12 จนถึง 16 ผู้ใช้

Concurrency (ผู้ใช้พร้อมกัน) Backend Aggregate TPS Throughput Gain User TPS User Retention TTFT (ms) E2E Latency (ms)
C = 1 ROCm / Vulkan 34.57 / 41.90 1.00x / 1.00x 49.47 / 57.28 100.0% / 100.0% 2229.5 / 1634.8 7404.5 / 6110.4
C = 2 ROCm / Vulkan 43.29 / 53.17 1.25x / 1.27x 35.44 / 40.56 71.6% / 70.8% 4620.1 / 3305.6 11825.7 / 9618.9
C = 4 ROCm / Vulkan 45.31 / 59.83 1.31x / 1.43x 19.97 / 24.97 40.4% / 43.6% 9597.9 / 6816.3 22572.6 / 17087.2
C = 8 ROCm / Vulkan 47.42 / 64.34 1.37x / 1.54x 9.89 / 12.95 20.0% / 22.6% 16911.3 / 11998.6 43004.9 / 31761.3
C = 12 ROCm / Vulkan 48.47 / 59.28 1.40x / 1.42x 6.36 / 7.23 12.9% / 12.6% 22536.7 / 15905.4 63022.1 / 51417.6
C = 16 ROCm / Vulkan 49.78 / 62.59 1.44x / 1.49x 4.82 / 5.66 9.7% / 9.9% 28168.4 / 19970.9 81629.7 / 65117.3

Concurrency (ผู้ใช้พร้อมกัน) Backend Aggregate TPS Throughput Gain User TPS User Retention TTFT (ms) E2E Latency (ms)
C = 1 ROCm / Vulkan 35.89 / 45.76 1.00x / 1.00x 48.81 / 58.59 100.0% / 100.0% 1881.8 / 1211.0 7132.6 / 5593.9
C = 2 ROCm / Vulkan 44.95 / 54.81 1.25x / 1.20x 34.01 / 38.41 69.7% / 65.6% 3859.3 / 2659.3 11382.6 / 9332.5
C = 4 ROCm / Vulkan 49.11 / 60.61 1.37x / 1.32x 19.65 / 22.22 40.3% / 37.9% 7535.8 / 5179.7 20803.6 / 16854.6
C = 8 ROCm / Vulkan 52.04 / 64.26 1.45x / 1.40x 9.98 / 11.40 20.4% / 19.5% 13675.9 / 8889.6 39216.6 / 31743.9
C = 12 ROCm / Vulkan 53.74 / 66.48 1.50x / 1.45x 6.60 / 7.61 13.5% / 13.0% 17345.6 / 11847.0 56798.6 / 45961.0
C = 16 ROCm / Vulkan 53.09 / 65.76 1.48x / 1.44x 5.06 / 5.98 10.4% / 10.2% 26384.1 / 19200.1 76723.3 / 61963.3
  1. Throughput Scaling Peak: ประสิทธิภาพรวมของเซิร์ฟเวอร์ (Aggregate TPS) เพิ่มขึ้นตามจำนวนผู้ใช้อย่างชัดเจน โดยไต่จากระดับ 35–45 tokens/s ที่ C=1 ขึ้นไปแตะจุดสูงสุดที่ 66.48 tokens/s บน Vulkan (เพิ่มขึ้นถึง 1.45 เท่า) ที่ระดับ Concurrency C=12 ก่อนจะเริ่มอิ่มตัว (Saturate) ที่ C=16
  2. User Experience Stability: แม้จะมีผู้ใช้ยิงคำขอพร้อมกันถึง 8 คน ความเร็วการสร้างคำต่อผู้ใช้ (User TPS) ยังคงอยู่ที่ระดับ 11.4 – 12.9 tokens/s ซึ่งยังเร็วกว่าความเร็วการอ่านปกติของมนุษย์ (ประมาณ 5–7 คำ/วินาที)
  3. Vulkan ยังคงชนะในงาน MoE Multi-Tenant: Vulkan สามารถปั่น Throughput รวมได้สูงกว่า ROCm ราว 12 – 15 tokens/s ในทุกระดับการสเกล และมี Latency ในการตอบคำแรก (TTFT) สั้นกว่าอย่างเห็นได้ชัด

นี่คือหนึ่งในข้อค้นพบที่น่าสนใจที่สุดของการทดสอบชุดนี้:

  • ในโมเดลแบบ MoE (Sparse Activation): ในแต่ละโทเค็น ตัวโมเดลจะกระตุ้นเฉพาะ Expert ย่อยเพียง 3B หรือ 4B เท่านั้น เมทริกซ์ที่ต้องคำนวณจึงมีขนาดเล็กและต้องเรียกใช้เคอร์เนลบ่อยครั้ง (High-frequency small kernel dispatches) รันไทม์ Vulkan ซึ่งทำงานผ่าน SPIR-V Pipeline ของไดรเวอร์ AMD มี Overhead ในการส่งคำสั่ง (Driver Dispatch Overhead) ที่ต่ำและจัดการ Branching ของ Expert ได้คล่องตัวกว่า จึงทำความเร็วพุ่งแตะ 71 tokens/s
  • ในโมเดลแบบ Dense (Full Matrix Multiplication): ทุกๆ โทเค็นต้องคูณเมทริกซ์ขนาดใหญ่ยักษ์เต็ม 27B–30B สิ่งที่ตัดสินผลแพ้ชนะคือ ประสิทธิภาพเคอร์เนลคณิตศาสตร์บริสุทธิ์ (GEMM Kernel Optimization) และ Memory Bandwidth Saturation ซึ่งชุดคอมไพเลอร์ ROCm 10 Native (Clang 20.1.8) สำหรับสถาปัตยกรรม RDNA 4 มีการจูน Instruction Scheduling ในระดับ Wavefront32 ได้แนบเนียนกว่า Vulkan ส่งผลให้ ROCm ปั่นความเร็วบน Dense ได้สูงกว่า Vulkan ถึง +40.5% บน Qwen3.8-27B และ +49.7% บน Muse-Glimmer-30B

จากการทดสอบ gemma-4-12B-it และ Ornith-1.0-35B พบว่าเมื่อบริบทขยายจาก 512 สู่ 8K โทเค็น:

  • ROCm: อัตรา Prefill แทบเป็นเส้นตรง (1,837 → 1,880 tokens/s)
  • Vulkan: อัตรา Prefill ร่วงลงจาก 1,363 เหลือเพียง 711 tokens/s (ลดลงเกือบ 50%) สาเหตุมาจาก Memory Allocation Strategy ของ Vulkan Backend ใน llama.cpp ที่ยังจัดการ Non-contiguous KV Buffer ได้ไม่ยืดหยุ่นเท่า HIP Memory Management ของ ROCm เมื่อหน่วยความจำ KV Cache บวมขึ้นตามจำนวนโทเค็น Vulkan จะเกิด Cache Miss และ Memory Reallocation Overhead ในฝั่ง GPU Memory Controller ส่งผลให้เวลาประมวลผลคำแรก (TTFT) ของ Vulkan ในงาน Long Context นานขึ้นอย่างเห็นได้ชัด

แบนด์วิดท์ 640 GB/s ของ Radeon RX 9070 XT เทียบเท่ากับการ์ดเวิร์กสเตชันระดับมืออาชีพอย่าง Radeon AI PRO R9700 ทำให้เพดานความเร็ว Decode ทางทฤษฎีอยู่ที่: Max Theoretical Decode (tok/s) ≈ Memory Bandwidth (GB/s) ÷ Model Weight Size (GB)

  • สำหรับ Qwen3.8-27B-Q4_K_M (ขนาด ~16.8 GB): เพดานทฤษฎีคือ 640 ÷ 16.8 ≈ 38.1 tok/s ในการรันจริง ROCm ทำได้ 20.86 tokens/s ซึ่งคิดเป็นประสิทธิภาพการดึง Bandwidth สูงถึง ~55% ของทฤษฎี (เมื่อรวม KV Cache Read/Write Overhead) ถือเป็นเกณฑ์ที่สูงมากสำหรับการรันบนการ์ดจอใบเดียว

AMD Radeon RX 9070 XT (16GB) พิสูจน์ให้เห็นแล้วว่าเป็นหนึ่งในการ์ดจอระดับผู้บริโภคที่ทรงพลังที่สุดสำหรับการรัน Local LLM ด้วยจุดเด่นด้านแบนด์วิดท์ 640 GB/s และการรองรับชุดคำสั่งใหม่ของ RDNA 4

  1. ถ้าคุณเน้นโมเดล MoE (เช่น Qwen3.6-35B-A3B หรือ Gemma-4-26B-A4B):
    • แนะนำให้เลือกใช้ Vulkan Backend เป็นหลัก: คุณจะได้ความเร็ว Decode ระดับ 70 – 71+ tokens/s อ่านและโต้ตอบได้ลื่นไหลเหมือนพิมพ์สด และในการแชร์เซิร์ฟเวอร์แบบ Concurrent Vulkan ก็ให้ Throughput สูงกว่า
  2. ถ้าคุณเน้นโมเดล Dense แท้ (เช่น Qwen3.8-27B หรือ Muse-Glimmer-30B-UD):
    • ต้องเลือกใช้ ROCm Native (b10362 ขึ้นไป): ความเร็ว Decode จะพุ่งขึ้นจาก 14–22 tokens/s บน Vulkan ไปเป็น 20–34 tokens/s บน ROCm (เร็วขึ้นเกือบ 1.5 เท่าตัว) และประหยัดเวลารอ Prefill ได้มหาศาล
  3. ขอบเขตการเลือกขนาดโมเดลบน VRAM 16GB:
    • กลุ่มที่รันได้อย่างสมบูรณ์แบบ (Sweet Spot): โมเดล MoE 26B–35B (Q4_K_M), โมเดล Dense 12B–14B (Q4/Q8), และโมเดล Dense 27B–30B (Q4_K_M ที่เปิด Context ไม่เกิน 8K–12K)
    • กลุ่มที่ไม่แนะนำ: โมเดล Dense 31B ขึ้นไปในระดับควอนไทซ์ Q4 (เช่น Gemma-4-31B) เพราะจะชนกำแพง VRAM 16GB จนต้องแชร์แรมเครื่อง ส่งผลให้ประสิทธิภาพร่วงลงเหลือต่ำกว่า 10 tokens/s ทันที
  4. ศักยภาพในการเป็น Local AI Workgroup Server:
    • RX 9070 XT ใบเดียวสามารถรองรับพนักงานในออฟฟิศขนาดเล็กหรือทีมนักพัฒนา 5–12 คนพร้อมกัน ได้สบาย โดยยังมี Throughput เฉลี่ยต่อคนเร็วกว่า 10 tokens/s ซึ่งคุ้มค่าอย่างยิ่งสำหรับการลงทุนทำ On-Premise LLM