ในโลกของ Generative AI ในปัจจุบัน การตัดสินใจระหว่างการใช้งาน LLM (Large Language Model) แบบ Local Deployment กับ Cloud API เป็นสิ่งสำคัญที่ต้องพิจารณาอย่างรอบคอบ บทความนี้จะพาคุณเจาะลึกการติดตั้ง Ollama พร้อม Llama 4 และ Qwen 3 อย่างละเอียด พร้อมทั้งโค้ด Production-Ready และ Benchmark ที่วัดผลได้จริงจากประสบการณ์ตรง
Ollama คืออะไร และทำไมต้องเลือกใช้งาน
Ollama เป็น Open-Source Runtime ที่ทำให้การรัน LLM บนเครื่อง local ง่ายเหมือนการพิมพ์คำสั่งเดียว โดยรองรับ model หลากหลาย เช่น Llama จาก Meta, Qwen จาก Alibaba, Mistral, และอื่นๆ อีกมากมาย
ข้อดีของ Local Deployment
- ความเป็นส่วนตัวของข้อมูล — ข้อมูลไม่ต้องส่งออกไปยัง server ภายนอก เหมาะสำหรับองค์กรที่มีนโยบายความปลอดภัยเข้มงวด
- Latency ต่ำ — การตอบสนองเร็วกว่า network call เนื่องจากประมวลผลบนเครื่องเดียวกัน
- ควบคุมต้นทุนในระยะยาว — ไม่ต้องจ่ายค่า API ต่อ token แม้ว่าจะต้องลงทุน hardware ล่วงหน้า
- ใช้งานแบบ Offline — ทำงานได้โดยไม่ต้องเชื่อมต่อ internet
ข้อจำกัดที่ต้องยอมรับ
- Hardware ราคาสูง — ต้องการ GPU VRAM อย่างน้อย 24GB สำหรับ Llama 4 8B และ 48GB+ สำหรับ Llama 4 70B
- ประสิทธิภาพจำกัด — Single machine ไม่สามารถเทียบเท่า cluster ขนาดใหญ่ได้
- การบำรุงรักษา — ต้องจัดการ update, backup และ troubleshooting ด้วยตัวเอง
สถาปัตยกรรมของ Ollama
Ollama ใช้สถาปัตยกรรมแบบ Layered ที่แบ่งหน้าที่ชัดเจน ทำให้เข้าใจการทำงานและสามารถ optimize ได้อย่างตรงจุด
โครงสร้างหลักของระบบ
┌─────────────────────────────────────────────────────────────┐
│ Ollama Server (Port 11434) │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ REST API │ │ WebSocket │ │ Model Management │ │
│ │ Layer │ │ Handler │ │ (pull/push) │ │
│ └──────┬──────┘ └──────┬──────┘ └──────────┬──────────┘ │
│ │ │ │ │
│ ┌──────┴────────────────┴────────────────────┴──────────┐ │
│ │ Request Router │ │
│ │ (Load Balancing & Queue) │ │
│ └─────────────────────────┬─────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────┴─────────────────────────────┐ │
│ │ Inference Engine │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌───────────────┐ │ │
│ │ │ llama.cpp │ │ vLLM │ │ FlashAttention│ │ │
│ │ │ Backend │ │ Backend │ │ Integration │ │ │
│ │ └─────────────┘ └─────────────┘ └───────────────┘ │ │
│ └───────────────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ GPU Memory │ │
│ │ (CUDA/Metal/OpenCL) │ │
│ └───────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
หน่วยความจำที่ต้องการสำหรับแต่ละ Model
# คำสั่ง ollama สำหรับตรวจสอบข้อมูล Model
ollama show llama3.3:latest
ตัวอย่างผลลัพธ์
Model
arch llama
parameters 70.6B
quantization Q4_K_M
size 39.4GB
minimum RAM 48GB # ขั้นต่ำที่แนะนำ
สำหรับ Qwen 2.5
ollama show qwen2.5:72b-instruct-q4_K_M
Model
arch qwen2
parameters 72B
quantization Q4_K_M
size 41.2GB
minimum RAM 50GB
การติดตั้ง Ollama บน Ubuntu 22.04/24.04
ขั้นตอนการติดตั้งที่ครอบคลุมตั้งแต่ GPU Driver ไปจนถึงการตั้งค่า Production
ขั้นตอนที่ 1: ติดตั้ง NVIDIA Driver และ CUDA
# ตรวจสอบ GPU ที่มีอยู่
nvidia-smi
ตัวอย่างผลลัพธ์ที่คาดหวัง
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 545.23.08 Driver Version: 545.23.08 CUDA Version: 12.3 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 NVIDIA RTX 4090 N/A | 00000000:01:00.0 Off | N/A |
| 0% 42C P0 52W / 450W | 2048MiB / 24576MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
ติดตั้ง CUDA Toolkit 12.3
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get install -y cuda-toolkit-12-3
เพิ่ม PATH ใน ~/.bashrc
echo 'export PATH=/usr/local/cuda-12.3/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.3/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
ยืนยันการติดตั้ง
nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Fri_Nov__3_21:47:51_PDT_2023
Cuda compilation tools, release 12.3, V12.3.107
ขั้นตอนที่ 2: ติดตั้ง Ollama
# วิธีที่ 1: ใช้ Install Script (แนะนำ)
curl -fsSL https://ollama.com/install.sh | sh
วิธีที่ 2: Manual Installation
ดาวน์โหลด binary
curl -L https://ollama.com/download/ollama-linux-amd64 -o /usr/local/bin/ollama
chmod +x /usr/local/bin/ollama
ตรวจสอบเวอร์ชัน
ollama --version
ollama version 0.5.4
สร้าง systemd service สำหรับ Production
sudo tee /etc/systemd/system/ollama.service > /dev/null <สร้าง user และกำหนดสิทธิ์
sudo useradd -r -s /bin/false ollama
sudo systemctl daemon-reload
sudo systemctl enable ollama
sudo systemctl start ollama
ตรวจสอบสถานะ
sudo systemctl status ollama
● ollama.service - Ollama Service
Loaded: loaded (/etc/systemd/system/ollama.service; enabled; preset: enabled)
Active: active (running) since Mon 2026-01-20 10:30:00 UTC; 5s ago
การ Deploy Llama 4 และ Qwen 3
การดาวน์โหลดและติดตั้ง Model
# ดาวน์โหลด Llama 4 8B (Quantized Q4_K_M)
ใช้เวลาประมาณ 15-20 นาที ขึ้นอยู่กับความเร็ว internet
ollama pull llama4:8b
ดาวน์โหลด Llama 4 70B (ต้องการ VRAM อย่างน้อย 48GB)
ollama pull llama4:70b
ดาวน์โหลด Qwen 3
ollama pull qwen3:8b
ollama pull qwen3:72b
ดาวน์โหลด Qwen 2.5 (เสถียรกว่า ยังไม่มี Qwen 3 ทุก variant)
ollama pull qwen2.5:72b-instruct-q4_K_M
ดาวน์โหลด Embedding Model สำหรับ RAG
ollama pull nomic-embed-text
ตรวจสอบ Model ที่ติดตั้งแล้ว
ollama list
ผลลัพธ์ตัวอย่าง
NAME ID SIZE MODIFIED
llama4:8b a1b2c3d4 4.9GB 2 hours ago
qwen2.5:72b-instruct-q4_K_M e5f6g7h8 41.2GB 5 hours ago
nomic-embed-text i9j0k1l2 274MB 1 day ago
การสร้าง Custom Model Configuration
# สร้างไฟล์ Modelfile สำหรับ Llama 4 ที่ปรับแต่งแล้ว
cat > ~/Modelfile.llama4-production <<'EOF'
FROM llama4:8b
ตั้งค่า System Prompt
SYSTEM """
You are a professional software engineer assistant.
You provide accurate, well-documented code solutions.
Always explain your reasoning and include error handling.
"""
ตั้งค่า Parameters
PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER top_k 40
PARAMETER num_ctx 8192
PARAMETER num_gpu 1
PARAMETER repeat_penalty 1.1
Template สำหรับ Chat
TEMPLATE """
<|begin_of_text|><|start_header_id|>system<|end_header_id|>
{{ .System }}
<|eot_id|><|start_header_id|>user<|end_header_id|>
{{ .Prompt }}<|eot_id|><|start_header_id|>assistant<|end_header_id|>
"""
EOF
สร้าง Model จาก Modelfile
ollama create llama4-production -f ~/Modelfile.llama4-production
ทดสอบ Model ที่สร้าง
ollama run llama4-production "Explain the difference between REST and GraphQL in Thai"
ตรวจสอบการใช้งาน VRAM
nvidia-smi --query-gpu=memory.used,memory.total --format=csv
การ Implement Production-Ready API Server
โค้ด Python สำหรับสร้าง API Server ที่รองรับ Concurrent Requests, Rate Limiting, และ Fallback to Cloud
"""
Production-Ready LLM API Server
รองรับ Local Ollama พร้อม Fallback ไป HolySheep AI
"""
import os
import time
import asyncio
from datetime import datetime, timedelta
from collections import defaultdict
from typing import Optional
from dataclasses import dataclass
from enum import Enum
Import required libraries
from fastapi import FastAPI, HTTPException, Request, BackgroundTasks
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import StreamingResponse
from pydantic import BaseModel, Field
import httpx
Configuration
@dataclass
class Config:
# Local Ollama (Primary)
OLLAMA_BASE_URL: str = "http://localhost:11434"
OLL