Đã tải một tệp .gguf về máy và đang tự hỏi chạy nó thế nào cho thật? Con đường nhanh nhất: ollama run hf.co/<repo>:Q4_K_M — Ollama kéo thẳng GGUF từ Hugging Face về và phục vụ luôn. GGUF là định dạng mô hình một tệp do llama.cpp giới thiệu và giờ mọi công cụ LLM cục bộ đều hiểu, nên cùng một tệp chạy được trong Ollama, llama.cpp, LM Studio, Jan, và (vài lưu ý) vLLM. Bài hướng dẫn này đi qua từng runner với lệnh dán-chạy-được, cách chọn quant đúng cho VRAM của bạn, và những lỗi load bạn thực sự sẽ gặp.
Tệp GGUF là gì?
GGUF (GGML Universal File) là định dạng container cho các mô hình ngôn ngữ đã được quant hoá. Một tệp chứa đủ weights, tokenizer, và metadata của mô hình — không phải tải thêm gì nữa, không có mớ config lộn xộn. Weights bên trong đã được quant hoá: nén từ số thực 16-bit xuống số nguyên 4-bit (hoặc thấp hơn), vì vậy một mô hình 9B cần ~18 GB ở full precision lại vừa ~5.5 GB ở dạng tệp Q4 và chạy được trên GPU gaming hoặc thậm chí CPU.
Hai thứ quan trọng trong tên một tệp GGUF:
- Mô hình gốc —
gemma-3-4b-it-GGUFlà Gemma 3 4B đã fine-tune, xuất ra GGUF. - Tag quant —
Q4_K_M,Q8_0,IQ4_XSvà các loại khác cho biết weights bị nén mạnh cỡ nào. Chọn thế nào thì xem bên dưới.
Ollama chạy được mô hình GGUF không?
Chạy được — GGUF là định dạng gốc của Ollama, và từ 2024 nó kéo mô hình thẳng từ Hugging Face mà bạn không cần đụng tới tệp nào:
# Kéo một quant GGUF thẳng từ Hugging Face và chat với nó
ollama run hf.co/bartowski/gemma-2-9b-it-GGUF:Q4_K_M
# Tag quant sau dấu hai chấm chọn tệp bên trong repo
ollama run hf.co/ggml-org/gemma-3-4b-it-GGUF:Q8_0 Bạn tự tải sẵn một tệp .gguf rồi? Trỏ một Modelfile vào nó:
# Modelfile — một dòng là đủ
FROM ./gemma-2-9b-it-Q4_K_M.gguf ollama create gemma9b -f Modelfile
ollama run gemma9b Ollama tự quyết định GPU offload và mở một API tương thích OpenAI trên cổng 11434, nên bất cứ thứ gì nói được API đó đều dùng được mô hình. Cái giá phải trả là quyền kiểm soát: bạn không chọn được bao nhiêu layer lên GPU.
Chạy một tệp GGUF trong llama.cpp thế nào?
GGUF sinh ra từ llama.cpp — định dạng này tồn tại vì nó — nên phần hỗ trợ vừa sâu vừa mới nhất. Binary llama-server cho bạn cả chat UI lẫn endpoint tương thích OpenAI:
# Tải thẳng từ Hugging Face (tự chọn GGUF khớp với máy bạn)
llama-server -hf ggml-org/gemma-3-4b-it-GGUF --port 8080
# Hoặc chạy một tệp bạn đã có, với GPU offload toàn phần
llama-server -m ./gemma-2-9b-it-Q4_K_M.gguf -ngl 99 --port 8080 -ngl 99 đẩy 99 layer lên GPU; đặt thấp hơn mức VRAM cho phép thì phần còn lại ở lại CPU. Cái núm offload từng phần đó là thế mạnh của llama.cpp — mô hình 9B chạy ổn trên card 6 GB với 20/48 layer được offload, chỉ là chậm hơn. Cần prompt một lần thay vì chạy server, đổi llama-server thành llama-cli với cùng cờ -m.
LM Studio là cùng một engine đằng sau một GUI desktop: thả tệp .gguf vào thư mục models của nó (hoặc tìm ngay trong app trên Hugging Face) rồi bấm load. Còn chuyện chọn công cụ, bài so sánh Ollama vs LM Studio nói rõ nên đặt cái nào dưới các mô hình của bạn.
Nên tải mức quant GGUF nào?
Câu trả lời mặc định: Q4_K_M. Đây là điểm ngọt của cộng đồng — chênh một hai phần trăm so với chất lượng full precision nhưng chỉ cỡ một phần tư kích thước. Thang bậc, từ lớn xuống nhỏ:
- Q8_0 — gần như không mất mát; dùng nếu VRAM của bạn gánh nổi 8.5 bit mỗi weight mà không trở mặt.
- Q6_K / Q5_K_M — nhỏ hơn một bậc, vẫn xuất sắc cho mô hình 30B+.
- Q4_K_M — mặc định. Với mô hình 7–14B, chất lượng trên mỗi GB đạt đỉnh ở đây.
- IQ4_XS / Q3_K_M — để nhồi mô hình lớn vào card nhỏ; tổn thất chất lượng bắt đầu thấy rõ.
- Q2_K trở xuống — biện pháp cuối; mô hình bắt đầu nói lẫn lộn thành vô nghĩa giữa câu.
Kinh nghiệm ước lượng để vừa: kích thước tệp tính bằng GB cộng ~1–2 GB overhead context phải nằm gọn trong VRAM của bạn. Một Q4_K_M 4.7 GB của mô hình 9B chạy thoải mái trên card 8 GB. Hãy ưu tiên mô hình nhỏ hơn ở quant cao hơn thay vì mô hình to hơn ở quant tệ — Q8 4B thường thắng Q2 9B.
GGUF vs Safetensors: bạn cần định dạng nào?
Safetensors là định dạng lưu trữ chưa quant hoá — weights full precision dành cho training, fine-tuning, và các công cụ như transformers hay ComfyUI. GGUF là định dạng đã quant hoá, chạy được dành cho inference trên phần cứng của bạn. Bạn không fine-tune được một GGUF, và không chạy được tệp safetensors trong Ollama hay llama.cpp nếu không chuyển đổi trước (việc đó thuộc về script convert_hf_to_gguf.py trong llama.cpp). Quy tắc: training hay pipeline ảnh → safetensors; chat và serving cục bộ → GGUF. Nếu tìm kiếm của bạn bắt đầu bằng “gguf vs safetensors”, thì đúng sự phân chia đó là toàn bộ câu trả lời.
Nên dùng runner GGUF nào?
| Runner | Phù hợp nhất với | Cài đặt | GPU offload | API tương thích OpenAI |
|---|---|---|---|---|
| Ollama | Dịch vụ cài xong quên | Một dòng curl | Tự động | Có (:11434/v1) |
| llama.cpp | Kiểm soát tối đa, tính năng mới nhất | Build hoặc package manager | Núm -ngl thủ công | Có (llama-server) |
| LM Studio | GUI desktop, duyệt mô hình | Tải app | Tự động | Có (local server) |
| vLLM | Serving nhiều người dùng theo batch | pip install vllm | Tự động | Có (nguyên bản) |
Chọn Ollama nếu bạn muốn nó chạy ngay khi boot và nằm ngoài tầm mắt — đó là thứ tôi dùng trên homelab của mình để phục vụ mô hình cho mọi thứ trong mạng. Chọn llama.cpp khi bạn cần một tính năng ngay ngày nó ra mắt (kiến trúc mới cập bến đó trước) hoặc muốn kiểm soát bộ nhớ tới từng layer. Chọn LM Studio nếu muốn GUI. Chọn vLLM chỉ khi một mô hình phải phục vụ nhiều người dùng đồng thời — hỗ trợ GGUF của nó chạy được nhưng là hạng nhì so với các định dạng gốc.
Vì sao mô hình GGUF của tôi không load được?
Bốn lỗi phủ hết đa số trường hợp:
unknown model architecture— GGUF dùng một kiến trúc mà runtime của bạn ra đời trước nó (mô hình MoE và vision mới cập liên tục). Cập nhật Ollama hoặc build lại llama.cpp; không có cách chữa nào khác.- Hết bộ nhớ khi load — quant to quá so với VRAM cộng context của bạn. Hạ một bậc (
Q4_K_M→Q3_K_M), giảm-ngl, hoặc thu nhỏ context bằng-c 4096. - Tải bị cụt / hỏng — load GGUF thất bại với lỗi magic-number hoặc metadata. Tải lại và đối chiếu SHA256 hiển thị trên trang Hugging Face.
ollama run ./model.gguftừ chối — đúng như dự kiến:runcủa Ollama nhận tên mô hình, không nhận đường dẫn tệp. Dùng đường Modelfile như đã nói ở trên.
Một góc cuối cùng đáng biết: endpoint GGUF cục bộ kết hợp tốt với các công cụ coding agentic — trỏ một client tương thích OpenAI vào đó và mỗi lần sinh chữ chỉ tốn tiền điện. LLM cục bộ tốt nhất để code đã thử xem mô hình nào xứng đáng chiếm chỗ đó một khi phần đường ống trong bài này chạy ổn.
— mrsaynothing
— mrsaynothing
Ghi chú thực địa về AI, Linux và self-hosting.
Thảo luận bài này trên dev.to dev.to ↗
Nhận how-to tiếp theo qua email
Một email mỗi bài viết. Sửa xong rồi đi tiếp.
cái này là gì?Git Sync Fork With Upstream: 3 cách an toàn
Thích kiểu viết này? Tôi build như vậy để kiếm sống. thuê tôi