llama.cpp murni jika Anda menginginkan token/detik maksimal dan kendali penuh; Ollama jika Anda ingin instalasi satu perintah dan API server yang langsung berfungsi begitu dipasang. Ollama bukan mesin pesaing — ia adalah layanan Go yang membundel llama.cpp sebagai backend inferensinya, menambahkan manajemen model (ollama pull llama3.1), dan menyajikan REST API di port 11434. Jadi pertanyaan yang sebenarnya bukan “mesin mana yang lebih cepat”, melainkan “seberapa besar kendali yang Anda inginkan atas kenop mesin itu”. Karena Ollama mengirim default yang konservatif (kuantisasi Q4_K_M, konteks terbatas, dan hingga baru-baru ini tanpa flash attention), perangkat keras yang identik bisa menghasilkan angka yang berbeda secara terlihat. Di bawah: apa yang benar-benar berbeda, dari mana selisih kecepatan berasal, model yang sama berjalan di keduanya, dan tabel keputusan.
Apa perbedaan antara llama.cpp dan Ollama?
llama.cpp adalah mesin inferensinya: satu proyek C/C++ dari Georgi Gerganov, pencipta GGUF, yang menjalankan model terkuantisasi di CPU, GPU, atau campuran keduanya. Ia memberi Anda llama-cli untuk prompt sekali jalan dan llama-server — HTTP server yang kompatibel OpenAI — ditambah semua flag penyetelan yang didukung mesin: offload layer ke GPU, kuantisasi KV-cache, speculative decoding, sampler kustom.
Ollama adalah produk yang dilapiskan di atas mesin itu. Ia me-fork dan memvendorkan llama.cpp, lalu membungkusnya dengan:
- registry model (
ollama pull,ollama list) dengan pemecahan bobot GGUF otomatis, - sistem Modelfile (spesifikasi ala Dockerfile untuk template prompt dan parameter),
- daemon latar belakang yang menjaga model tetap hangat di VRAM dan menyediakan REST API-nya sendiri,
- deteksi perangkat keras otomatis dengan default yang aman.
Konsekuensi praktisnya: dengan Ollama Anda mengelola model; dengan llama.cpp Anda mengelola inferensi. Jika Anda pernah ingin mengubah format kuantisasi, mengkuantisasi KV cache, menaikkan konteks melewati default, atau mematok layer tertentu ke GPU, itu adalah wilayah llama.cpp. Ollama menyembunyikan sebagian besar kenop itu — memang disengaja.
| llama.cpp | Ollama | |
|---|---|---|
| Apa itu | Mesin inferensi (C/C++) | Layanan yang membungkus llama.cpp |
| Instalasi | Build dari source atau paket | Penginstal satu baris, satu biner |
| Menjalankan model | llama-cli -m model.gguf + flag | ollama run llama3.1 |
| API | Kompatibel OpenAI (llama-server) | REST sendiri + endpoint kompatibel OpenAI |
| Manajemen model | Anda mengunduh file GGUF sendiri | Registry: pull/list/rm |
| Default | Anda memilih semuanya | Aman: Q4_K_M, konteks terbatas |
| Pembaruan mesin | Hari pertama (upstream) | Tertinggal dari rilis upstream |
| Kedalaman penyetelan | Penuh (kuantisasi KV, spec decode, sampler) | Terbatas (passthrough) |
| Paling cocok untuk | Kerja performa, server, perangkat edge | Memulai, laptop developer |
Apakah llama.cpp lebih cepat daripada Ollama?
Pada file GGUF yang sama, kuantisasi yang sama, konteks yang sama, dan versi llama.cpp yang sama — tidak, keduanya berada dalam jangkauan noise satu sama lain, karena Ollama adalah llama.cpp yang melakukan perhitungannya. Setiap benchmark “Ollama 30% lebih lambat” yang Anda lihat sebenarnya adalah perbandingan default. Selisih itu berasal dari tiga tempat:
- Pilihan kuantisasi. Registry Ollama memakai default Q4_K_M. Jalankan model yang sama sebagai Q5_K_M atau Q6_K dari llama.cpp dan Anda mendapatkan kualitas per token yang lebih baik pada kecepatan serupa — atau pilih Q4_0/IQ4 demi kecepatan mentah.
- Flash attention dan kuantisasi KV-cache.
--flash-attnplus-ctk q8_0 -ctv q8_0mengecilkan KV cache secara dramatis, yang menaikkan token/detik pada konteks panjang dan membuat konteks lebih besar muat di VRAM yang sama. Ollama hanya membuka sebagian dari ini. - Keterlambatan versi. llama.cpp mendaratkan optimisasi kernel setiap minggu; Ollama me-merge upstream dengan jadwalnya sendiri. Build llama.cpp yang segar bisa terukur lebih cepat daripada biner Ollama berumur berbulan-bulan di mesin yang sama — sampai Ollama mengejarnya.
Perintah benchmark cepat yang agnostik terhadap mesin — ia melaporkan kecepatan evaluasi prompt dan generasi:
./build/bin/llama-bench -m Llama-3.1-8B-Instruct-Q4_K_M.gguf -ngl 99 -fa 1 Jalankan terhadap file model milik Ollama sendiri (~/.ollama/models/blobs/..., di-rename menjadi .gguf) dan Anda biasanya akan mencocokkan angka Ollama secara persis — lalu mengunggulinya dengan menambahkan -ctk q8_0 pada konteks 16k.
Bagaimana menjalankan model yang sama di keduanya?
Keduanya mengonsumsi GGUF. Versi minimal dari ujung ke ujung untuk masing-masing:
# --- Jalur Ollama: install, pull, serve ---
curl -fsSL https://ollama.com/install.sh | sh
ollama run llama3.1:8b # mengunduh Q4_K_M, memuat ke VRAM, membuka chat
# API-nya, dengan gaya kompatibel OpenAI:
curl -s http://localhost:11434/v1/chat/completions -d '{
"model": "llama3.1:8b",
"messages": [{"role": "user", "content": "Say hi in 5 words"}]
}' # --- Jalur llama.cpp: build, unduh GGUF, serve ---
git clone https://github.com/ggml-org/llama.cpp && cd llama.cpp
cmake -B build -DGGML_CUDA=ON # atau -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 menyajikan skema OpenAI Chat Completions, jadi curl yang sama ke http://localhost:8080/v1/chat/completions bekerja tanpa perubahan. Alat apa pun yang dibangun untuk API OpenAI — skrip, editor, pipeline RAG — bisa diarahkan ke salah satunya. Flag-flag itulah yang melakukan kerja sebenarnya: -ngl 99 meng-offload semua layer ke GPU, --flash-attn plus pasangan -ctk/-ctv menjaga konteks 16k tetap berada di dalam kartu 8 GB yang akan ditolak oleh default Ollama.
Untuk memilih file GGUF-nya sendiri dan arti label-label quant, lihat cara menjalankan model GGUF secara lokal.
Kapan Ollama lebih masuk akal?
Kebanyakan orang sebaiknya memulai dengan Ollama, dan itu bukan hadiah penghiburan:
- Anda ingin semuanya berjalan malam ini. Satu perintah, model terunduh, API menyala. llama.cpp berarti memilih backend (CUDA/Vulkan/HIP/Metal), membangun, dan mengunduh bobot dengan tangan.
- Anda menangani banyak model sekaligus. Registry, unload otomatis, dan Modelfile mengalahkan pengelolaan manual direktori penuh file GGUF.
- Mesin Anda sederhana. Default Ollama konservatif dengan alasan — mereka hampir selalu muat dan berjalan.
- Anda ingin permukaan API yang stabil. Daemon Ollama mengelola siklus hidup model sehingga layanan yang berjalan lama tidak perlu melakukannya.
Pilih llama.cpp murni saat Anda sedang benchmark, menyajikan model dalam skala berapa pun, berjalan di ponsel atau Raspberry Pi, butuh konteks panjang di VRAM kecil, atau menginginkan fitur di hari yang sama ia di-merge upstream. Power user sering menjalankan keduanya: Ollama untuk model andalan harian, satu build llama.cpp yang dipatok versinya untuk satu beban kerja yang membutuhkan 20% terakhir.
Jika perbandingan Anda sebenarnya antara aplikasi GUI desktop, itu sumbu yang berbeda — lihat Ollama vs LM Studio — dan untuk pilihan mesin per tugas, local LLM terbaik untuk coding membahas sisi modelnya.
Jadi, mana yang sebaiknya Anda pakai?
Putuskan berdasarkan kendali, bukan kecepatan. Mesinnya sama; default-nya tidak. Instal Ollama jika tujuannya “berjalan dan menyajikan API” — Anda hanya kehilangan beberapa kenop yang memang tidak akan Anda putar. Bangun llama.cpp jika tujuannya token/detik, panjang konteks, atau kendali kuantisasi — Anda mendapatkan semua kenop, dengan biaya mengelola model sendiri. Bagaimanapun, Anda menjalankan file GGUF yang sama, dan berpindah nanti biayanya satu sore, bukan satu penulisan ulang.
— mrsaynothing
Get the next one by email
One email per post. No spam, no algorithms.
what is this?Git Remove Untracked Files: Panduan Aman git clean
Suka tulisannya? Saya membangun seperti ini untuk hidup. pekerjakan saya