Ollama บน Server องค์กร: ต้องใช้ GPU และ VRAM เท่าไรสำหรับโมเดลแต่ละขนาด

Ollama บน Server องค์กรต้องใช้ GPU และ VRAM เท่าไร วิธีคำนวณจากขนาดโมเดล Quantization และ Context Length พร้อมเปรียบเทียบ Ollama, vLLM และ llama.cpp

โดย ทีมงาน THAI DATA CLOUD อัปเดต อ่าน 10 นาที

แชร์FacebookXLINELinkedIn
Ollama บน Server องค์กรกับการคำนวณ GPU และ VRAM

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 ใช้

  1. Model Weights: น้ำหนักของโมเดลทั้งหมด เป็นส่วนที่ใหญ่ที่สุด
  2. KV Cache: หน่วยความจำที่เก็บบริบทของบทสนทนา เพิ่มขึ้นตาม Context Length และจำนวนผู้ใช้พร้อมกัน
  3. 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 กี่เปอร์เซ็นต์

คำสั่งพื้นฐานสำหรับตรวจการใช้งาน

ollama pull llama3.1:8b
ollama run llama3.1:8b
ollama ps
nvidia-smi

สำหรับ Server ที่มีผู้ใช้หลายคน ให้ดูตัวแปร OLLAMA_NUM_PARALLEL (จำนวนคำขอพร้อมกันต่อโมเดล) และ OLLAMA_MAX_LOADED_MODELS (จำนวนโมเดลที่โหลดค้างไว้) ทั้งสองค่ามีผลต่อ VRAM โดยตรง [ตรวจสอบ: ชื่อตัวแปรและค่าเริ่มต้นในเวอร์ชันล่าสุด]

เปรียบเทียบ Ollama, vLLM และ llama.cpp

มิติ Ollama vLLM llama.cpp
จุดเด่น ติดตั้งและจัดการโมเดลง่าย Throughput สูงสำหรับผู้ใช้พร้อมกันจำนวนมาก รันได้ทั้ง CPU และ GPU ใช้ทรัพยากรน้อย
รูปแบบโมเดล GGUF ผ่าน Library ของ Ollama Safetensors จาก Hugging Face GGUF
API REST API และแบบที่เข้ากันได้กับ OpenAI แบบที่เข้ากันได้กับ OpenAI มี Server ในตัว
เหมาะกับ ทดลอง, ทีมเล็ก, Prototype Production ที่มีผู้ใช้หลายสิบคนขึ้นไป เครื่องที่ไม่มี GPU หรือ Edge Device

Ollama ใช้ llama.cpp เป็นแกนประมวลผล จึงมีคุณสมบัติด้านทรัพยากรใกล้กัน ส่วน vLLM ใช้เทคนิค PagedAttention จัดการ KV Cache ได้มีประสิทธิภาพกว่าเมื่อมีคำขอพร้อมกันจำนวนมาก ดูรายละเอียดได้ที่ เอกสาร vLLM แนวทางที่หลายทีมใช้คือเริ่มพัฒนาบน Ollama แล้วย้ายไป vLLM เมื่อขึ้น Production

ความปลอดภัยเมื่อรัน Ollama บน Server

  • API ของ Ollama ใช้พอร์ต 11434 และไม่มีระบบยืนยันตัวตนในตัว ห้ามเปิดพอร์ตนี้สู่อินเทอร์เน็ตโดยตรง
  • วาง Reverse Proxy ที่มีการยืนยันตัวตนและ TLS ไว้ด้านหน้า
  • จำกัดการเข้าถึงด้วย Firewall ให้เฉพาะ Application Server ที่ต้องใช้
  • เก็บ Log การใช้งาน เพื่อใช้ตรวจสอบย้อนหลังตามนโยบาย AI Governance ขององค์กร

การรัน LLM บน Server ขององค์กรเองช่วยให้ข้อมูลไม่ออกนอกระบบ อ่านภาพรวมเพิ่มเติมได้ที่ Private AI รัน LLM บนเซิร์ฟเวอร์ขององค์กร และถ้าต้องการให้โมเดลตอบจากเอกสารของบริษัท ดูแนวทางได้ที่ RAG คืออะไร

คำถามที่พบบ่อย

Ollama คืออะไร?

Ollama คือเครื่องมือ Open Source ที่ช่วยดาวน์โหลด จัดการ และรัน LLM บนเครื่องของตัวเองผ่านคำสั่งง่ายๆ และมี API ให้แอปพลิเคชันเรียกใช้

Ollama รันบน CPU อย่างเดียวได้ไหม?

ได้ แต่ช้ากว่า GPU มาก เหมาะกับโมเดลขนาดเล็กหรือการทดลอง สำหรับงานที่มีผู้ใช้จริงควรมี GPU ที่ VRAM พอสำหรับโมเดลทั้งหมด

ใช้ GPU หลายใบกับ Ollama ได้ไหม?

ได้ Ollama กระจายโมเดลที่ใหญ่เกิน VRAM ของ GPU ใบเดียวไปหลายใบได้ แต่ความเร็วขึ้นกับการเชื่อมต่อระหว่าง GPU ด้วย

ควรเลือก Quantization แบบไหน?

เริ่มจาก 4-bit แบบ Q4_K_M ซึ่งสมดุลระหว่างขนาดและคุณภาพ ถ้าคำตอบยังไม่แม่นพอสำหรับงานของคุณ ให้ทดสอบ 8-bit หรือเปลี่ยนไปใช้โมเดลที่ใหญ่ขึ้น

สรุป

การประเมิน Hardware สำหรับ Ollama ต้องคิดทั้ง Model Weights, KV Cache และ Overhead โดย KV Cache มักเป็นส่วนที่ถูกประเมินต่ำเกินไป ให้คำนวณจาก Context Length และจำนวนผู้ใช้พร้อมกันจริง เริ่มจาก Ollama สำหรับทดลอง แล้วพิจารณา vLLM เมื่อต้องรองรับผู้ใช้จำนวนมาก

THAI DATA CLOUD ให้บริการ Cloud Server และ Private Cloud Server บน Data Center ในประเทศไทย สำหรับรัน LLM ที่ข้อมูลต้องอยู่ในประเทศ [ตรวจสอบ: มี GPU Instance หรือไม่ รุ่น GPU และขนาด VRAM ที่ให้บริการ] หากต้องการให้ทีมช่วยประเมินสเปกจาก Use Case จริง ปรึกษาได้ที่ ติดต่อ THAI DATA CLOUD

แชร์FacebookXLINELinkedIn

มีคำถามเรื่องบริการ? ติดต่อทีมงาน