Ollama เป็นเครื่องมือ Open Source สำหรับรัน Large Language Model (LLM) บนเครื่องของตัวเอง ขนาด VRAM ที่ต้องใช้คำนวณคร่าวๆ ได้จาก จำนวนพารามิเตอร์ของโมเดล × จำนวนไบต์ต่อพารามิเตอร์ตามระดับ Quantization แล้วบวก KV Cache ตาม Context Length และ Overhead อีกประมาณ 10–20% ตัวอย่างเช่น โมเดล 8B ที่ Quantize แบบ 4-bit ใช้ VRAM ประมาณ 5–6 GB ส่วนโมเดล 70B แบบ 4-bit ต้องใช้ราว 40 GB ขึ้นไป
บทความนี้อธิบายวิธีคำนวณให้ทีม IT ประเมิน Hardware ได้เองก่อนเริ่มโปรเจกต์ และบอกว่าเมื่อไรควรเปลี่ยนจาก Ollama ไปใช้ Inference Server ตัวอื่น ดูโค้ดและเอกสารของโครงการได้ที่ Ollama บน GitHub
ส่วนประกอบของ VRAM ที่ LLM ใช้
- Model Weights: น้ำหนักของโมเดลทั้งหมด เป็นส่วนที่ใหญ่ที่สุด
- KV Cache: หน่วยความจำที่เก็บบริบทของบทสนทนา เพิ่มขึ้นตาม Context Length และจำนวนผู้ใช้พร้อมกัน
- Overhead: หน่วยความจำของ Runtime, CUDA และ Buffer ต่างๆ
คำนวณขนาด Model Weights
| ระดับความละเอียด | ไบต์ต่อพารามิเตอร์ (ประมาณ) | โมเดล 8B | โมเดล 32B | โมเดล 70B |
|---|---|---|---|---|
| FP16 / BF16 | 2 | ~16 GB | ~64 GB | ~140 GB |
| 8-bit (Q8) | ~1 | ~8.5 GB | ~34 GB | ~75 GB |
| 4-bit (Q4_K_M) | ~0.6 | ~5 GB | ~20 GB | ~42 GB |
ตัวเลขในตารางเป็นค่าประมาณเฉพาะ Weights ขนาดไฟล์จริงต่างกันเล็กน้อยตามโครงสร้างโมเดล ตรวจขนาดจริงได้จากหน้าโมเดลใน Library ของ Ollama หรือด้วยคำสั่ง ollama show
Quantization แบบ 4-bit เป็นค่าที่ Ollama ใช้บ่อยที่สุด เพราะลดขนาดลงมากโดยคุณภาพลดลงไม่มาก สำหรับงานที่ต้องการความแม่นยำสูง เช่น การดึงข้อมูลตัวเลขจากเอกสาร ควรทดสอบเทียบกับ 8-bit ด้วยชุดคำถามจริงขององค์กร
คำนวณ KV Cache
สูตรทั่วไปคือ
KV Cache (bytes) = 2 × จำนวน Layer × จำนวน KV Head × Head Dimension × Context Length × ไบต์ต่อค่า
ค่าพารามิเตอร์ของโมเดลหาได้จากไฟล์ Config ของโมเดล ตัวอย่างโมเดลขนาด 8B ที่มี 32 Layer, 8 KV Head และ Head Dimension 128 เมื่อใช้ Context 8,192 Token แบบ FP16
- 2 × 32 × 8 × 128 × 8,192 × 2 = 1,073,741,824 bytes ≈ 1 GB ต่อผู้ใช้หนึ่งคน
ถ้าเพิ่ม Context เป็น 32,768 Token จะใช้ประมาณ 4 GB และถ้ามีผู้ใช้พร้อมกัน 4 คน จะคูณเพิ่มอีก 4 เท่า นี่คือเหตุผลที่ VRAM มักไม่พอเมื่อนำไปใช้กับงาน RAG ที่ส่งเอกสารยาวเข้าโมเดล
ตัวอย่างการประเมิน Hardware
| การใช้งาน | โมเดลตัวอย่าง | VRAM ที่ควรมี (ประมาณ) |
|---|---|---|
| ทดลองใช้ภายในทีม 1–3 คน | 8B แบบ 4-bit, Context 8K | 8–12 GB |
| Chatbot ภายในองค์กร ผู้ใช้พร้อมกันไม่มาก | 32B แบบ 4-bit, Context 8K | 24–32 GB |
| งาน RAG เอกสารยาว หลายผู้ใช้ | 70B แบบ 4-bit, Context 16K ขึ้นไป | 48–80 GB (อาจใช้หลาย GPU) |
ถ้า VRAM ไม่พอ Ollama จะย้ายบาง Layer ไปรันบน CPU และ RAM ระบบยังทำงานได้แต่ช้าลงมาก ตรวจสัดส่วนได้ด้วยคำสั่ง ollama ps ซึ่งแสดงว่าโมเดลอยู่บน GPU กี่เปอร์เซ็นต์
