ผมเลิกไล่ตาม MTP TPS และได้ Local 27B Agent ที่ทำงานบน 24GB VRAM แทน
ผมไม่สนใจผลทดสอบ (benchmarks) แบบ prompt เดียว
ผมสนใจเรื่องการทำงานแบบ loop
Coding agent จำเป็นต้องทำงานต่อเนื่องหลายชั่วโมง มันต้องจัดการทั้งการแก้ไขโค้ด (edits), การเรียกใช้ terminal, การลองใหม่ (retries) และบริบท (context) ที่เพิ่มขึ้นเรื่อยๆ หากโมเดลล้มเหลวหลังจากผ่านไปแค่สิบ prompt มันก็ไม่มีประโยชน์อะไรเลย
ผมอยากรู้ว่าจะสามารถรันโมเดลขนาด 27B บน GPU ขนาด 24GB เพียงตัวเดียวได้หรือไม่ ผมได้ทดสอบ Qwopus3.6-27B-v2 และสร้างเวอร์ชันใหม่ขึ้นมาคือ: XReyRobert/Qwopus3.6-27B-v2-GPTQ-Pro-v1
นี่คือการตั้งค่า (setup) ของผมเพื่อให้ได้ agent loop ที่เสถียรบน 24GB:
- Model: Qwopus3.6-27B GPTQ-Pro 4-bit
- Engine: vLLM พร้อมด้วย GPTQ-Marlin
- Context: 131k tokens
- KV Cache: FP8 (fp8_e5m2)
- Strategy: เปิดใช้งาน Prefix caching
- Constraint:
max_num_seqs=1
ทำไมต้อง max_num_seqs=1?
บนการ์ดจอ 24GB เพียงตัวเดียว การทำ parallelism นั้นไม่ได้มาฟรีๆ หากคุณรันหลาย request พร้อมกัน พวกมันจะแย่งชิงหน่วยความจำกัน ผมต้องการให้หนึ่ง request ทำงานจนเสร็จอย่างราบรื่น ผมยอมได้คำตอบที่มีประโยชน์เพียงหนึ่งคำตอบ ดีกว่าได้คำตอบที่พังสองคำตอบ
ผมยังข้ามการทำ speculative decoding (MTP) ไปด้วย เพราะบนการ์ด 3090 เพียงตัวเดียว MTP กลับเพิ่มภาระให้กับหน่วยความจำ (memory pressure) และเพิ่มความซับซ้อน โดยไม่ได้ช่วยเพิ่มความเร็วแบบ end-to-end สำหรับ context ที่ยาวขึ้นเลย
ตัวชี้วัดที่สำคัญจริงๆ คือ:
- Prefix cache hit ratio: ~83%
- Average TTFT: ~5.7s ที่ 33k tokens
- Prefill throughput: ~1917 tok/s
- Decode speed: ~43 tok/s
เมื่อ prefix cache ทำงาน (hit) ค่า latency จะลดลง แต่เมื่อคุณเปลี่ยนงาน cache จะเย็นลง (cold) และค่า latency จะสูงขึ้น ซึ่งเป็นเรื่องปกติ เป้าหมายคือการกลับไปสู่การใช้ cache ซ้ำในระดับสูงอีกครั้งเมื่อการทำงานเริ่มคงที่
หากคุณทดสอบแค่ prompt เดียว คุณกำลังทดสอบผิดจุด สำหรับ coding agent คุณต้องทดสอบความเสถียรในการทำงานระยะยาว
คุณกำลังรัน agent loop บน GPU ตัวเดียวอยู่หรือเปล่า? คุณมีเทคนิคอะไรในการจัดการ KV cache หรือ prefix caching บ้าง?
Optional learning community: https://t.me/GyaanSetuAi