Chuyển đến nội dung chính

Bài 3: Chọn model phù hợp - So sánh LLM cho Mac

Bảng so sánh toàn diện: Llama 3.2 vs Gemma 3 vs Qwen 2.5 vs Mistral vs Phi-4. RAM requirements cho từng model size. Quantization (Q4, Q5, Q8) ảnh hưởng speed vs quality. Chọn model theo use case.

🧠 AI & ML — Bài 2 Bài 3: Chọn model phù hợp - So sánh LLM cho Mac

Chạy AI Local với Ollama trên Apple Silicon

Phần 1: Nền tảng - Ollama & Apple Silicon

xdev.asia

Giới thiệu

Ollama registry có hàng trăm model. Vậy chọn model nào? Bài này là cheat sheet thực chiến: so sánh các model phổ biến nhất, giúp bạn chọn đúng model cho từng tác vụ và cấu hình Mac.


1. Hiểu Model Naming Convention

Khi bạn thấy qwen2.5:14b-instruct-q4_K_M, đây là cách đọc:

qwen2.5    :  14b    -  instruct   -  q4_K_M
└── Family    └── Size   └── Variant    └── Quantization
  • Family: Tên model gốc (Llama, Gemma, Qwen, Mistral...)
  • Size: Số parameter (1B, 3B, 7B, 8B, 14B, 32B, 70B...)
  • Variant: instruct (chat), base (raw), code (coding)
  • Quantization: Mức nén model (Q4, Q5, Q8, F16)

2. Quantization — Chọn Q mấy?

Quantization là kỹ thuật giảm kích thước model bằng cách giảm precision của weights:

QuantizationBits/weightSize ratioQualitySpeed
F1616 bit100% (baseline)Tốt nhấtChậm nhất
Q8_08 bit~50%Gần bằng F16Nhanh hơn
Q6_K6 bit~37%Rất tốtNhanh
Q5_K_M5 bit~31%TốtNhanh
Q4_K_M4 bit~25%Khá tốtNhanh nhất
Q3_K_M3 bit~19%Giảm đáng kểRất nhanh
Q2_K2 bit~12%KémCực nhanh

💡 Khuyến nghị: Q4_K_M là sweet spot cho hầu hết trường hợp. Giảm ~75% kích thước mà chất lượng vẫn tốt. Q5_K_M nếu muốn chất lượng cao hơn một chút.

Ví dụ thực tế: Llama 3.2 8B

QuantizationSize trên diskRAM cầnTokens/s (M3 Pro)
F1616 GB~18 GB~12 tok/s
Q8_08.5 GB~10 GB~24 tok/s
Q4_K_M4.9 GB~6.5 GB~32 tok/s

3. Bảng so sánh model toàn diện

Nhóm model nhỏ (1B-4B) — MacBook Air 8GB

ModelSize (Q4)RAM minCodeTiếng ViệtTổng quan
Llama 3.2 3B2.0 GB4 GB★★★☆★★☆☆Jack of all trades
Gemma 3 4B3.3 GB5 GB★★★☆★★★☆Đa ngôn ngữ tốt
Phi-4 Mini 3.8B2.5 GB4.5 GB★★★★★★☆☆Code/math rất mạnh
Qwen 2.5 3B1.9 GB4 GB★★★☆★★★☆Cân bằng tốt

Nhóm model trung bình (7B-14B) — MacBook 16-24GB

ModelSize (Q4)RAM minCodeTiếng ViệtTổng quan
Llama 3.2 8B4.9 GB7 GB★★★★★★★☆Best all-round
Gemma 3 12B8.1 GB10 GB★★★★★★★★Multilingual champion
Qwen 2.5 14B9.0 GB11 GB★★★★★★★★★Tiếng Việt tốt nhất
Mistral 7B4.1 GB6 GB★★★★★★★☆Code/reasoning solid
DeepSeek Coder V2 16B10.2 GB13 GB★★★★★★★☆☆Coding beast

Nhóm model lớn (30B+) — MacBook 32GB+

ModelSize (Q4)RAM minCodeTiếng ViệtTổng quan
Qwen 2.5 32B18 GB22 GB★★★★★★★★★★Best local model
Llama 3.3 70B40 GB48 GB★★★★★★★★★Cần 64GB+ RAM
DeepSeek V3 (distill 32B)19 GB23 GB★★★★★★★★☆Reasoning king

4. Chọn model theo use case

Chatbot thông minh / Hỏi đáp

# Tiếng Việt tốt nhất
ollama run qwen2.5:14b

# Cân bằng nhất
ollama run llama3.2

# RAM ít (8GB)
ollama run gemma3:4b

Viết code / Code review

# Coding chuyên sâu
ollama run deepseek-coder-v2:16b

# Cân bằng code + chat
ollama run qwen2.5-coder:14b

# RAM ít
ollama run phi4-mini

Tóm tắt / Viết văn bản

# Tiếng Việt
ollama run qwen2.5:14b

# Tiếng Anh
ollama run llama3.2

Phân tích hình ảnh (Vision)

# Vision tốt nhất
ollama run gemma3:12b   # Có vision built-in

# Nhẹ hơn
ollama run llava:7b

5. Chọn model theo RAM Mac

8 GB RAM (MacBook Air M1/M2 base)

# Chỉ nên dùng model 3-4B
ollama run llama3.2:3b     # 2.0 GB, chạy tốt
ollama run phi4-mini       # 2.5 GB, code tốt
ollama run gemma3:1b       # 1.0 GB, cực nhẹ

⚠️ Với 8GB, hãy đóng Safari trước khi chạy model 3B. macOS cần ~4GB cho hệ thống.

16 GB RAM

# Sweet spot
ollama run llama3.2        # 8B, 4.9 GB
ollama run qwen2.5:7b      # 7B, 4.7 GB
ollama run mistral          # 7B, 4.1 GB

24-36 GB RAM

# Mở rộng lên 12-14B
ollama run gemma3:12b      # 8.1 GB
ollama run qwen2.5:14b     # 9.0 GB, khuyến nghị
ollama run deepseek-coder-v2:16b  # 10.2 GB

48-64 GB+ RAM

# Model lớn, chất lượng gần cloud
ollama run qwen2.5:32b     # 18 GB
ollama run llama3.3:70b    # 40 GB, cần 48GB+ RAM

6. Benchmark thực tế

Chạy benchmark đơn giản:

# Đo thời gian generate
time ollama run llama3.2 "Viết function fibonacci bằng Python" --nowordwrap

Hoặc dùng Ollama API để lấy metrics chính xác:

curl -s http://localhost:11434/api/generate -d '{
  "model": "llama3.2",
  "prompt": "Explain Docker in 3 sentences",
  "stream": false
}' | python3 -c "
import sys, json
d = json.load(sys.stdin)
prompt_tokens = d['prompt_eval_count']
gen_tokens = d['eval_count']
prompt_time = d['prompt_eval_duration'] / 1e9
gen_time = d['eval_duration'] / 1e9
print(f'Prompt: {prompt_tokens} tokens in {prompt_time:.2f}s ({prompt_tokens/prompt_time:.1f} tok/s)')
print(f'Generate: {gen_tokens} tokens in {gen_time:.2f}s ({gen_tokens/gen_time:.1f} tok/s)')
"

7. Model tags nên biết

Khi pull model, tag mặc định là latest (thường là instruct + Q4_K_M). Nhưng bạn có thể chỉ định cụ thể:

# Chất lượng cao hơn (tốn RAM hơn)
ollama pull llama3.2:8b-instruct-q8_0

# Nhẹ nhất có thể
ollama pull llama3.2:3b-instruct-q4_0

# Model vision
ollama pull gemma3:12b    # Tự động có vision

# Chỉ lấy text model
ollama pull gemma3:4b-it-q4_K_M

Xem toàn bộ tags có sẵn:

# Truy cập: https://ollama.com/library/llama3.2/tags
# Hoặc: https://ollama.com/library/qwen2.5/tags

Tóm tắt

RAM MacModel khuyến nghịKích thước
8 GBllama3.2:3b, phi4-mini2-3 GB
16 GBllama3.2, qwen2.5:7b4-5 GB
24-36 GBqwen2.5:14b, gemma3:12b8-10 GB
48 GB+qwen2.5:32b18 GB

Quantization: Luôn bắt đầu với Q4_K_M (default). Chỉ nâng lên Q5/Q8 khi muốn chất lượng tốt hơn và có dư RAM.


Bài tập

  1. Dựa vào RAM Mac của bạn, chọn 2-3 model phù hợp và pull về
  2. Hỏi cùng một câu hỏi về tiếng Việt cho mỗi model, ghi nhận model nào trả lời tốt nhất
  3. Dùng benchmark script ở trên để đo tokens/second của mỗi model
  4. So sánh Q4 vs Q8 cùng một model: chất lượng có khác biệt rõ rệt không? Tốc độ khác bao nhiêu?

Bài tiếp theo: MLX Framework — Tăng tốc 3x inference →