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

Cập nhật 4 thg 4, 2026Đọc trong 10 phút
gemma 4llama.cpplocal llmggufhướng dẫn thiết lậplượng tử hóa
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-clillama-server vớ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-GGUF
  • unsloth/gemma-4-E4B-it-GGUF
  • unsloth/gemma-4-26B-A4B-it-GGUF
  • unsloth/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

  1. File GGUF của mô hình ngôn ngữ (giống như suy luận văn bản).
  2. Tệp mmproj-BF16.gguf từ 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:

  1. 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).
  2. Hạ xuống một biến thể mô hình nhỏ hơn (31B → 26B-A4B, hoặc 26B-A4B → E4B).
  3. Thêm --n-gpu-layers N vớ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-cli nế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.

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.