Ollama เป็นเครื่องมือที่ทำให้ผู้ดูแลระบบและนักพัฒนา สามารถดึงและรัน Large Language Models (LLM) แบบ open-source บนเซิร์ฟเวอร์ของตนเอง โดยไม่จำเป็นต้องพึ่งพา API services ที่ต้องเสียค่าใช้งานต่อ token เช่น OpenAI หรือ Claude API
สรุปสั้น: Ollama ช่วยให้คุณรันโมเดลภาษาขนาดใหญ่ (LLM) เช่น Llama 3 บน VPS ของตัวเอง โดยที่ไม่เสียค่า API ต่อ token อย่างไรก็ตาม LLM ต้องการ CPU/RAM จำนวนมาก และ VPS ส่วนใหญ่ไม่มี GPU ดังนั้นจึงเหมาะสำหรับโมเดลที่มีขนาดเล็ก เช่น 7B-8B parameters ในรูปแบบ Q4 quantization เท่านั้น
Ollama คืออะไร และทำไมต้องใช้
Ollama เป็นเครื่องมือที่พัฒนาโดยชุมชน open-source ที่ช่วยให้การติดตั้งและรัน LLM บนเครื่องคอมพิวเตอร์ของคุณเองง่ายขึ้นอย่างมาก ทั้งเครื่องส่วนตัว (local machine) และเซิร์ฟเวอร์ (VPS/dedicated server) Ollama จัดการเรื่องการดาวน์โหลดโมเดล การจัดการระหว่างหน่วยความจำ และการโหลด/การทำงานของโมเดลโดยอัตโนมัติ ผ่าน command line ที่ใช้งานง่าย
ทั่วไปแล้ว นักพัฒนาและ DevOps engineer ต้องการ self-host LLM เพื่อเหตุผลหลักสามประการ:
- ความเป็นส่วนตัว (Privacy): ข้อมูลและ prompt ที่คุณส่งนั้นจะอยู่บน VPS ของคุณเองทั้งหมด ไม่ต้องส่งไปยัง third-party API service
- ประหยัดต้นทุน (Cost): ไม่มีค่าใช้งาน per-token ถ้าคุณใช้ LLM อย่างหนัก API ของ third-party อาจมีค่าใช้งานจำนวนมากแต่ self-hosting เพียงแค่เสีย resource ของ VPS เท่านั้น
- ใช้งานแบบ Offline: ถ้า VPS ของคุณขาดการเชื่อมต่ออินเทอร์เน็ต LLM ก็สามารถทำงานได้ต่อเนื่อง เพราะทุกอย่างทำงานในเครื่องของคุณ
ข้อจำกัดด้าน Hardware และความเป็นจริง
สิ่งสำคัญที่ต้องเข้าใจคือ Large Language Models เป็นโปรแกรมที่ต้องการ resource มหาศาล โดยเฉพาะอย่างยิ่งหน่วยความจำและความเร็วของ CPU หรือ GPU
ข้อควรระวัง: VPS ทั่วไปส่วนใหญ่ (รวมทั้ง VPS ราคาประหยัด) ไม่มี GPU (graphics processor) ดังนั้น LLM จะต้องรันบน CPU เพียงอย่างเดียว ซึ่งจะช้ามากสำหรับโมเดลขนาดใหญ่ หากคุณมี budget สูง VPS ที่มี GPU (เช่น NVIDIA RTX ขึ้นไป) จะเร็วขึ้นหลายเท่า แต่ราคาก็แพงขึ้นอย่างมาก
โมเดลขนาดต่าง ๆ มีความต้องการหน่วยความจำแตกต่างกัน:
| ขนาดโมเดล | ขนาด Q4 Quantization | RAM ต่ำสุด | ความเร็วโดยประมาณ (CPU) | ความเหมาะสม |
|---|---|---|---|---|
| 7B parameters | ~4-5 GB | 8 GB | ช้า (5-10 tokens/sec) | ใช้ได้ยอมรับได้ |
| 13B parameters | ~8-9 GB | 16 GB | ช้ามาก (1-2 tokens/sec) | ไม่แนะนำบน CPU เพียง |
| 70B parameters | ~40+ GB | 64+ GB | ต้องใช้ GPU มิฉะนั้นจึงใช้ไม่ได้ | ไม่เหมาะสำหรับ VPS ส่วนใหญ่ |
สำหรับเซิร์ฟเวอร์ CPU เพียงอย่างเดียว เราแนะนำให้ใช้โมเดล 7B parameters (เช่น Llama 3.1 7B, Mistral 7B, Phi-3) ที่มี quantization level Q4 (8-bit lowered) ซึ่งจะใช้พื้นที่ประมาณ 4-5 GB และ RAM รวม 8-16 GB ก็เพียงพอ
เคล็ดลับ: ถ้าคุณต้องการให้ LLM ตอบเร็วขึ้น ให้พิจารณาใช้โมเดลที่เล็กกว่า เช่น Phi-3 (3.8B) หรือ Mistral (7B) แทนที่จะลองรัน Llama 3 70B ซึ่งจะช้านัก
ข้อกำหนด (Prerequisites)
- VPS/Server: Ubuntu 22.04 LTS หรือใหม่กว่า โดยมี root access
- RAM: ขั้นต่ำ 8 GB (แนะนำ 16 GB ขึ้นไป)
- Storage: ขั้นต่ำ 20 GB free space (โมเดล 7B เพียงลำพัง ประมาณ 5 GB แต่คุณอาจต้องหลายโมเดล)
- Bandwidth: ความเร็วอินเทอร์เน็ตที่ดีเพื่อดาวน์โหลดโมเดล (โมเดล 7B ประมาณ 4-5 GB)
- Knowledge: ความเข้าใจพื้นฐานเกี่ยวกับ Linux command line และ systemd
ติดตั้ง Ollama บน Ubuntu
Ollama ให้บริการ install script แบบ official ที่ใช้งานง่าย ทำตามขั้นตอนต่อไปนี้:
- เข้าสู่เซิร์ฟเวอร์ของคุณ:
ssh root@your-vps-ip
- ดาวน์โหลดและรัน install script:
curl -fsSL https://ollama.ai/install.sh | sh
Script นี้จะติดตั้ง Ollama binary, dependencies ที่จำเป็น และ systemd service โดยอัตโนมัติ
- ตรวจสอบว่า Ollama กำลังทำงาน:
systemctl status ollama
ถ้าคุณเห็น "active (running)" แสดงว่าติดตั้งเสร็จแล้ว Ollama จะ bind บน localhost:11434 โดยค่าเริ่มต้น
- ทดสอบว่า Ollama เตรียมพร้อมแล้ว:
ollama list
คำสั่งนี้จะแสดงรายการโมเดลที่ติดตั้งไว้ (จะว่างถ้าเพิ่งติดตั้ง)
ดึงและรัน LLM Model
ตอนนี้ลองดึง Llama 3 7B (โมเดลที่เสถียรและใช้งานได้ดี):
- ดึงโมเดล:
ollama pull llama3
คำสั่งนี้จะดาวน์โหลดโมเดล Llama 3 (เวอร์ชัน 8B) ประมาณ 4.7 GB จากเซิร์ฟเวอร์ของ Ollama ห้ามสั่งยับ download ให้เสร็จก่อน
- รันโมเดลและสนทนา:
ollama run llama3
เมื่อเห็น prompt > ลองพิมพ์คำถาม เช่น:
> What is machine learning?
โมเดล Llama 3 จะเริ่มสร้างคำตอบ ซึ่งอาจช้าสักครู่ (ขึ้นอยู่กับ CPU) ยอมรับได้
- ออกจาก interactive mode:
> /bye
หรือกด Ctrl+D
ถ้าต้องการดึงโมเดลอื่น ๆ ลองชื่อเหล่านี้:
ollama pull mistral— Mistral 7B (รวดเร็วกว่า Llama แต่เข้าใจภาษาไม่ดีเท่า)ollama pull phi— Phi-3 (โมเดลจาก Microsoft ขนาด 3.8B ใช้ RAM น้อยที่สุด)ollama pull neural-chat— Neural Chat 7B (ปรับแต่งเพื่อการสนทนา)
ใช้ REST API
Ollama เปิด REST API ที่ localhost:11434 เพื่อให้คุณสามารถส่งขอ (request) ไปยัง LLM โดยทางโปรแกรมได้ (แทนที่จะใช้ interactive mode)
ต่อไปนี้คือตัวอย่าง curl request ง่าย ๆ:
- สร้างการสนทนาง่าย ๆ:
curl -X POST http://localhost:11434/api/generate \
-H "Content-Type: application/json" \
-d '{
"model": "llama3",
"prompt": "Explain quantum computing in simple terms",
"stream": false
}'
ฟ้ลด "stream": false บอกว่าให้รอจนกว่า LLM จะตอบเสร็จแล้วจึงส่งคำตอบกลับทั้งหมด
- ใช้ streaming mode (การตอบแบบกระแสน้ำ):
curl -X POST http://localhost:11434/api/generate \
-H "Content-Type: application/json" \
-d '{
"model": "llama3",
"prompt": "What is the capital of Thailand?",
"stream": true
}'
โดย "stream": true API จะส่งคำตอบกลับทีละส่วน (word by word) ในระหว่างที่ LLM คิดอยู่ ซึ่งดูราวกับว่าเหมือน ChatGPT ที่พิมพ์คำตอบออกมาเรื่อย ๆ
คำตอบจะอยู่ในรูปแบบ JSON:
{
"model": "llama3",
"created_at": "2024-01-15T10:30:00Z",
"response": "The capital of Thailand is Bangkok...",
"done": true
}
สร้าง Chat Script ง่าย ๆ
ลองสร้าง Python script ที่ใช้ Ollama API:
#!/usr/bin/env python3
import requests
import json
def chat_with_ollama(prompt, model="llama3"):
url = "http://localhost:11434/api/generate"
payload = {
"model": model,
"prompt": prompt,
"stream": False
}
response = requests.post(url, json=payload)
data = response.json()
return data.get("response", "No response")
if __name__ == "__main__":
user_input = input("You: ")
response = chat_with_ollama(user_input)
print(f"Ollama: {response}")
การใช้งาน:
python3 chat.py You: How do I configure a firewall on Linux? Ollama: To configure a firewall on Linux...
ความปลอดภัย (Security Considerations)
⚠️ จุดควรระวัง: โดยค่าเริ่มต้น Ollama จะ bind เพียงบน localhost:11434 ซึ่งหมายความว่า API สามารถเข้าถึงได้เฉพาะจากเซิร์ฟเวอร์นั้นเองเท่านั้น นี่คือสิ่งที่ดี แต่หากคุณต้องการให้ application อื่น ๆ (บน server เดียวกัน) เข้าถึง API ก็ปลอดภัย
อย่างไรก็ตาม ห้ามเปิด port 11434 ให้สาธารณะบน internet โดยไม่มีการรักษาความปลอดภัย เนื่องจาก:
- ใครก็ได้สามารถใช้ CPU/GPU ของคุณเพื่อรัน prompt ของพวกเขาโดยไม่มีการอนุญาต (resource theft)
- Prompt และคำตอบทั้งหมดจะส่งผ่าน HTTP โดยไม่มีการเข้ารหัส (ถ้าไม่ใช้ HTTPS proxy)
- ไม่มี rate limiting หรือการตรวจสอบสิทธิ์ (authentication) ในตัว
หากต้องการให้ application จากเซิร์ฟเวอร์อื่นเข้าถึง Ollama API ให้ใช้ reverse proxy เช่น Nginx พร้อมการตรวจสอบสิทธิ์:
server {
listen 443 ssl http2;
server_name ollama.example.com;
ssl_certificate /etc/ssl/certs/your-cert.crt;
ssl_certificate_key /etc/ssl/private/your-key.key;
auth_basic "Ollama API";
auth_basic_user_file /etc/nginx/.ollama_auth;
location / {
proxy_pass http://localhost:11434;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_buffering off;
}
}
วิธีนี้: 1) ปิด port 11434 จากอินเทอร์เน็ต 2) เปิด port 443 (HTTPS) ของ Nginx ที่มี SSL certificate 3) เพิ่ม HTTP Basic Auth เพื่อให้เฉพาะผู้ที่มี username/password เท่านั้นเข้าถึงได้
ตั้งค่า Ollama เป็น Systemd Service
ติดตั้ง script ของ Ollama ได้สร้าง systemd service โดยอัตโนมัติแล้ว แต่คุณสามารถตรวจสอบและตั้งค่าเพิ่มเติมได้:
- ดูไฟล์ systemd unit:
cat /etc/systemd/system/ollama.service
จะขึ้นประมาณนี้:
[Unit] Description=Ollama Service After=network-online.target [Service] ExecStart=/usr/bin/ollama serve User=ollama Group=ollama Restart=on-failure RestartSec=5s StandardOutput=journal StandardError=journal [Install] WantedBy=default.target
- เปิดใช้ Ollama ให้ start อัตโนมัติเมื่อ server เริ่มต้น:
systemctl enable ollama
- เริ่มต้นใหม่ (restart) Ollama service:
systemctl restart ollama
- ดูสถานะและ log:
journalctl -u ollama -f
-f ที่ท้ายคำสั่ง ช่วยให้คุณเห็น log แบบ real-time
สรุป
Ollama ช่วยให้การรัน open-source LLM บนเซิร์ฟเวอร์ของตนเอง ง่ายขึ้นอย่างมาก โดยไม่ต้องซื้อ GPU ราคาแพง (แม้ว่าการมี GPU จะเร็วขึ้นหลายเท่า) หรือรอ API calls ของ third-party
ความสำคัญหลักที่ต้องจำ:
- ใช้โมเดล 7B-8B parameters ที่ quantized ในรูปแบบ Q4 บน CPU VPS ทั่วไป
- เตรียม RAM อย่างน้อย 8-16 GB
- ตั้งค่าความปลอดภัย เช่น reverse proxy กรณีต้องเปิด API สู่อินเทอร์เน็ต
- ติดตั้ง Ollama ผ่าน official script และใช้ systemd service เพื่อให้ทำงานต่อเนื่อง
- ทดลองด้วยโมเดลเล็ก ๆ ก่อน (Phi-3, Mistral) แล้วค่อยปรับสเกลขึ้น
คำถามที่พบบ่อย (FAQ)
ฉันควรเลือก Ollama หรือ LM Studio หรือเครื่องมืออื่น ๆ?
Ollama มาพร้อมเซิร์ฟเวอร์ REST API ในตัว ง่ายต่อการอัตโนมัติ และมี model library มากมาย LM Studio เหมาะเพื่อใช้งานบน GUI บนเดสก์ท็อป หากต้องการเซิร์ฟเวอร์ VPS Ollama ดีกว่า
โมเดลไหนเร็วที่สุดบน CPU?
Phi-3 (3.8B parameters) เร็วที่สุด รองลงมาคือ Mistral 7B Llama 3 7B ช้าเล็กน้อยแต่ยังใช้ได้ สำหรับ 70B models คุณจำเป็นต้องมี GPU
ฉันสามารถรันหลายโมเดลพร้อมกันได้ไหม?
ได้ แต่ Ollama จะโหลดโมเดลลงแรมทีละตัว หากรันหลายโมเดลพร้อมกัน RAM จะเต็มอย่างรวดเร็ว มันดีกว่าที่จะใช้ API controller เพื่อแบ่งโมเดล
ฉันต้องใช้ VPS ราคาเท่าไหร่ที่เหมาะสม?
ขั้นต่ำ VPS ที่มี 16 GB RAM และ 4-8 vCPU ราคาประมาณ 10-30 USD/เดือน แม้ว่า 8 GB อาจใช้งานได้ แต่ 16 GB เป็นการเลือกที่สมดุลระหว่างราคาและประสิทธิภาพ
เริ่มต้นใช้งาน VPS AsiaGB วันนี้
VPS AsiaGB ใช้ SSD Storage ทุก Plan เลือก Datacenter ไทยหรือสิงคโปร์ได้ พร้อม Root Access เต็มรูปแบบ เริ่มต้น 500 บาท/เดือน (Linux) พร้อมทีมซัพพอร์ตภาษาไทย
ดูแพ็กเกจ VPS