Jalankan LLM Lokal dengan Ollama: Model, API, Modelfile

Foto oleh Christian Wiediger on Unsplash
Ollama adalah runtime open-source untuk menjalankan model bahasa besar open-weight secara lokal di perangkat keras Anda sendiri. Ia menyatukan bobot model, mesin inferensi, dan server HTTP lokal dalam satu biner, sehingga Anda bisa menarik dan menjalankan model seperti Llama, Gemma, Qwen, dan DeepSeek dengan satu perintah tanpa perlu menyiapkan CUDA dan dependensi Python secara manual.
Jalankan satu perintah seperti ollama run llama3.2. Pada jalankan pertama Ollama mengunduh bobot model dan menaruh Anda di prompt obrolan interaktif; setiap kali berikutnya seketika karena model tersimpan di disk. Gunakan ollama pull untuk mengambil model lebih dulu dan ollama list untuk melihat apa yang sudah ada secara lokal.
Ya. Ollama menyajikan HTTP API di port 11434, termasuk endpoint bawaan yang kompatibel dengan OpenAI Chat Completions di http://localhost:11434/v1. Kode yang ditulis untuk OpenAI SDK bisa diarahkan ke server lokal Anda hanya dengan mengubah base URL; kunci API diminta oleh klien tetapi tidak dipakai Ollama, jadi nilai apa pun berlaku.
Modelfile adalah cetak biru untuk model yang dikustomisasi, mirip semangatnya dengan Dockerfile. Ia dimulai FROM sebuah model dasar lalu menumpuk konfigurasi: PARAMETER mengatur opsi runtime seperti temperature dan panjang konteks, SYSTEM menetapkan prompt sistem permanen, dan TEMPLATE mengendalikan format prompt. Anda membangun model bernama darinya dengan ollama create.
README resmi Ollama merekomendasikan setidaknya 8 GB RAM untuk model 7B, 16 GB untuk model 13B, dan 32 GB untuk model 33B. Seluruh model harus muat di memori, dan kuantisasi membuat model lebih besar layak di perangkat keras konsumen dengan menyimpan bobot pada presisi lebih rendah. GPU dengan VRAM cukup jauh lebih cepat tetapi tidak wajib untuk mulai.

Foto oleh Christian Wiediger on Unsplash
Ringkasan Utama
Ollama menjalankan model bahasa besar open-weight di perangkat keras Anda sendiri. Satu perintah menarik dan menjalankan model seperti Llama, Gemma, Qwen, dan DeepSeek. Ia menyediakan REST API lokal plus endpoint kompatibel OpenAI, mendukung keluaran JSON terstruktur dan tools, serta menjaga setiap prompt tetap di mesin Anda tanpa biaya per token.
Cukup lama, memanggil model bahasa berarti mengirim prompt saya ke server orang lain dan membayar per token. Itu tidak masalah untuk prototipe, tetapi menjadi persoalan begitu datanya sensitif, tagihan membengkak seiring lalu lintas, atau jaringan tidak andal. Ollama adalah alat yang saya pilih ketika saya ingin model berjalan sepenuhnya di mesin saya sendiri, tanpa ada yang keluar dari kotak.
Ollama adalah runtime open-source untuk model open-weight. Ia menyatukan bobot model, mesin inferensi, dan server HTTP lokal di balik satu biner, sehingga membuat model yang mumpuni menjawab prompt hanya butuh satu perintah, bukan akhir pekan penuh mengurus CUDA dan dependensi Python. Semua di bawah ini bersumber dari dokumentasi resmi dan blog Ollama, bukan dari ingatan.
Alur kerja intinya sengaja dibuat membosankan. Anda sebut nama model, lalu Ollama mengunduhnya, memuatnya, dan menaruh Anda di prompt obrolan. Model-model yang pernah Anda baca di makalah tersedia di pustaka model: Llama, Gemma, Qwen, DeepSeek, Mistral, dan banyak lagi, masing-masing dalam beberapa ukuran parameter.
# Pull and run a model in one command
ollama run llama3.2
# Or just download it now, use it later
ollama pull qwen2.5
# See what you already have on disk
ollama listJalankan pertama akan mengunduh bobot; setiap kali berikutnya seketika karena model sudah tersimpan di disk. Gunakan pull tanpa run bila Anda ingin mengambil model lebih dulu, dan list untuk melihat apa yang sudah ada secara lokal.
Nama model membawa tag, seperti llama3.2:1b atau llama3.2:3b, yang memilih ukuran parameter dan kuantisasi tertentu. Tag lebih kecil memuat lebih cepat dan muat di memori lebih sedikit; tag lebih besar menjawab lebih baik. Ketika tag dihilangkan, Ollama memilih varian default yang masuk akal untuk model itu.
Modelfile adalah cetak biru untuk model yang dikustomisasi. Ia berkas teks kecil, mirip semangatnya dengan Dockerfile, yang dimulai FROM sebuah model dasar lalu menumpuk konfigurasi di atasnya: baris PARAMETER mengatur tombol runtime seperti temperature dan panjang konteks, SYSTEM menetapkan prompt sistem permanen, dan TEMPLATE mengendalikan format prompt penuh. Instruksi ADAPTER, LICENSE, dan MESSAGE juga tersedia.
# Modelfile
FROM llama3.2
PARAMETER temperature 0.6
PARAMETER num_ctx 8192
SYSTEM You are a terse senior backend engineer. Answer in at most three sentences.Anda membangun model bernama dari berkas itu dengan ollama create, lalu menjalankannya seperti model lain. Karena Modelfile berupa teks biasa, ia hidup di Git di samping kode Anda, sehingga rekan tim mendapat prompt sistem dan parameter yang persis sama tanpa perlu Anda jelaskan.
ollama create backend-helper -f ./Modelfile
ollama run backend-helperBegitu Ollama berjalan, ia menyajikan HTTP API di port 11434. Ada REST API native untuk menjalankan dan mengelola model, dan yang penting, endpoint bawaan yang kompatibel dengan OpenAI Chat Completions. Artinya kode yang ditulis untuk OpenAI SDK bisa diarahkan ke server lokal Anda hanya dengan mengubah base URL agar berakhiran /v1. Kunci API diminta oleh klien tetapi tidak dipakai Ollama, jadi string apa pun berlaku.
# OpenAI-compatible endpoint — drop-in for existing SDK code.
# The API key is required but unused; any value works.
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ollama" \
-d '{
"model": "llama3.2",
"messages": [
{ "role": "system", "content": "You are a helpful assistant." },
{ "role": "user", "content": "Explain quantization in one line." }
]
}'Kompatibilitas ini adalah alasan tunggal terbesar mengapa adopsinya mudah. Tools, kerangka agen, dan plugin IDE yang sudah berbicara protokol OpenAI cenderung bekerja dengan Ollama lewat satu baris perubahan konfigurasi, sehingga Anda bisa mencoba model lokal di aplikasi yang ada sebelum memutuskan memakainya.
Dua fitur mengubah Ollama dari mainan obrolan menjadi sesuatu yang bisa Anda bangun di atasnya. Keluaran terstruktur, ditambahkan pada Desember 2024, membiarkan Anda memberi skema JSON di field format sehingga model dibatasi mengembalikan JSON valid persis dalam bentuk yang Anda minta. Itu jauh lebih andal daripada mengurai teks bebas dan berharap kurung-kurungnya rapi.
# Force the model to answer inside a JSON schema
curl http://localhost:11434/api/chat \
-H "Content-Type: application/json" \
-d '{
"model": "llama3.1",
"stream": false,
"messages": [{ "role": "user", "content": "List two Go web frameworks." }],
"format": {
"type": "object",
"properties": {
"frameworks": { "type": "array", "items": { "type": "string" } }
},
"required": ["frameworks"]
}
}'Pemanggilan tool, ditambahkan pada Juli 2024, membiarkan model meminta fungsi yang Anda definisikan. Anda memberi daftar tools di permintaan, model membalas dengan blok tool_calls yang menyebut fungsi dan argumen, kode Anda menjalankannya, lalu Anda mengumpankan hasilnya kembali dengan pesan berperan tool. Model seperti Llama 3.1 termasuk yang pertama mendukung ini, dan ia juga bekerja lewat endpoint kompatibel OpenAI.
Ollama berjalan di GPU bila bisa dan jatuh ke CPU bila tidak, jadi ia bekerja di laptop biasa, hanya lebih lambat. Kendala pengikatnya adalah memori: seluruh model harus muat, dan kuantisasi yang membuatnya layak di perangkat keras konsumen dengan menyimpan bobot pada presisi lebih rendah. README resmi memberi minimum yang jelas.
Lebih besar tidak otomatis lebih baik untuk mesin Anda. Model besar yang tumpah dari memori GPU ke RAM CPU bisa merangkak ke beberapa token per detik, sedangkan model terkuantisasi lebih kecil yang muat seluruhnya di VRAM terasa seketika. Sesuaikan ukuran model dan kuantisasi dengan memori yang benar-benar Anda punya, lalu naik hanya bila kualitas menuntutnya.
Pilihannya bukan lokal-baik, terkelola-buruk. Masing-masing unggul di sumbu berbeda, dan saya memadukan keduanya tergantung proyeknya. Beginilah trade-off-nya tersusun dalam praktik.
| Aspek | Lokal (Ollama) | API terkelola |
|---|---|---|
| Privasi data | Prompt tak pernah keluar dari mesin Anda | Prompt dikirim ke server pihak ketiga |
| Model biaya | Perangkat keras sekali beli, tanpa biaya per token | Bayar per token, membengkak seiring pemakaian |
| Penggunaan luring | Bekerja tanpa internet sama sekali | Membutuhkan koneksi jaringan |
| Batas atas model | Dibatasi RAM dan VRAM Anda | Akses ke model frontier terbesar |
| Latensi | Tanpa lompatan jaringan; terikat perangkat keras Anda | Perjalanan bolak-balik jaringan plus beban penyedia |
| Operasional | Anda mengelola pembaruan dan perangkat keras | Penyedia menangani penskalaan dan waktu aktif |
Aturan praktis saya: pilih Ollama ketika privasi, biaya pada skala besar, atau operasi luring penting, dan pilih API terkelola ketika Anda butuh model paling kuat dan tak ingin memiliki perangkat keras. Mulai kecil, tarik model 3B malam ini, arahkan satu skrip yang ada ke localhost, dan lihat seberapa jauh model yang berjalan di mesin Anda sendiri benar-benar membawa Anda.