คำนวณจำนวน GPU ที่ต้องใช้สำหรับรองรับ Concurrent Users

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 คงที่

สรุปขั้นตอน

  1. คำนวณเบื้องต้นด้วยสูตรด้านบน พร้อมเผื่อ headroom
  2. ทดสอบวัดค่าใช้งานจริง (GPU util & VRAM)
  3. ปรับค่า 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 พุ่งสูง

Loading