Ollama vs llama.cpp: Mana yang Cocok untuk VPS?
Pahami perbedaan Ollama dan llama.cpp di VPS CPU-only, dampak pilihan kuantisasi terhadap RAM, serta kapan keduanya tidak cocok untuk server kecil.
Ollama vs llama.cpp: lapisan mana yang ingin Anda jalankan?
Ollama dan llama.cpp bukan kompetitor seperti yang tersirat dalam pertanyaan tersebut. llama.cpp adalah inference engine: komponen ini memuat file model dan mengubah prompt menjadi token. Ollama adalah model manager, background daemon, dan HTTP API yang berjalan di atas inference engine tersebut. README Ollama masih mencantumkan llama.cpp sebagai inference backend (diperiksa pada 2 August 2026). Jadi, pertanyaan sebenarnya adalah lapisan mana yang ingin Anda operasikan pada VPS, bukan mana yang lebih cepat.
Gunakan Ollama jika Anda menginginkan service yang mengambil model berdasarkan nama dan terus berjalan tanpa memerlukan perhatian. Jalankan llama.cpp secara langsung jika VPS Anda berukuran kecil dan Anda perlu memilih file model, ukuran context, serta jumlah thread secara tepat, karena pada VPS kecil setiap pengaturan tersebut menggunakan memory yang tidak Anda miliki.
Apa sebenarnya setiap proyek itu
llama.cpp adalah implementasi inferensi transformer dalam C dan C++ yang dibangun di atas pustaka ggml. Program ini membaca file GGUF. GGUF (GGML universal file format) adalah container satu file yang berisi weight, tokenizer, dan metadata yang diperlukan engine untuk menjalankan model. Proyek ini menyediakan binary terpisah untuk tugas yang berbeda. llama-server adalah server HTTP, llama-cli adalah prompt interaktif, dan llama-bench mengukur throughput. Release ditandai berdasarkan nomor build, bukan versi semantik. Tag saat ini adalah b10224, yang dipublikasikan pada 2 August 2026, dan tag baru dirilis hampir setiap hari kerja.
Ollama adalah program Go. Daemon latar belakang, yang dijalankan dengan ollama serve, memuat model dan merespons request HTTP, sedangkan client command line berkomunikasi dengan daemon tersebut. Di balik keduanya terdapat registry di ollama.com yang menyimpan model siap pakai. Ollama menggunakan versi semantik, dan v0.32.5 dirilis pada 27 July 2026. ollama pull mengunduh GGUF beserta template prompt dan sekumpulan parameter default, lalu menyimpannya di /usr/share/ollama/.ollama/models pada Linux. File tersebut berada di root disk dan masing-masing dapat berukuran beberapa gigabyte. Karena itu, pada VPS dengan root volume 25 GB, sebaiknya pahami apa yang ditinggalkan oleh pull dan cara memindahkan direktori model ke lokasi lain sebelum unduhan ketiga memenuhi kapasitasnya.
Itulah seluruh perbedaannya. Ollama menentukan quantisation, template, dan panjang context untuk Anda, serta memberi Anda satu nama untuk diingat. llama.cpp tidak menentukan apa pun dan memberi Anda flags.
Sumbu 1: pengendalian model dan kuantisasi
Kuantisasi mengecilkan setiap bobot dari 16 atau 32 bit menjadi 4, 5, atau 8 bit. Inilah yang membuat model dengan 8 miliar parameter dapat dimuat dalam RAM VPS biasa. Penamaan GGUF mudah dipahami setelah Anda mengetahui polanya: Q4_K_M berarti kuantisasi K 4 bit dengan ukuran sedang. Angka yang lebih tinggi mempertahankan presisi lebih besar dan memerlukan lebih banyak memori.
The data behind this chart
[
{
"label": "Q2_K",
"file_size_gib": 2.96
},
{
"label": "Q3_K_M",
"file_size_gib": 3.74
},
{
"label": "Q4_K_M",
"file_size_gib": 4.58
},
{
"label": "Q5_K_M",
"file_size_gib": 5.34
},
{
"label": "Q6_K",
"file_size_gib": 6.14
},
{
"label": "Q8_0",
"file_size_gib": 7.95
}
]Itulah ukuran file yang dipublikasikan dalam repositori bartowski/Meta-Llama-3.1-8B-Instruct-GGUF di Hugging Face, dibaca pada 2 August 2026 dan dikonversi dari byte menjadi GiB. Terdapat 6 build dari satu model, dengan ukuran terkecil 2.96 GiB dan ukuran terbesar 7.95 GiB. Default yang umum, Q4_K_M, berukuran 4.58 GiB. Pada VPS 4 GiB, pilihan tersebut menentukan apakah model dapat dimuat sama sekali. Ukuran hanya setengah dari pertimbangan tersebut, karena varian yang dapat Anda gunakan belum tentu layak dipakai. Penjelasan tentang biaya nyata Q4, Q8, dan fp16 terhadap kualitas jawaban menentukan apakah gigabita tambahan memberikan perbedaan yang dapat Anda lihat.
Dengan llama.cpp, Anda menentukan nama file, sehingga Anda memilih varian tersebut sendiri.
llama-server -m ~/models/Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf \
-c 4096 -t 4 --host 127.0.0.1 --port 8080-c adalah ukuran konteks dalam token, -t adalah jumlah thread, dan -ngl menentukan jumlah layer yang dipindahkan ke GPU (0 pada server yang hanya menggunakan CPU). Tidak ada pengaturan yang ditebak untuk Anda.
Dengan Ollama, kuantisasi ditentukan oleh tag yang Anda pull, dan ollama ls menampilkan apa yang sebenarnya tersimpan di disk. Jika registry tidak menyediakan build yang Anda inginkan, impor GGUF sendiri. Tulis Modelfile:
FROM ./Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf
PARAMETER num_ctx 4096Kemudian build dan periksa hasilnya:
ollama create llama31-q4 -f ./Modelfile
ollama lsPanjang konteks adalah pengaturan yang sering menimbulkan masalah. Ollama memilih nilai default berdasarkan VRAM yang tersedia, dan server tanpa GPU masuk ke kategori terkecil: 4096 token. Jika Anda mengirim dokumen sepanjang 20,000 token, token tambahan akan dibuang sebelum model melihatnya. Akibatnya, jawaban dapat terdengar meyakinkan tetapi salah karena model hanya membaca sebagian dokumen. Tingkatkan nilainya dengan OLLAMA_CONTEXT_LENGTH pada daemon, atau dengan PARAMETER num_ctx dalam Modelfile. Jika hanya satu pekerjaan yang memerlukan jendela konteks lebih besar, num_ctx dapat ditetapkan per permintaan, bukan untuk seluruh server, sehingga cache tambahan tidak digunakan oleh semua pekerjaan lain yang dijalankan daemon. llama.cpp juga tidak memiliki nilai default yang layak dipercaya. Tetapkan -c secara eksplisit dan pastikan nilai yang digunakan sesuai kebutuhan.
Aritmetika memori yang jarang ditampilkan
File model bukan satu-satunya komponen biaya memori. KV cache (key/value cache) menyimpan satu entri untuk setiap layer pada setiap token konteks, dan ukurannya bertambah seiring percakapan.
Hitung untuk Llama 3.1 8B. Model ini memiliki 32 layer, 8 key/value head, dan dimensi head 128. Setiap token menyimpan key dan value, masing-masing berukuran 2 byte dalam f16, sehingga 2 x 8 x 128 x 2 = 4096 byte per layer. Untuk 32 layer, ukurannya menjadi 128 KiB per token. Konteks 4096 token memerlukan 512 MiB, sedangkan konteks 32,768 token memerlukan 4 GiB.
Jadi, model Q4_K_M 8B dengan konteks 4k memerlukan sekitar 4.58 GiB untuk bobot, ditambah sekitar 0.5 GiB untuk cache dan memori runtime. Model tersebut tidak muat dalam RAM 4 GiB. Model tersebut muat dalam RAM 8 GiB dengan ruang yang cukup untuk bekerja. Jika konteks dinaikkan menjadi 32k pada server 8 GiB yang sama, cache saja akan menghabiskan ruang tersisa. Pantau penggunaan memori secara langsung dengan free -h saat model dimuat, dan jangan mempercayai estimasi yang belum diukur. Jika Anda merencanakan penggunaan model yang jauh lebih besar dari 8B, perhitungan yang sama untuk model 27B pada VPS yang hanya menggunakan CPU menunjukkan kapasitas sebenarnya pada setiap tingkat dari 8 hingga 64 GB.
Ollama memperbesar kebutuhan ini. OLLAMA_NUM_PARALLEL memiliki nilai default 1, dan kebutuhan memori model bertambah sesuai nilai tersebut dikalikan panjang konteks. Jika keduanya dinaikkan sekaligus, daemon dapat meminta RAM beberapa kali lebih besar dari perkiraan Anda tanpa memberikan indikasi yang jelas. Perhitungan yang sama menentukan batas jumlah pengguna secara bersamaan, karena setiap permintaan konkuren memerlukan bagian KV cache sendiri. Inilah alasan server yang berjalan lancar untuk satu orang dapat macet saat melayani lima orang.
Sumbu 2: daemon yang harus Anda operasikan
Skrip instalasi Ollama menulis unit systemd, membuat pengguna sistem ollama, dan mengaktifkan service. Anda mendapatkan manajemen siklus hidup tanpa harus menulis semua itu sendiri. Konfigurasi dilakukan melalui systemd:
sudo systemctl edit ollama[Service]
Environment="OLLAMA_CONTEXT_LENGTH=8192"
Environment="OLLAMA_KEEP_ALIVE=30m"sudo systemctl daemon-reload
sudo systemctl restart ollama
journalctl -e -u ollamaOLLAMA_KEEP_ALIVE lebih penting pada VPS berbasis CPU dibandingkan di tempat lain. Secara default, model disimpan dalam memori selama 5 menit, lalu dibongkar. Permintaan berikutnya harus membaca seluruh file kembali dari disk sebelum dapat memberikan respons. Karena itu, pemuatan ulang berukuran 4.58 GiB dapat mengubah waktu respons dari dua detik menjadi tiga puluh detik pada penyimpanan yang lambat. Nilai keep-alive yang panjang mengatasi latensi tersebut, tetapi terus menggunakan RAM. Keduanya menimbulkan biaya nyata. Pilih opsi yang dampaknya lebih kecil. Jika model harus tetap berada di memori, mengatur keep_alive agar model tetap aktif selama periode idle dan setelah reboot hanya memerlukan beberapa baris konfigurasi. Dengan begitu, Anda tidak perlu memanaskan model secara manual setiap kali server dimulai ulang.
llama.cpp tidak menyediakan daemon, jadi Anda harus menulis unit sendiri sebagai /etc/systemd/system/llama-server.service:
[Unit]
Description=llama.cpp server
After=network-online.target
[Service]
ExecStart=/usr/local/bin/llama-server -m /srv/models/model-Q4_K_M.gguf -c 4096 -t 4 --host 127.0.0.1 --port 8080
Restart=always
RestartSec=3
User=llama
[Install]
WantedBy=multi-user.targetAktifkan unit tersebut dengan sudo systemctl enable --now llama-server. Setelah itu, proses mempertahankan model selama seluruh masa hidupnya. Model tidak akan dibongkar saat idle. Dengan demikian, tidak ada kejutan akibat pemuatan ulang, tetapi memori tidak dapat dikosongkan tanpa menghentikan service. Jika Anda belum terbiasa menulis unit, polanya sama seperti menjalankan service sendiri dengan systemd pada VPS.
Sumbu 3: API yang akan digunakan aplikasi Anda
Sumbu ini kini jauh lebih sempit. Kedua proyek sekarang mendukung format chat OpenAI, sehingga sebagian besar pustaka klien dapat digunakan dengan salah satunya hanya dengan mengubah base URL.
Ollama mendengarkan pada 127.0.0.1:11434. Rute yang kompatibel dengan OpenAI adalah http://localhost:11434/v1/chat/completions, dan Ollama juga menyediakan API native pada /api/chat. Rute yang kompatibel dengan Anthropic juga didokumentasikan.
curl -X POST http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model": "llama31-q4", "messages": [{"role": "user", "content": "Say this is a test"}]}'llama-server mendengarkan pada 127.0.0.1:8080 dan menyediakan /v1/chat/completions, /v1/completions, serta /v1/embeddings, ditambah endpoint /completion miliknya sendiri dan web UI bawaan. llama-server juga menyediakan rute operasional yang tidak tersedia pada Ollama: /health untuk readiness probe, /props untuk pengaturan model yang dimuat, /slots untuk menunjukkan aktivitas setiap slot permintaan, dan /metrics dalam format Prometheus. Jika Anda berencana memantau service ini, perbedaan tersebut kemungkinan besar menjadi faktor penentu.
Tidak satu pun server mengaktifkan autentikasi secara otomatis. Keduanya secara default hanya mendengarkan pada loopback, dan itu dilakukan dengan alasan yang tepat. Akses keduanya melalui SSH tunnel atau dari balik reverse proxy. Jangan pernah membuka port 11434 atau 8080 ke Internet.
Kemampuan VPS yang hanya menggunakan CPU
VPS yang hanya menggunakan CPU dapat menjalankan model kecil dengan lambat. Itulah ringkasan yang jujur. Hal yang penting adalah mengetahui batas kemampuannya. Lakukan pengukuran sebelum merancang apa pun berdasarkan VPS tersebut:
llama-bench -m ~/models/Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf -p 512 -n 128Kolom pp menunjukkan kecepatan pemrosesan prompt, sedangkan kolom tg menunjukkan kecepatan pembuatan token. Keduanya diukur dalam token per detik. Pada paket vCPU bersama, model 8B dengan Q4_K_M biasanya mencapai kecepatan rendah satu digit untuk tg. Pemrosesan prompt adalah bagian yang paling terasa: seluruh prompt diproses sebelum token output pertama muncul, sehingga system prompt yang panjang menambah waktu tunggu pada setiap permintaan. Panjang balasan adalah bagian dari biaya yang dapat Anda kendalikan, karena pada kecepatan tiga token per detik, model yang menghasilkan 600 token secara bertele-tele akan menggunakan VPS selama tiga menit. Karena itu, membatasi output dengan num_predict adalah cara paling murah untuk mencegah satu balasan yang terlalu panjang berubah menjadi timeout.
Dapat digunakan pada CPU: model 1B hingga 4B untuk klasifikasi, ekstraksi, ringkasan singkat, atau routing. Balasan muncul dalam hitungan detik dan penggunaan memorinya sesuai dengan paket VPS biasa. Untuk contoh penggunaan dengan ukuran model tertentu, bukan rentang ukuran, Nemotron 3.5 Lightning yang diunduh dan diukur pada VPS memberikan tag yang tepat, jumlah RAM yang benar-benar dibutuhkan, serta kecepatan yang dicapai tanpa GPU. Tidak dapat digunakan pada CPU: chat interaktif dengan kecepatan membaca, coding assistant, pemrosesan dokumen panjang, atau pekerjaan apa pun dengan agent loop yang melakukan banyak panggilan secara berurutan. Loop yang melakukan dua belas panggilan dengan waktu empat detik untuk setiap panggilan memerlukan satu menit sebelum menghasilkan apa pun. Jika sejak awal rencananya adalah menggunakan coding assistant, mengarahkan agent ke model yang Anda host sendiri menjelaskan pekerjaan yang benar-benar dapat ditangani model lokal kecil dan pekerjaan yang harus tetap menggunakan hosted API.
Ada dua pilihan ketika angka tersebut tidak memenuhi kebutuhan. Jika masalahnya adalah konkurensi, yaitu banyak pengguna mengakses satu model secara bersamaan, pilihan engine perlu diubah. Perbandingan Ollama dan vLLM untuk serving secara konkuren membahas hal tersebut. Jika masalahnya adalah kecepatan mentah, solusinya adalah VPS dengan GPU terpasang, karena di sana -ngl mulai menjadi metrik yang berarti. Sebelum memilih salah satu opsi tersebut, ukur baseline perangkat kerasnya terlebih dahulu, karena bandwidth disk dan memori memengaruhi waktu pemuatan sama besar dengan CPU. Benchmark VPS yang dapat diulang layak dilakukan selama satu jam.
Instal llama.cpp dengan build tertentu
Kedua proyek tersebut diperbarui setiap minggu, jadi catat versi yang Anda deploy. One-liner dari upstream menginstal build terbaru:
curl -LsSf https://llama.app/install.sh | sh
llama serve -hf ggml-org/Qwen3.5-0.8B-GGUFUntuk menetapkan build tertentu, gunakan tarball siap pakai dari halaman releases. Build b10224 adalah tag saat ini per 2 August 2026:
curl -LO https://github.com/ggml-org/llama.cpp/releases/download/b10224/llama-b10224-bin-ubuntu-x64.tar.gz
tar xf llama-b10224-bin-ubuntu-x64.tar.gz
find . -type f -name 'llama-server'Anda juga dapat membangun tag yang sama dari source:
sudo apt update && sudo apt install -y build-essential cmake git libssl-dev
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
git checkout b10224
cmake -B build
cmake --build build --config Release -j $(nproc)libssl-dev adalah dependensi yang didokumentasikan untuk fitur HTTPS. Proses kompilasi memerlukan beberapa menit dan membutuhkan RAM lebih besar daripada yang tersedia pada plan terkecil. Karena itu, lakukan build pada mesin yang lebih besar, lalu salin binary jika mesin kecil kehabisan sumber daya.
Instal Ollama dengan versi yang dikunci
curl -fsSL https://ollama.com/install.sh | OLLAMA_VERSION=0.32.5 sh
ollama -vSkrip membaca OLLAMA_VERSION, sehingga Anda dapat mempertahankan rilis yang sudah terbukti berfungsi, bukan menggunakan versi apa pun yang dirilis pagi ini. v0.32.5 dipublikasikan pada 27 July 2026. Tersedia juga cara manual jika Anda tidak ingin meneruskan skrip ke shell melalui pipe:
sudo rm -rf /usr/lib/ollama
curl -fsSL https://ollama.com/download/ollama-linux-amd64.tar.zst | sudo tar x -C /usr
ollama -vCara manual tidak membuat unit systemd atau pengguna service, sehingga Anda harus menambahkannya sendiri. Panduan lengkap Ollama di VPS menjelaskan langkah penyiapan service tersebut secara bertahap.
Mode kegagalan dan string yang akan Anda lihat
Ollama menolak memuat model. ollama run mengembalikan baris dengan bentuk berikut:
Error: model requires more system memory (5.6 GiB) than is available (3.2 GiB)Ollama memeriksa ukuran sebelum memuat model, sehingga gagal dengan cepat dan menjelaskan penyebabnya. Turunkan satu baris quantisation, kurangi panjang konteks, atau pilih model yang lebih kecil.
llama.cpp tidak gagal, tetapi berjalan sangat lambat. llama.cpp secara default memetakan GGUF ke memori, sehingga file yang lebih besar daripada RAM tetap dapat dijalankan. Kernel kemudian memuat dan mengeluarkan weight dari disk pada setiap token, sehingga proses pembuatan teks memerlukan beberapa detik per token dan penggunaan disk mencapai 100 persen. Berikan --no-mmap untuk memaksa alokasi nyata agar proses langsung gagal, bukan menurun performanya. Saat kernel mengambil tindakan, dmesg menampilkan alasannya:
Out of memory: Killed process 1234 (llama-server)File model sama sekali tidak dapat dimuat. GGUF yang dibuat untuk model family yang lebih baru daripada engine Anda akan menghasilkan error yang menyebutkan arsitektur yang tidak dikenalnya:
error loading model architecture: unknown model architecture: 'qwen3next'Solusinya adalah meng-upgrade engine, bukan menggunakan file yang berbeda. Inilah konsekuensi dari pinning, dan karena itu Anda perlu mencatat build number. Anda harus mengetahui versi asal sebelum melakukan upgrade.
API merespons secara lokal, tetapi tidak dari aplikasi Anda. Ollama melakukan binding pada 127.0.0.1:11434, sehingga host lain menerima connection refused. Atur OLLAMA_HOST=0.0.0.0:11434 melalui systemctl edit ollama hanya jika port berada di balik firewall atau jaringan privat, karena API tersebut tidak memiliki autentikasi di depannya.
Respons pertama setelah jeda sangat lambat. Model telah di-unload setelah idle selama 5 menit dan sedang dibaca kembali dari disk. ollama ps yang dijalankan tepat sebelum request tidak menampilkan model yang dimuat, sehingga hal ini terkonfirmasi. Naikkan OLLAMA_KEEP_ALIVE.
Jadi, mana yang sebaiknya Anda jalankan?
Jalankan Ollama jika Anda ingin model dikelola secara otomatis dan memerlukan endpoint berbentuk OpenAI tanpa konfigurasi tambahan. Ollama merupakan pilihan default yang tepat untuk deployment pertama dan untuk penggunaan saat pilihan model akan sering berubah.
Jalankan llama.cpp secara langsung jika memori sangat terbatas sehingga Anda perlu memilih baris kuantisasi sendiri, jika Anda memerlukan /health, /slots, dan /metrics untuk pemantauan, atau jika Anda memerlukan flag yang tidak tersedia di Ollama. Ini merupakan pilihan yang tepat pada VPS dengan kapasitas yang hampir tidak cukup untuk model, karena pengaturan yang membuat model tersebut dapat berjalan adalah pengaturan yang dipilih Ollama untuk Anda.
Menjalankan keduanya adalah hal yang wajar. Gunakan Ollama untuk eksperimen dan llama.cpp untuk satu model yang Anda gunakan di production dan tidak ingin berubah.
FAQ
Apakah Ollama hanya wrapper di sekitar llama.cpp?
Hampir, tetapi wrapper tersebut menjalankan fungsi penting. README Ollama mencantumkan llama.cpp sebagai backend inferensinya (diperiksa pada 2 August 2026). Di atasnya, Ollama menambahkan registry model, template prompt yang mengubah pesan chat menjadi prompt, sekumpulan parameter sampling default, daemon yang membongkar model saat idle, dan API HTTP. Jika Anda membandingkan token per detik dengan pengaturan yang identik, Anda membandingkan engine yang sama dengan dirinya sendiri. Pilihan sebenarnya adalah lapisan manajemennya.
Mana yang lebih cepat pada VPS yang hanya menggunakan CPU?
Keduanya menggunakan engine yang sama. Dengan file model, kuantisasi, ukuran konteks, dan jumlah thread yang sama, hasilnya biasanya berdekatan. Perbedaan yang dilaporkan biasanya berasal dari default yang berbeda, terutama panjang konteks dan jumlah thread, bukan dari engine-nya. Ukur dengan llama-bench -m <file> -p 512 -n 128 dan bandingkan kolom tg pada server Anda sendiri sebelum mempercayai angka yang dipublikasikan.
Dapatkah saya menggunakan file GGUF sendiri dengan Ollama?
Ya. Letakkan file tersebut di server, tulis Modelfile yang baris pertamanya adalah FROM ./your-model.gguf, tambahkan baris PARAMETER yang diperlukan seperti num_ctx, lalu jalankan ollama create your-name -f ./Modelfile. ollama ls akan mencantumkannya bersama model yang Anda ambil dari registry. Dengan cara ini, Anda dapat menggunakan kuantisasi yang tidak tersedia di registry.
Berapa banyak RAM yang saya perlukan untuk model 8B?
Perhitungkan ukuran file, KV cache, dan runtime. Build Q4_K_M untuk Llama 3.1 8B berukuran sekitar 4.58 GiB di disk, dan konteks 4096 token menambahkan cache sekitar 512 MiB. Jadi, RAM 8 GiB cukup dan 4 GiB tidak memadai. Ukuran cache bertambah seiring ukuran konteks: model yang sama dengan konteks 32,768 token memerlukan cache sekitar 4 GiB. Dengan Ollama, ingat bahwa kebutuhan ini juga bertambah seiring OLLAMA_NUM_PARALLEL.