Chạy mô hình ngôn ngữ lớn (LLM) trên máy tính cá nhân giúp bạn kiểm soát hoàn toàn dữ liệu, không tốn phí API, và thoải mái thử nghiệm không lo bị giới hạn. Ollama biến việc này thành chuyện đơn giản bất kể bạn dùng hệ điều hành nào.
Bài viết này hướng dẫn bạn cài đặt Ollama, tải model, tùy chỉnh và tích hợp LLM cục bộ vào công việc thực tế.
Tại Sao Nên Chạy LLM Trên Máy?
Trước khi bắt đầu, hãy xem lý do vì sao inference cục bộ đáng để thử:
- Bảo mật: Prompt và dữ liệu không bao giờ rời khỏi máy bạn
- Chi phí: Hoàn toàn miễn phí sau khi tải model
- Tốc độ: Không có độ trễ mạng với các prompt ngắn trên phần cứng đủ mạnh
- Offline: Hoạt động không cần internet sau khi tải model xong
- Tùy chỉnh: Tạo biến thể model riêng với system prompt và tham số cụ thể
Bước 1: Cài Đặt Ollama
Try ollama
Tải Ollama cho hệ điều hành của bạn tại ollama.com - hỗ trợ macOS, Linux và Windows.
macOS
# Tải từ trang chủ hoặc dùng Homebrew
brew install ollamaLinux
curl -fsSL https://ollama.com/install.sh | shWindows
Tải installer từ ollama.com và chạy. Ollama sẽ hoạt động như dịch vụ nền sau khi cài.
Kiểm tra cài đặt thành công:
ollama --versionBạn sẽ thấy số phiên bản hiển thị. Ollama chạy server cục bộ trên cổng 11434 mặc định.
Bước 2: Tải Model Đầu Tiên
Ollama có thư viện model đã được quantize sẵn. Chọn model phù hợp với phần cứng của bạn:
# Lựa chọn tốt cho đa số máy (4.7GB)
ollama pull llama3.1:8b
# Nhỏ hơn cho máy ít RAM (2GB)
ollama pull phi3:mini
# Model lớn cho chất lượng cao hơn (cần 16GB+ RAM)
ollama pull llama3.1:70bYêu Cầu Phần Cứng
| Kích thước Model | RAM cần | GPU VRAM | Mục đích sử dụng |
|---|---|---|---|
| 1-3B | 4GB | 4GB | Tác vụ nhanh, autocomplete |
| 7-8B | 8GB | 8GB | Chat chung, hỗ trợ code |
| 13B | 16GB | 12GB | Suy luận phức tạp |
| 70B | 48GB+ | 24GB+ | Chất lượng gần bằng cloud |
Nếu bạn dùng Mac Apple Silicon với unified memory, bạn có thể chạy model lớn hơn so với cột VRAM vì RAM hệ thống được chia sẻ với GPU.
Bước 3: Chạy và Trò Chuyện
Bắt đầu phiên chat tương tác:
ollama run llama3.1:8bBạn sẽ vào giao diện chat. Gõ prompt và nhấn Enter. Dùng /bye để thoát.
Cho truy vấn đơn lẻ không tương tác:
ollama run llama3.1:8b "Giải thích sự khác biệt giữa TCP và UDP trong hai câu"Bước 4: Sử Dụng REST API
Ollama cung cấp API cục bộ tương thích với format OpenAI chat completions. Đây là phần mạnh nhất cho developer:
curl http://localhost:11434/api/generate -d '{
"model": "llama3.1:8b",
"prompt": "Viết hàm Python để merge hai sorted list",
"stream": false
}'Cho hội thoại kiểu chat:
curl http://localhost:11434/api/chat -d '{
"model": "llama3.1:8b",
"messages": [
{"role": "system", "content": "Bạn là lập trình viên Python cấp cao."},
{"role": "user", "content": "Review code này tìm bug: def add(a, b): return a - b"}
],
"stream": false
}'Tích Hợp Python
import requests
def ask_ollama(prompt, model="llama3.1:8b"):
response = requests.post(
"http://localhost:11434/api/generate",
json={"model": model, "prompt": prompt, "stream": False}
)
return response.json()["response"]
# Ví dụ sử dụng
result = ask_ollama("Tạo SQL query tìm email trùng lặp trong bảng users")
print(result)Dùng Endpoint Tương Thích OpenAI
Nhiều công cụ hỗ trợ format API của OpenAI. Ollama cung cấp endpoint tương thích:
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="ollama" # chuỗi bất kỳ đều được
)
response = client.chat.completions.create(
model="llama3.1:8b",
messages=[{"role": "user", "content": "Xin chào, bạn khỏe không?"}]
)
print(response.choices[0].message.content)Điều này có nghĩa bất kỳ công cụ nào hỗ trợ endpoint OpenAI-compatible đều có thể dùng model Ollama cục bộ mà không cần sửa code.
Bước 5: Tạo Model Tùy Chỉnh
Modelfile cho phép bạn tạo biến thể chuyên biệt với system prompt, nhiệt độ và các thiết lập riêng:
# Lưu thành file tên Modelfile
FROM llama3.1:8b
SYSTEM """Bạn là kỹ sư phần mềm cấp cao chuyên về code review.
Luôn chỉ ra bug tiềm ẩn, vấn đề bảo mật và đề xuất cải thiện.
Trả lời ngắn gọn, dùng bullet points."""
PARAMETER temperature 0.3
PARAMETER num_ctx 4096Build và chạy model tùy chỉnh:
ollama create code-reviewer -f Modelfile
ollama run code-reviewerGiờ bạn có trợ lý review code chuyên dụng chạy hoàn toàn trên máy.
Bước 6: Quản Lý Model
Các lệnh thiết yếu để quản lý model:
# Liệt kê model đã tải
ollama list
# Xem chi tiết model
ollama show llama3.1:8b
# Xóa model để giải phóng ổ cứng
ollama rm phi3:mini
# Sao chép model (hữu ích trước khi tùy chỉnh)
ollama cp llama3.1:8b my-llamaMẹo Thực Tế
Chọn mức quantization phù hợp: Model có các mức quantize khác nhau (Q4, Q5, Q8). Q4 nhỏ nhất và nhanh nhất nhưng chất lượng thấp hơn. Q8 gần với bản gốc nhất nhưng đòi hỏi nhiều tài nguyên hơn. Mặc định khi pull thường là Q4, đủ tốt cho hầu hết tác vụ.
Tăng context window: Mặc định Ollama dùng context 2048 token. Với tài liệu dài hơn:
ollama run llama3.1:8b --num-ctx 8192Chạy nhiều model cùng lúc: Ollama có thể phục vụ nhiều model đồng thời. Chỉ cần gửi request tới tên model khác nhau, Ollama tự động xử lý việc load và unload.
Theo dõi hiệu suất: Kiểm tra model nào đang được load:
ollama psTận dụng GPU: Ollama tự động phát hiện và dùng GPU (NVIDIA qua CUDA, Apple Silicon qua Metal). Nếu muốn ép chạy CPU:
OLLAMA_NO_GPU=1 ollama run llama3.1:8bCập nhật model: Trọng số model đôi khi được cập nhật với các bản sửa:
ollama pull llama3.1:8bLệnh này chỉ tải lại khi có phiên bản mới.
Các Trường Hợp Sử Dụng Phổ Biến Cho Developer
- Sinh code và completion: Dùng như Copilot cục bộ
- Review code: Đẩy diff qua model reviewer tùy chỉnh
- Viết tài liệu: Sinh docs từ code comments
- Chuyển đổi dữ liệu: Convert giữa các format mà không gửi data ra ngoài
- Testing: Sinh test case và edge case
- Commit message: Đẩy git diff qua model để tạo commit message có ý nghĩa
Xử Lý Sự Cố
Model không load được: Kiểm tra RAM khả dụng với free -h (Linux) hoặc Activity Monitor (macOS). Đóng ứng dụng khác để giải phóng bộ nhớ.
Phản hồi chậm: Đảm bảo GPU acceleration đang hoạt động. Trên Linux, kiểm tra CUDA đã cài. Trên macOS với Apple Silicon thì tự động xử lý.
Xung đột cổng: Nếu cổng 11434 đã được dùng, đặt cổng khác:
OLLAMA_HOST=0.0.0.0:11435 ollama serve