SSD Nodes Learn 🎉 VPS mulai $4.99/bln
Panduan Matt ConnorOleh Matt Connor · Diperbarui 2026-08-07

Ollama vs llama.cpp untuk VPS CPU: Mana yang Tepat?

Pahami perbedaan Ollama dan llama.cpp di VPS tanpa GPU, dampak kuantisasi pada RAM, serta kapan konfigurasi CPU-only membuat keduanya tidak cocok.

Ollama vs llama.cpp: lapisan mana yang ingin Anda jalankan?

Ollama dan llama.cpp bukan pesaing seperti yang tersirat dalam pertanyaan tersebut. llama.cpp adalah mesin inferensi: komponen ini memuat file model dan mengubah prompt menjadi token. Ollama adalah pengelola model, daemon latar belakang, dan API HTTP yang berjalan di atas mesin tersebut. README Ollama masih mencantumkan llama.cpp sebagai backend inferensinya (diperiksa pada 2 August 2026). Jadi, pertanyaan sebenarnya adalah lapisan mana yang ingin Anda operasikan di VPS, bukan mana yang lebih cepat.

Gunakan Ollama jika Anda menginginkan service yang mengambil model berdasarkan nama dan tetap berjalan tanpa perlu diawasi. Jalankan llama.cpp secara langsung jika VPS Anda kecil dan Anda perlu memilih file model, ukuran context, serta jumlah thread yang tepat, karena pada VPS kecil setiap pengaturan tersebut menggunakan memori yang terbatas.

Apa sebenarnya masing-masing proyek ini

llama.cpp adalah implementasi inferensi transformer dalam C dan C++ yang dibangun di atas pustaka ggml. llama.cpp membaca file GGUF. GGUF (GGML universal file format) adalah kontainer satu file yang berisi bobot, 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. Rilis ditandai berdasarkan nomor build, bukan versi semantik. Tag saat ini adalah b10224, yang diterbitkan 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 menjawab permintaan HTTP, sedangkan client command line berkomunikasi dengan daemon tersebut. Di balik keduanya terdapat registry di ollama.com yang menyimpan model yang telah dikemas sebelumnya. Ollama menggunakan versi semantik, dan v0.32.5 dirilis pada 27 July 2026. ollama pull mengambil GGUF beserta template prompt dan sekumpulan parameter default, lalu menyimpannya di /usr/share/ollama/.ollama/models pada Linux.

Pengemasan tersebut adalah satu-satunya perbedaan utama. Ollama menentukan kuantisasi, template, dan panjang konteks untuk Anda, serta memberi Anda satu nama untuk diingat. llama.cpp tidak menentukan apa pun dan memberi Anda berbagai flag.

Sumbu 1: kendali 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 polanya diketahui: Q4_K_M berarti kuantisasi K 4-bit dengan ukuran medium. Angka yang lebih tinggi mempertahankan presisi lebih besar dan membutuhkan lebih banyak memori.

ChartMeta-Llama-3.1-8B-Instruct GGUF file size by quantisation (GiB)
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
  }
]

Itu adalah 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 ke GiB. Terdapat 6 build dari satu model, dan yang terkecil berukuran 2.96 GiB, sedangkan yang terbesar berukuran 7.95 GiB. Default yang umum, Q4_K_M, berukuran 4.58 GiB. Pada VPS 4 GiB, pilihan tunggal ini menentukan apakah model dapat dimuat.

Dengan llama.cpp, Anda menentukan nama file. Jadi, Anda memilih baris 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 mesin yang hanya menggunakan CPU). Tidak ada nilai yang ditebak untuk Anda.

Dengan Ollama, kuantisasi mengikuti tag yang Anda pull, dan ollama ls menampilkan file yang benar-benar tersedia di disk. Jika registry tidak menyediakan build yang Anda inginkan, impor sendiri file GGUF. Tulis sebuah Modelfile:

FROM ./Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf
PARAMETER num_ctx 4096

Kemudian build file tersebut dan periksa hasilnya:

ollama create llama31-q4 -f ./Modelfile
ollama ls

Panjang konteks adalah pengaturan yang sering menimbulkan masalah. Ollama memilih nilai default berdasarkan VRAM yang tersedia, dan mesin tanpa GPU masuk ke bucket terkecil: 4096 token. Jika Anda mengirim dokumen 20,000 token, token tambahan akan dibuang sebelum model melihatnya. Akibatnya, jawaban dapat terdengar yakin tetapi keliru tentang file yang hanya dibaca sebagian oleh model. Naikkan nilainya dengan OLLAMA_CONTEXT_LENGTH pada daemon, atau dengan PARAMETER num_ctx dalam Modelfile. llama.cpp juga tidak memiliki default yang layak dipercaya. Tetapkan -c secara eksplisit agar nilainya diketahui.

Aritmetika memori yang sering tidak ditampilkan

File model bukan satu-satunya biaya memori. KV cache (key/value cache) menyimpan satu entri untuk setiap layer dan token konteks. Ukurannya bertambah seiring percakapan.

Hitung untuk Llama 3.1 8B. Model ini memiliki 32 layer, 8 key/value head, dan dimensi head sebesar 128. Setiap token menyimpan key dan value, masing-masing berukuran 2 byte dalam f16. Jadi, 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 weights, ditambah sekitar 0.5 GiB untuk cache dan runtime itu sendiri. Model tersebut tidak muat dalam RAM 4 GiB. Model tersebut muat dalam RAM 8 GiB dengan ruang kerja yang cukup. Jika konteks dinaikkan menjadi 32k pada mesin 8 GiB yang sama, cache saja sudah menghabiskan ruang yang tersedia. Pantau penggunaan memori secara langsung dengan free -h saat model dimuat. Jangan mengandalkan estimasi yang belum Anda ukur.

Ollama memperbesar kebutuhan ini. OLLAMA_NUM_PARALLEL memiliki nilai default 1. Memori yang diperlukan model bertambah sesuai hasil perkalian nilai tersebut dengan panjang konteks. Jika keduanya dinaikkan sekaligus, daemon secara diam-diam meminta RAM beberapa kali lebih besar daripada perkiraan Anda.

Sumbu 2: daemon yang harus Anda operasikan

Skrip instalasi Ollama menulis unit systemd, membuat pengguna sistem ollama, dan mengaktifkan service. Anda mendapatkan pengelolaan siklus hidup tanpa harus menulis semua konfigurasi tersebut. 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 ollama

OLLAMA_KEEP_ALIVE lebih penting pada VPS CPU dibandingkan lingkungan lain. Model disimpan di memori selama 5 menit secara default, lalu di-unload. Permintaan berikutnya harus membaca kembali seluruh file dari disk sebelum dapat memberikan respons. Karena itu, pemuatan ulang file berukuran 4.58 GiB dapat mengubah respons dua detik menjadi tiga puluh detik pada penyimpanan yang lambat. Nilai keep-alive yang panjang mengatasi latensi, tetapi terus menggunakan RAM. Keduanya merupakan biaya nyata. Pilih dampak yang lebih ringan.

llama.cpp tidak menyediakan daemon, sehingga 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.target

Aktifkan dengan sudo systemctl enable --now llama-server. Proses tersebut kemudian mempertahankan model selama seluruh masa hidupnya. Model tidak akan di-unload saat idle. Dengan demikian, tidak ada kejutan akibat pemuatan ulang, tetapi memori tidak dapat digunakan kembali tanpa menghentikan service. Jika menulis unit masih merupakan hal baru bagi Anda, 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 tersebut sekarang menggunakan format chat OpenAI, sehingga sebagian besar pustaka klien dapat digunakan pada 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. Produk ini juga menyediakan rute operasional yang tidak dimiliki Ollama: /health untuk readiness probe, /props untuk pengaturan model yang dimuat, /slots untuk melihat aktivitas setiap slot permintaan, dan /metrics dalam format Prometheus. Jika Anda berencana memonitor service ini, perbedaan tersebut mungkin menjadi faktor penentu.

Tidak ada server yang mengaktifkan autentikasi secara otomatis. Secara default, keduanya menggunakan loopback karena alasan keamanan. Akses keduanya melalui SSH tunnel atau dari balik reverse proxy. Jangan pernah membuka port 11434 atau 8080 ke Internet.

Yang dapat dilakukan VPS yang hanya menggunakan CPU secara realistis

VPS yang hanya menggunakan CPU dapat menjalankan model kecil dengan lambat. Itulah ringkasan yang jujur. Hal yang berguna adalah mengetahui batasnya. 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 128

Kolom pp menunjukkan kecepatan pemrosesan prompt, sedangkan kolom tg menunjukkan kecepatan pembuatan token. Keduanya dinyatakan dalam token per detik. Pada paket vCPU bersama, model 8B dengan Q4_K_M biasanya mencapai angka satu digit rendah untuk tg. Pemrosesan prompt adalah bagian yang paling terasa lambat. Seluruh prompt diproses sebelum token output pertama muncul. Jadi, system prompt yang panjang menambah waktu tunggu pada setiap permintaan.

CPU masih memadai untuk model 1B hingga 4B yang digunakan untuk klasifikasi, ekstraksi, ringkasan singkat, atau routing. Respons tiba dalam hitungan detik dan penggunaan memorinya sesuai dengan paket VPS biasa. CPU tidak memadai untuk chat interaktif dengan kecepatan membaca, coding assistant, pemrosesan dokumen panjang, atau tugas dengan agent loop yang melakukan banyak panggilan secara berurutan. Loop yang melakukan dua belas panggilan dengan waktu empat detik per panggilan memerlukan satu menit sebelum menghasilkan apa pun.

Ada dua pilihan ketika angkanya tidak memenuhi kebutuhan. Jika masalahnya adalah konkurensi, yaitu banyak pengguna mengakses satu model secara bersamaan, pilihan engine menjadi penting. Perbandingan Ollama dan vLLM untuk serving konkuren membahas hal tersebut. Jika masalahnya adalah kecepatan mentah, jawabannya adalah VPS dengan GPU terpasang, karena -ngl mulai menjadi metrik yang berarti. Sebelum memilih salah satu opsi tersebut, ukur baseline perangkat kerasnya. Bandwidth disk dan memori turut menentukan waktu pemuatan, sama seperti CPU. Benchmark VPS yang dapat diulang layak dilakukan selama satu jam.

Instal llama.cpp dengan build tertentu

Kedua proyek ini berubah setiap minggu. Karena itu, catat versi yang Anda deploy. One-liner dari upstream menginstal build saat ini:

curl -LsSf https://llama.app/install.sh | sh
llama serve -hf ggml-org/Qwen3.5-0.8B-GGUF

Untuk menggunakan build tertentu, ambil tarball prebuilt 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 waktu beberapa menit dan membutuhkan RAM lebih besar daripada yang tersedia pada plan terkecil. Karena itu, lakukan build pada server yang lebih besar, lalu salin binary jika server kecil kehabisan RAM.

Instal Ollama dengan versi yang ditetapkan

curl -fsSL https://ollama.com/install.sh | OLLAMA_VERSION=0.32.5 sh
ollama -v

Skrip membaca OLLAMA_VERSION, sehingga Anda dapat mempertahankan rilis yang sudah diketahui stabil, bukan menggunakan versi apa pun yang dirilis pagi ini. v0.32.5 dirilis pada 27 July 2026. Tersedia juga metode manual jika Anda tidak ingin menyalurkan skrip langsung ke shell:

sudo rm -rf /usr/lib/ollama
curl -fsSL https://ollama.com/download/ollama-linux-amd64.tar.zst | sudo tar x -C /usr
ollama -v

Metode manual tidak membuat unit systemd atau pengguna service, sehingga Anda harus menambahkannya sendiri. Panduan lengkap Ollama pada VPS membahas 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 proses gagal lebih awal dan menjelaskan penyebabnya. Turunkan satu baris kuantisasi, kurangi panjang konteks, atau pilih model yang lebih kecil.

llama.cpp tidak gagal, tetapi berjalan sangat lambat. Secara default, llama.cpp memetakan GGUF ke memori, sehingga file yang lebih besar daripada RAM tetap dapat dijalankan. Kernel kemudian melakukan paging bobot dari dan ke disk pada setiap token, sehingga pembuatan teks turun menjadi beberapa detik per token dan penggunaan disk mencapai 100 persen. Berikan --no-mmap untuk memaksa alokasi nyata sehingga proses langsung gagal, bukan menurun kinerjanya. Saat kernel turun tangan, dmesg menampilkan alasannya:

Out of memory: Killed process 1234 (llama-server)

File model sama sekali tidak dapat dimuat. GGUF yang dibuat untuk keluarga model yang lebih baru daripada engine Anda menghasilkan error yang menyebutkan arsitektur yang tidak dikenalnya:

error loading model architecture: unknown model architecture: 'qwen3next'

Solusinya adalah memperbarui engine, bukan menggunakan file lain. Ini adalah konsekuensi dari pinning, dan alasan Anda perlu mencatat nomor build. Anda perlu mengetahui versi asal sebelum melakukan upgrade.

API memberikan respons secara lokal, tetapi tidak dari aplikasi Anda. Ollama melakukan binding pada 127.0.0.1:11434, sehingga host lain mendapatkan penolakan koneksi. Atur OLLAMA_HOST=0.0.0.0:11434 melalui systemctl edit ollama hanya jika port tersebut berada di balik firewall atau jaringan privat, karena API tidak memiliki autentikasi bawaan.

Respons pertama setelah jeda sangat lambat. Proses unload setelah idle selama 5 menit telah terjadi, dan model 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 endpoint dengan format OpenAI tersedia tanpa konfigurasi tambahan. Ollama adalah pilihan default yang tepat untuk deployment pertama dan untuk penggunaan yang pilihan modelnya akan sering berubah.

Jalankan llama.cpp secara langsung jika memori cukup terbatas sehingga Anda perlu memilih baris kuantisasi sendiri, jika Anda ingin menggunakan /health, /slots, dan /metrics untuk pemantauan, atau jika Anda memerlukan flag yang tidak disediakan Ollama. Ini adalah pilihan yang tepat pada VPS ketika model hanya sedikit lebih kecil daripada kapasitas memori yang tersedia, 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 pembungkus di sekitar llama.cpp?

Hampir, tetapi pembungkus tersebut melakukan pekerjaan nyata. README Ollama mencantumkan llama.cpp sebagai backend inferensinya (diperiksa pada 2 August 2026). Di atasnya, Ollama menambahkan registri model, template prompt yang mengubah pesan chat menjadi prompt, serangkaian parameter sampling default, daemon dengan pembongkaran saat idle, dan HTTP API. Jika Anda membandingkan token per detik dengan pengaturan yang identik, Anda membandingkan engine yang sama dengan dirinya sendiri. Yang sebenarnya Anda pilih adalah lapisan manajemennya.

Mana yang lebih cepat pada VPS khusus CPU?

Keduanya menggunakan engine yang sama. Jadi, dengan file model, kuantisasi, ukuran konteks, dan jumlah thread yang sama, hasilnya hampir sama. Perbedaan yang biasanya dilaporkan berasal dari default yang berbeda, terutama panjang konteks dan jumlah thread, bukan dari engine. Ukur dengan llama-bench -m <file> -p 512 -n 128 dan bandingkan kolom tg pada server Anda sendiri sebelum mempercayai angka yang dipublikasikan.

Apakah saya dapat menggunakan file GGUF sendiri dengan Ollama?

Ya. Letakkan file tersebut di server, buat Modelfile dengan baris pertamanya berupa 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 semua model yang Anda ambil dari registri. Dengan cara ini, Anda dapat menggunakan kuantisasi yang tidak disediakan oleh registri.

Berapa banyak RAM yang diperlukan untuk model 8B?

Perhitungkan ukuran file, cache KV, 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 nyaman, sedangkan 4 GiB tidak cukup. Ukuran cache meningkat seiring ukuran konteks. Model yang sama dengan konteks 32,768 token memerlukan cache sekitar 4 GiB. Dengan Ollama, ingat bahwa kebutuhan tersebut juga meningkat seiring OLLAMA_NUM_PARALLEL.

#ollama#llama-cpp#local-llm#self-hosted-ai#gguf