สรุปสูตรบทที่ 6
จำประโยคเดียวก็พอ:
ตอบจริง = อ่าน prompt รวดเดียว แล้วเขียนทีละ token → ความเร็วถูกจำกัดด้วยการอ่านหน่วยความจำ → KV cache, quantization, batching และ MoE ช่วยให้เร็วและถูกลง → ส่วนคงที่ไว้ต้นให้แคชช่วย
| สิ่งที่เกิด | สูตร | จำง่ายๆ |
|---|---|---|
| เวลาตอบ | TTFT ≈ token prompt ÷ ความเร็ว prefill, เวลาเขียน ≈ token คำตอบ ÷ ความเร็ว decode | อ่านรวด เขียนทีละคำ |
| งานต่อ token | ≈ 2 × พารามิเตอร์ (MoE นับที่ใช้จริง) | คงที่ต่อ token |
| KV cache | 2 × ชั้น × ชุด K/V × ตัวเลขต่อชุด × byte × token | โตตามความยาว × คน |
| น้ำหนักโมเดล | พารามิเตอร์ × บิต ÷ 8 | 8B ที่ 16 บิต = 16 GB |
| Quantization | scale = max|w| ÷ (2^(b−1) − 1) แล้วปัด | บิตน้อย = เล็ก + เพี้ยนมาก |
| เพดานความเร็ว decode | ≈ ความเร็วหน่วยความจำ ÷ (น้ำหนัก + KV ทุกคน) ต่อคน, รวม × จำนวนคน | อ่านครั้งเดียว แจกหลายคน |
| หน่วยความจำการ์ด | น้ำหนัก + KV ของทุกคน + อื่นๆ ≤ ความจุ | ทุกอย่างต้องลงการ์ด |
| MoE | รวม = ส่วนที่ใช้ร่วม + ทุกชุด, ใช้จริง = ส่วนที่ใช้ร่วม + ชุดที่เลือก | ประหยัดคำนวณ ไม่ใช่หน่วยความจำ |
| ค่าใช้จ่าย | token × ราคาต่อล้าน ÷ 1,000,000 | ส่วนคงที่ไว้ต้น → แคช |
ตัวเลขที่คำนวณกันมา (ค่าสมมติ)
- อ่าน prompt 1.4 วินาที เขียนคำตอบ 7.5 วินาที
- KV cache 131,072 byte ต่อ token
- 4 คน × 32,000 token ที่ 8 บิต = 8.39 GB
- โมเดล 8B: 16.0 GB → 4.0 GB ที่ 4 บิต (น้ำหนักตัวอย่าง 8 ตัว error สูงสุด 0.060)
- 62.5 → 500 token/วินาที เมื่อรวม 8 คน
- การ์ด 24 GB กับน้ำหนัก 16 บิต เหลือที่ให้ KV cache ราว 53,405 token
- MoE 34B ใช้จริง 10B แต่ต้องใช้ 68.0 GB
- บิล 2,550 → 930 → 705 บาท (แคช แล้วตอบสั้นลงเหลือ 150 token)

มังคุด
ถ้าทำได้อย่างเดียวเพื่อลดบิลน้องเฟิร์น ควรเริ่มอะไรก่อน?