GPU Capacity Planning Workflow
ใช้สูตรคำนวณจำนวน GPU ที่ต้องใช้สำหรับรองรับ Concurrent Users ตามสมมติฐานว่า 1 RTX 3080 รองรับได้ 5 sessions พร้อมกัน โดยยังรักษา latency ให้อยู่ในระดับต่ำ:
GPUs_needed = ⌈ Concurrent_Users ÷ Sessions_per_GPU ⌉
– Concurrent_Users
คือจำนวนผู้ใช้ที่พร้อมกันในช่วง peak load
– Sessions_per_GPU
สมมติไว้ที่ 5 (slot ต่อ GPU)
– ใช้ฟังก์ชันปัดขึ้น (ceiling) เพื่อให้มี GPU ครบตามที่ต้องการ
Workflow ขั้นตอน
ขั้นตอน | การคำนวณ / เครื่องมือ | ผลลัพธ์ที่คาดหวัง |
---|---|---|
1. แผนเบื้องต้น |
• กำหนด Concurrent = 50 users • Sessions_per_GPU = 5 • GPUs = ⌈50 ÷ 5⌉ = 10 • เผื่อ headroom 20% → 12 GPUs |
สั่งซื้อหรือจัดเตรียม 12 GPUs |
2. ทดสอบจริง |
• รัน nvidia-smi -l 1 ควบคู่กับ 5 client• วัดค่า utilization.gpu ≈ 30–50%• วัดค่า memory.used (MB)
|
ยืนยันว่ามี headroom พอสมควร (GPU util < 70%) |
3. ปรับขยายตามผลวัด |
• ถ้า GPU ใช้งานเฉลี่ย ~40% → เพิ่ม concurrent sessions เป็น 7 per GPU • ถ้า GPU แตะ 90–100% บ่อย → เพิ่มจำนวน GPU หรือใส่ rate-limit / queue เข้มขึ้น |
• รองรับ 50 users/sec ด้วย 8 GPUs (ถ้าปรับ slots) • หรือคง 12 GPUs พร้อม rate-limit ให้ latency คงที่ |
สรุปขั้นตอน
- คำนวณเบื้องต้นด้วยสูตรด้านบน พร้อมเผื่อ headroom
- ทดสอบวัดค่าใช้งานจริง (GPU util & VRAM)
- ปรับค่า
concurrency
หรือจำนวน GPU ตามผลวัด
หมายเหตุเกี่ยวกับ “5 sessions per GPU”
“5 sessions per GPU” เป็นค่าประมาณ (heuristic) ที่เราใช้สมมติขึ้นมาเพื่อคำนวณเบื้องต้น แต่ในการใช้งานจริง จะขึ้นกับหลายปัจจัย:
- ขนาดโมเดล
– โมเดล 7B quantized 4-bit บน RTX 3080 กิน VRAM ประมาณ 8–9 GB ต่อ instance
– ถ้าใช้โมเดลใหญ่ขึ้น (13B, 30B) แต่ละ session อาจต้อง VRAM มากขึ้น จึงลดจำนวน concurrent sessions ได้ - Latency ที่ยอมรับได้
– ถ้าต้องการ latency < 2 s/session จะพบว่า 5 sessions/GPU (แต่ละ session streaming พร้อมกัน) ยังไม่ให้ GPU util แตะ 100%
– แต่ถ้ายอมให้ latency พุ่งเป็น 3–5 s คุณอาจเพิ่ม sessions ต่อ GPU ได้อีก - Batching & Queueing
– ถ้าไม่มี streaming หรือรวม request เป็น batch จะกิน resource ต่อ session น้อยลง
– แต่ถ้า streaming หลาย stream พร้อมกัน GPU ต้องบริหารหลาย context พร้อมกัน - การทดสอบวัดจริง
– รัน
nvidia-smi -l 1
พร้อม 5 client ยิง prompt ไปยัง Ollama แล้วดูutilization.gpu
– ถ้า util อยู่ราว 60–70% ใน peak ก็แปลว่าสามารถเพิ่ม 1–2 sessions อีกได้
– ถ้า util แตะ 90–100% บ่อย ก็แปลว่าถ้าเพิ่ม sessions จะทำให้ latency พุ่งสูง