Hướng dẫn Gemma 4
Cách chạy Gemma 4 với llama.cpp: Hướng dẫn thiết lập GGUF, Phần cứng & Lượng tử hóa

Gemma 4 ra mắt vào ngày 2 tháng 4 năm 2026 với sự hỗ trợ ngay từ ngày đầu của llama.cpp. Nếu bạn đã biết mình muốn sử dụng llama.cpp — chứ không phải Ollama hay LM Studio — hướng dẫn này cung cấp cho bạn các câu lệnh chính xác và các con số phần cứng để có phiên chạy đầu tiên ổn định, sau đó mới nâng cấp lên từ đó.
Nếu bạn vẫn đang quyết định nên sử dụng môi trường chạy cục bộ nào, hãy nhảy đến phần Khi nào llama.cpp là hợp lý trước.
Sơ lược về các kích thước mô hình Gemma 4
Gemma 4 có bốn biến thể. Trước khi tải xuống bất cứ thứ gì, hãy đối chiếu phần cứng của bạn với bảng bên dưới — đây là nguồn gốc đơn lẻ phổ biến nhất của các vấn đề.
| Biến thể | Kiến trúc | Ngữ cảnh | Phương thức | RAM 4-bit | RAM 8-bit | RAM FP16 |
|---|---|---|---|---|---|---|
| E2B | Dense + PLE | 128K | Văn bản, Hình ảnh, Âm thanh | ~4 GB | ~5–8 GB | ~10 GB |
| E4B | Dense + PLE | 128K | Văn bản, Hình ảnh, Âm thanh | ~5.5–6 GB | ~9–12 GB | ~16 GB |
| 26B-A4B | MoE (4B active) | 256K | Văn bản, Hình ảnh | ~16–18 GB | ~28–30 GB | ~52 GB |
| 31B | Dense | 256K | Văn bản, Hình ảnh | ~17–20 GB | ~34–38 GB | ~62 GB |
RAM ở đây có nghĩa là tổng bộ nhớ khả dụng — tổng của VRAM cộng với RAM hệ thống nếu bạn đang offload các lớp (layers), hoặc bộ nhớ hợp nhất trên Apple Silicon. Nếu tổng bộ nhớ của bạn thấp hơn cột 4-bit, llama.cpp vẫn có thể chạy mô hình bằng cách offload một phần vào đĩa, nhưng tốc độ tạo văn bản sẽ giảm rõ rệt.
Lựa chọn nhanh:
- Mac mini M4 (16 GB bộ nhớ hợp nhất): E4B ở mức Q8_0, hoặc 26B-A4B ở mức Q4 nếu bạn chấp nhận tốc độ chậm hơn.
- VRAM 16 GB (RTX 4080, RTX 4090 12 GB): E4B ở mức Q8_0 thoải mái; 26B-A4B ở mức Q4 còn dư không gian.
- VRAM 24 GB (RTX 3090 / 4090): 26B-A4B ở mức Q8_0 hoặc 31B ở mức Q4.
- VRAM 8 GB: E2B hoặc E4B chỉ ở mức Q4.
26B-A4B so với 31B: Mô hình MoE 26B chỉ kích hoạt 4 tỷ tham số cho mỗi bước truyền tới (forward pass), giúp nó nhanh hơn và nhẹ hơn so với bản dense 31B. Chọn 26B-A4B khi tốc độ là quan trọng và RAM của bạn hạn hẹp; chọn 31B khi bạn muốn chất lượng cao nhất và có không gian dự phòng.
Khi nào llama.cpp là hợp lý?
llama.cpp là lựa chọn phù hợp khi bạn muốn:
- Kiểm soát thô — các thông số lấy mẫu tùy chỉnh, tinh chỉnh KV cache, chế độ máy chủ với các endpoint tương thích OpenAI, tạo văn bản ràng buộc theo ngữ pháp.
- Suy luận ưu tiên CPU — llama.cpp nằm trong số các môi trường C++ được tối ưu hóa tốt nhất cho khối lượng công việc chỉ dùng CPU, bao gồm AVX2/AVX-512 và Apple Metal.
- Viết kịch bản và đường ống CI — một tệp thực thi duy nhất không phụ thuộc Python giúp tích hợp đơn giản.
- Suy luận đa phương thức thông qua
llama-mtmd-clivàllama-servervới--mmproj.
Nếu bạn muốn lần chạy đầu tiên dễ dàng nhất có thể — tải xuống và trò chuyện chỉ với một lệnh — thì Ollama hoặc LM Studio là những điểm bắt đầu ít rào cản hơn. Hãy quay lại đây khi bạn cần kiểm soát nhiều hơn.
Bước 1 — Build llama.cpp
Trước tiên, hãy clone repository. Luôn sử dụng nhánh master — các bản phát hành được gắn tag thường chậm hơn các bản sửa lỗi cho CUDA và Metal:
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
Linux với GPU NVIDIA (CUDA)
Hãy đảm bảo bộ công cụ CUDA đã được cài đặt (nvcc --version để kiểm tra), sau đó:
apt-get update
apt-get install -y pciutils build-essential cmake curl libcurl4-openssl-dev
cmake llama.cpp -B llama.cpp/build \
-DBUILD_SHARED_LIBS=OFF \
-DGGML_CUDA=ON
cmake --build llama.cpp/build \
--config Release -j --clean-first \
--target llama-cli llama-mtmd-cli llama-server llama-gguf-split
cp llama.cpp/build/bin/llama-* llama.cpp/
Xác minh xem việc offload GPU có hoạt động sau khi build hay không:
./llama.cpp/llama-cli -m model-cua-ban.gguf -p "Xin chào" -n 5 --n-gpu-layers 99
Nếu bạn thấy offloaded 0/N layers, điều đó có nghĩa là tệp nhị phân đã được biên dịch mà không có CUDA — hãy xóa thư mục build/ và build lại từ đầu.
macOS (Apple Silicon — Metal)
Metal được bật mặc định trên macOS. Bạn không cần -DGGML_CUDA=ON. Chỉ cần build bình thường:
brew install cmake
cmake llama.cpp -B llama.cpp/build \
-DBUILD_SHARED_LIBS=OFF \
-DGGML_CUDA=OFF
cmake --build llama.cpp/build \
--config Release -j --clean-first \
--target llama-cli llama-mtmd-cli llama-server
cp llama.cpp/build/bin/llama-* llama.cpp/
Trên Apple Silicon, "VRAM" và RAM hệ thống là cùng một vùng nhớ hợp nhất (unified memory) — vì vậy một chiếc M3 Pro 24 GB có thể trỏ toàn bộ 24 GB cho các trọng số mô hình.
Chỉ CPU (không có GPU)
cmake llama.cpp -B llama.cpp/build \
-DBUILD_SHARED_LIBS=OFF \
-DGGML_CUDA=OFF
cmake --build llama.cpp/build \
--config Release -j$(nproc) \
--target llama-cli llama-server
cp llama.cpp/build/bin/llama-* llama.cpp/
CMake tự động phát hiện AVX2/AVX-512 trên CPU máy chủ của bạn và bật các tối ưu hóa phù hợp. Suy luận trên CPU tuy chậm hơn nhưng đầy đủ chức năng.
Bước 2 — Chọn một file GGUF và tải xuống
Nên chọn lượng tử hóa (quantization) nào?
| Lượng tử hóa | Kích thước tệp (xấp xỉ) | Chất lượng | Tốt nhất cho |
|---|---|---|---|
| Q8_0 | ~1× kích thước Q4 | Gần với FP16 | E2B và E4B khi bạn có dư RAM |
| Q4_K_M | Trung bình | Cân bằng tốt | 26B-A4B và 31B trên VRAM 24 GB |
| UD-Q4_K_XL | Hơi lớn hơn Q4_K_M | Tốt hơn Q4_K_M | 26B-A4B và 31B; lượng tử hóa Dynamic của Unsloth |
| Q2_K | Nhỏ nhất | Giảm chất lượng rõ rệt | Chỉ khi bạn không có lựa chọn nào khác |
Các gợi ý bắt đầu từ Unsloth (đội ngũ duy trì bộ sưu tập GGUF chính):
- E2B / E4B → bắt đầu với Q8_0
- 26B-A4B / 31B → bắt đầu với UD-Q4_K_XL
Tải xuống qua Hugging Face CLI
Cài đặt CLI một lần:
pip install huggingface_hub hf_transfer
Sau đó tải xuống mô hình bạn đã chọn. Ví dụ, bản 26B-A4B ở mức UD-Q4_K_XL:
export LLAMA_CACHE="unsloth/gemma-4-26B-A4B-it-GGUF"
huggingface-cli download unsloth/gemma-4-26B-A4B-it-GGUF \
--local-dir unsloth/gemma-4-26B-A4B-it-GGUF \
--include "*UD-Q4_K_XL*"
Để suy luận đa phương thức (hình ảnh), hãy tải thêm tệp máy chiếu (projector):
huggingface-cli download unsloth/gemma-4-26B-A4B-it-GGUF \
--local-dir unsloth/gemma-4-26B-A4B-it-GGUF \
--include "*mmproj-BF16*" "*UD-Q4_K_XL*"
Tất cả bốn bộ sưu tập GGUF:
unsloth/gemma-4-E2B-it-GGUFunsloth/gemma-4-E4B-it-GGUFunsloth/gemma-4-26B-A4B-it-GGUFunsloth/gemma-4-31B-it-GGUF
Bước 3 — Chạy suy luận văn bản
llama.cpp tự động thiết lập độ dài ngữ cảnh — bạn không cần truyền -c. Hãy sử dụng các tham số bên dưới, khớp với các giá trị mặc định được khuyến nghị chính thức của Google.
Trò chuyện tương tác với llama-cli
E4B (Q8_0):
export LLAMA_CACHE="unsloth/gemma-4-E4B-it-GGUF"
./llama.cpp/llama-cli \
-hf unsloth/gemma-4-E4B-it-GGUF:Q8_0 \
--temp 1.0 \
--top-p 0.95 \
--top-k 64 \
-cnv
26B-A4B (UD-Q4_K_XL):
export LLAMA_CACHE="unsloth/gemma-4-26B-A4B-it-GGUF"
./llama.cpp/llama-cli \
-hf unsloth/gemma-4-26B-A4B-it-GGUF:UD-Q4_K_XL \
--temp 1.0 \
--top-p 0.95 \
--top-k 64 \
-cnv
31B (UD-Q4_K_XL):
export LLAMA_CACHE="unsloth/gemma-4-31B-it-GGUF"
./llama.cpp/llama-cli \
-hf unsloth/gemma-4-31B-it-GGUF:UD-Q4_K_XL \
--temp 1.0 \
--top-p 0.95 \
--top-k 64 \
-cnv
Máy chủ tương thích OpenAI (llama-server)
Khởi động một máy chủ cục bộ trên cổng 8080 mà bất kỳ công cụ nào có client OpenAI đều có thể gọi:
./llama.cpp/llama-server \
-m unsloth/gemma-4-26B-A4B-it-GGUF/gemma-4-26B-A4B-it-UD-Q4_K_XL.gguf \
--temp 1.0 \
--top-p 0.95 \
--top-k 64 \
--port 8080
Sau đó kiểm tra với curl:
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gemma-4",
"messages": [{"role": "user", "content": "Giải thích về Attention trong một đoạn văn."}]
}'
Các tham số suy luận khuyến nghị
| Tham số | Giá trị | Ghi chú |
|---|---|---|
--temp |
1.0 | Mặc định chính thức của Google |
--top-p |
0.95 | Mặc định chính thức của Google |
--top-k |
64 | Mặc định chính thức của Google |
--repeat-penalty |
1.0 (tắt) | Chỉ bật nếu bạn thấy bị lặp văn bản |
| Độ dài ngữ cảnh | Tự động | llama.cpp tự động thiết lập giá trị này |
Giới hạn ngữ cảnh: E2B và E4B hỗ trợ lên đến 128K token. 26B-A4B và 31B hỗ trợ lên đến 256K. Trong thực tế, hãy bắt đầu với 32K để có phản hồi tốt hơn, và chỉ tăng lên nếu trường hợp sử dụng của bạn yêu cầu các tài liệu dài.
Bật chế độ suy nghĩ (thinking mode)
Gemma 4 hỗ trợ chế độ lập luận/suy nghĩ. Để bật nó, hãy thêm <|think|> vào đầu system prompt của bạn. Để tắt nó khi sử dụng server:
./llama.cpp/llama-server \
-m model-cua-ban.gguf \
--chat-template-kwargs '{"enable_thinking":false}'
Trên Windows PowerShell, hãy thoát các dấu ngoặc kép:
--chat-template-kwargs "{\"enable_thinking\":false}"
Bước 4 — Suy luận đa phương thức (hình ảnh)
Gemma 4 hỗ trợ đầu vào hình ảnh trong llama.cpp ngay từ ngày đầu, nhưng nó yêu cầu tệp GGUF thứ hai: máy chiếu đa phương thức (mmproj). Máy chiếu xử lý việc mã hóa hình ảnh trước khi mô hình ngôn ngữ nhìn thấy nó.
Những gì bạn cần
- File GGUF của mô hình ngôn ngữ (giống như suy luận văn bản).
- Tệp
mmproj-BF16.gguftừ cùng một repo Hugging Face.
Bạn đã tải cả hai nếu bạn đã sử dụng cờ --include "*mmproj-BF16*" ở trên.
Chạy với llama-mtmd-cli (CLI)
./llama.cpp/llama-mtmd-cli \
--model unsloth/gemma-4-26B-A4B-it-GGUF/gemma-4-26B-A4B-it-UD-Q4_K_XL.gguf \
--mmproj unsloth/gemma-4-26B-A4B-it-GGUF/mmproj-BF16.gguf \
--temp 1.0 \
--top-p 0.95 \
--top-k 64
Sau đó bạn có thể tham chiếu hình ảnh trong cuộc hội thoại bằng cú pháp [img]duong/dan/den/anh.jpg[/img].
Chạy với llama-server (API)
./llama.cpp/llama-server \
--model unsloth/gemma-4-26B-A4B-it-GGUF/gemma-4-26B-A4B-it-UD-Q4_K_XL.gguf \
--mmproj unsloth/gemma-4-26B-A4B-it-GGUF/mmproj-BF16.gguf \
--temp 1.0 \
--top-p 0.95 \
--top-k 64 \
--port 8080
Ghi chú về âm thanh: E2B và E4B hỗ trợ đầu vào âm thanh nguyên bản, nhưng hỗ trợ âm thanh trong llama.cpp vẫn đang được phát triển tích cực tính đến tháng 4 năm 2026. Suy luận văn bản và hình ảnh hiện đã hoàn toàn ổn định.
Xử lý các vấn đề thường gặp
"offloaded 0 layers" sau khi build
Bản build CUDA không được liên kết đúng cách. Hãy xóa toàn bộ thư mục build và build lại:
rm -rf llama.cpp/build
# Sau đó lặp lại các bước cmake với -DGGML_CUDA=ON
Hết bộ nhớ (OOM) khi tải
Tổng bộ nhớ của bạn thấp hơn kích thước mô hình ngay cả sau khi lượng tử hóa. Các tùy chọn:
- Chuyển sang mức lượng tử hóa nhỏ hơn (Q4_K_M → Q2_K, hoặc UD-Q4_K_XL → Q4_K_M).
- Hạ xuống một biến thể mô hình nhỏ hơn (31B → 26B-A4B, hoặc 26B-A4B → E4B).
- Thêm
--n-gpu-layers Nvới một con số N thấp hơn để offload ít lớp hơn vào VRAM — phần còn lại sẽ sử dụng RAM hệ thống với tốc độ giảm.
GGML_ASSERT hoặc crash với --image-min-tokens
Đừng truyền --image-min-tokens với Gemma 4. Cờ này xung đột với kiến trúc attention không nhân quả (non-causal) của Gemma 4 và gây ra lỗi assertion. Hãy sử dụng ngân sách token hình ảnh mặc định.
Vòng lặp tạo văn bản hoặc lặp lại
Thêm --repeat-penalty 1.05 để phá vỡ vòng lặp lặp lại. Hãy giữ nó ở mức 1.0 (tắt) trong hoạt động bình thường — kiến trúc của Gemma 4 không yêu cầu nó theo mặc định.
Tạo văn bản chậm trên macOS mặc dù có Metal
Hãy xác nhận rằng tệp nhị phân đang sử dụng Metal:
./llama.cpp/llama-cli -m model-cua-ban.gguf -p "hi" -n 1 --verbose
Tìm kiếm Metal trong dòng backend. Nếu bạn chỉ thấy CPU, hãy đặt --n-gpu-layers 99 một cách rõ ràng để ép buộc offload.
Câu hỏi thường gặp (FAQ)
llama.cpp có hỗ trợ Gemma 4 một cách chính thức không?
Có. Hỗ trợ Gemma 4 đã được bao gồm ngay khi ra mắt vào ngày 2 tháng 4 năm 2026, với các đóng góp được theo dõi trong repository llama.cpp. Cả bốn kích thước mô hình đều hoạt động với llama-cli, llama-server, và llama-mtmd-cli.
Tôi có thể chạy Gemma 4 trên Mac mini không? Có. Một chiếc Mac mini M4 với 16 GB bộ nhớ hợp nhất có thể chạy E4B ở mức Q8_0 thoải mái, hoặc 26B-A4B ở mức Q4 với tốc độ chấp nhận được. M4 Pro (24 GB) xử lý được 26B-A4B ở mức Q8_0.
Tôi có cần GPU không? Không. llama.cpp có thể chạy chỉ bằng CPU. Việc offload sang GPU (CUDA hoặc Metal) sẽ cải thiện đáng kể số lượng token mỗi giây, nhưng suy luận trên CPU được hỗ trợ đầy đủ và thực tế cho các mô hình nhỏ như E2B và E4B.
Sự khác biệt giữa Q4_K_M và UD-Q4_K_XL là gì?
Q4_K_M là định dạng lượng tử hóa 4-bit tiêu chuẩn của llama.cpp. UD-Q4_K_XL là định dạng 4-bit Dynamic của Unsloth, áp dụng độ chính xác cao hơn cho các lớp quan trọng nhất và độ chính xác thấp hơn cho các lớp ít quan trọng hơn. Trong thực tế, UD-Q4_K_XL cho chất lượng cao hơn ở cùng kích thước tệp.
Làm cách nào để sử dụng Gemma 4 với các trợ lý lập trình như Cursor hoặc Continue?
Khởi động llama-server trên cổng 8080 (hoặc bất kỳ cổng nào), sau đó trỏ OpenAI base URL của trợ lý của bạn đến http://localhost:8080/v1. Endpoint /v1/chat/completions hoàn toàn tương thích với OpenAI.
Bước tiếp theo
Một khi suy luận văn bản đã ổn định, các bước tiếp theo tự nhiên là:
- Hãy thử 26B-A4B để có một bước nhảy vọt về chất lượng so với E4B mà chỉ yêu cầu tăng phần cứng khiêm tốn.
- Thử nghiệm với đầu vào đa phương thức bằng cách sử dụng
llama-mtmd-clinếu mô hình của bạn là 26B-A4B hoặc nhỏ hơn. - So sánh llama.cpp với Ollama nếu bạn muốn một quy trình làm việc hàng ngày đơn giản hơn và sẵn sàng đánh đổi một chút quyền kiểm soát để lấy sự tiện lợi.
Sai lầm phổ biến nhất là tải xuống mô hình lớn nhất hiện có trước khi xác nhận rằng mô hình nhỏ hơn chạy tốt. Một thiết lập E4B ổn định sẽ hữu ích hơn nhiều so với một thiết lập 31B chạy với tốc độ 1 token mỗi giây.
Các hướng dẫn liên quan
Hướng dẫn liên quan
Tiếp tục khám phá cụm nội dung Gemma 4 với bài hướng dẫn tiếp theo phù hợp với quyết định hiện tại của bạn.

llama.cpp có hỗ trợ Gemma 4 không? Trạng thái GGUF, các bản sửa lỗi và những gì hoạt động
Một câu trả lời thực tế cho câu hỏi liệu llama.cpp có hỗ trợ Gemma 4 hay không, kèm theo các liên kết GGUF chính thức, trạng thái hỗ trợ hiện tại và ý nghĩa thực sự của việc 'được hỗ trợ'.

LM Studio có hỗ trợ Gemma 4 không? Tính tương thích, danh sách mô hình và yêu cầu
Một câu trả lời rõ ràng cho câu hỏi liệu LM Studio có hỗ trợ Gemma 4 hay không, kèm theo danh sách mô hình được hỗ trợ, yêu cầu bộ nhớ tối thiểu và những kỳ vọng thiết lập thực tế.

Hướng dẫn API Gemma 4: Thiết lập cục bộ tương thích OpenAI
Sử dụng hướng dẫn API Gemma 4 này để xây dựng một endpoint cục bộ tương thích OpenAI, kiểm tra nhanh chóng và chọn đúng runtime cho quy trình làm việc của bạn.
Vẫn chưa biết nên đọc gì tiếp theo?
Quay lại trung tâm hướng dẫn để duyệt các bài so sánh model, hướng dẫn cài đặt và trang lập kế hoạch phần cứng.
