llama.cpp thuần nếu bạn muốn tối đa tokens/second và toàn quyền kiểm soát; Ollama nếu bạn muốn cài bằng một lệnh và một API server chạy được ngay. Ollama không phải một engine đối thủ — nó là một service viết bằng Go đóng gói llama.cpp làm backend inference, thêm phần quản lý model (ollama pull llama3.1), và phục vụ REST API trên port 11434. Vậy câu hỏi thật sự không phải “engine nào nhanh hơn” mà là “bạn muốn kiểm soát các núm vặn của engine đó ở mức nào”. Vì Ollama đóng sẵn những default thận trọng (quantization Q4_K_M, context khiêm tốn, không flash attention cho tới gần đây), cùng một phần cứng có thể cho ra những con số chênh nhau thấy rõ. Bên dưới: điểm khác thật sự, khoảng cách tốc độ đến từ đâu, cùng một model chạy trên cả hai, và một bảng quyết định.
llama.cpp và Ollama khác nhau ở điểm nào?
llama.cpp là inference engine: một dự án C/C++ duy nhất của Georgi Gerganov — tác giả GGUF — chạy model đã quantize trên CPU, GPU, hoặc kết hợp cả hai. Nó cho bạn llama-cli để chạy prompt kiểu one-shot và llama-server — một HTTP server tương thích OpenAI — cùng mọi cờ tinh chỉnh mà engine hỗ trợ: offload layer lên GPU, quantization KV-cache, speculative decoding, sampler tùy chỉnh.
Ollama là một sản phẩm dựng lên trên engine đó. Nó fork và vendor llama.cpp, rồi bọc lại bằng:
- một model registry (
ollama pull,ollama list) với việc tách trọng số GGUF tự động, - hệ thống Modelfile (một đặc tả kiểu Dockerfile cho prompt template và tham số),
- một daemon nền giữ model nóng trong VRAM và mở REST API riêng,
- tự dò phần cứng với default an toàn.
Hệ quả thực tế: với Ollama bạn quản lý model; với llama.cpp bạn quản lý inference. Nếu từng muốn đổi định dạng quantization, quantize KV cache, nâng context vượt mức default, hay ghim các layer cụ thể lên GPU — đó là sân của llama.cpp. Ollama che phần lớn các núm đó — cố ý.
| llama.cpp | Ollama | |
|---|---|---|
| Đây là gì | Inference engine (C/C++) | Service bọc llama.cpp |
| Cài đặt | Build từ source hoặc qua package | Trình cài một dòng, một binary |
| Chạy một model | llama-cli -m model.gguf + cờ | ollama run llama3.1 |
| API | Tương thích OpenAI (llama-server) | REST riêng + endpoint tương thích OpenAI |
| Quản lý model | Bạn tự tải file GGUF | Registry: pull/list/rm |
| Default | Bạn chọn tất cả | An toàn: Q4_K_M, context khiêm tốn |
| Cập nhật engine | Ngay ngày đầu (upstream) | Chậm hơn bản phát hành upstream |
| Độ sâu tinh chỉnh | Đầy đủ (KV quant, spec decode, sampler) | Passthrough có hạn |
| Hợp nhất với | Tối ưu hiệu năng, server, thiết bị edge | Người mới bắt đầu, laptop dev |
llama.cpp có nhanh hơn Ollama không?
Trên cùng một file GGUF, cùng quantization, cùng context, cùng phiên bản llama.cpp — không, chúng hơn nhau trong khoảng nhiễu, vì Ollama chính là llama.cpp đang tính toán. Mọi benchmark “Ollama chậm hơn 30%” bạn thấy thực chất là so sánh default. Khoảng cách đến từ ba chỗ:
- Lựa chọn quantization. Registry của Ollama mặc định Q4_K_M. Chạy cùng model đó ở Q5_K_M hoặc Q6_K bằng llama.cpp và bạn nhận chất lượng tốt hơn mỗi token với tốc độ tương đương — hoặc chọn Q4_0/IQ4 cho tốc độ thô.
- Flash attention và quantization KV-cache.
--flash-attncộng với-ctk q8_0 -ctv q8_0thu nhỏ KV cache đáng kể, giúp tăng tokens/second ở context dài và nhét được context lớn hơn vào cùng lượng VRAM. Ollama chỉ mở một phần trong số này. - Chậm phiên bản. llama.cpp nhận tối ưu kernel mỗi tuần; Ollama merge upstream theo lịch riêng. Một bản build llama.cpp mới có thể nhanh hơn hẳn binary Ollama vài tháng tuổi trên cùng một máy — cho tới khi Ollama bắt kịp.
Một lệnh benchmark nhanh, không lệch engine nào — nó báo tốc độ đánh giá prompt và tốc độ sinh:
./build/bin/llama-bench -m Llama-3.1-8B-Instruct-Q4_K_M.gguf -ngl 99 -fa 1 Chạy nó trên chính file model của Ollama (~/.ollama/models/blobs/..., đổi tên thành .gguf) và bạn thường khớp đúng số của Ollama — rồi vượt lên bằng cách thêm -ctk q8_0 ở context 16k.
Làm sao chạy cùng một model trên cả hai?
Cả hai đều ăn GGUF. Con đường tối thiểu từ đầu tới cuối cho mỗi bên:
# --- Đường Ollama: cài đặt, pull, phục vụ ---
curl -fsSL https://ollama.com/install.sh | sh
ollama run llama3.1:8b # tải Q4_K_M, nạp vào VRAM, mở một phiên chat
# API của nó, theo kiểu tương thích OpenAI:
curl -s http://localhost:11434/v1/chat/completions -d '{
"model": "llama3.1:8b",
"messages": [{"role": "user", "content": "Say hi in 5 words"}]
}' # --- Đường llama.cpp: build, tải GGUF, phục vụ ---
git clone https://github.com/ggml-org/llama.cpp && cd llama.cpp
cmake -B build -DGGML_CUDA=ON # hoặc -DGGML_VULKAN=ON / -DGGML_HIP=ON
cmake --build build --config Release -j
huggingface-cli download bartowski/Meta-Llama-3.1-8B-Instruct-GGUF
Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf --local-dir models
./build/bin/llama-server -m models/Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf
-ngl 99 --ctx-size 16384 --flash-attn -ctk q8_0 -ctv q8_0 --port 8080 llama-server mở schema OpenAI Chat Completions, nên cùng lệnh curl trỏ vào http://localhost:8080/v1/chat/completions chạy không cần sửa. Mọi tool xây cho OpenAI API — script, editor, pipeline RAG — trỏ vào bên nào cũng được. Các cờ mới là thứ làm việc thật: -ngl 99 đẩy mọi layer lên GPU, --flash-attn cùng cặp -ctk/-ctv giữ context 16k trong một card 8 GB mà default của Ollama sẽ từ chối.
Để chọn đúng file GGUF và hiểu các nhãn quant nghĩa là gì, xem cách chạy model GGUF local.
Khi nào Ollama là lựa chọn hợp lý hơn?
Đa số người nên bắt đầu với Ollama, và đó không phải giải an ủi:
- Bạn cần nó chạy được tối nay. Một lệnh, model được pull, API lên. llama.cpp nghĩa là chọn backend (CUDA/Vulkan/HIP/Metal), build, và tự tay tải trọng số.
- Bạn xoay sở nhiều model cùng lúc. Registry, tự động dọn model, và Modelfile thắng việc tự quản thư mục file GGUF.
- Máy bạn khiêm tốn. Default của Ollama thận trọng là có lý — chúng gần như luôn vừa và chạy được.
- Bạn cần bề mặt API ổn định. Daemon của Ollama lo vòng đời model thay cho service chạy dài hạn của bạn.
Chọn llama.cpp thuần khi bạn đang benchmark, phục vụ ở bất kỳ quy mô nào, chạy trên điện thoại hay Raspberry Pi, cần context dài trên VRAM bé, hoặc muốn một tính năng ngay ngày nó merge upstream. Power user thường chạy cả hai: Ollama cho các model dùng hằng ngày, một bản llama.cpp ghim phiên bản cho đúng workload cần nốt 20% cuối.
Nếu so sánh của bạn thực ra là giữa các app GUI desktop, đó là trục khác — xem Ollama vs LM Studio — còn việc chọn model theo từng task, LLM local tốt nhất để code bàn phần model.
Bạn nên dùng cái nào?
Quyết theo mức kiểm soát, không phải tốc độ. Engine thì như nhau; default thì không. Cài Ollama nếu mục tiêu là “chạy và phục vụ API” — bạn mất vài núm vốn chẳng định vặn. Build llama.cpp nếu mục tiêu là tokens/second, độ dài context, hay quyền kiểm soát quantization — bạn có mọi núm, đổi lại phải tự quản model. Dù bên nào bạn vẫn chạy cùng những file GGUF đó, và đổi sau này tốn một buổi chiều, không phải viết lại.
— 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 Remove Untracked Files: Hướng dẫn git clean an toàn
Thích kiểu viết này? Tôi build như vậy để kiếm sống. thuê tôi