Skip to main content
BlogAI

Jalankan LLM Lokal dengan Ollama: Model, API, Modelfile

Cara saya menjalankan LLM open-weight seperti Llama, Gemma, dan Qwen di mesin sendiri dengan Ollama — satu perintah untuk menarik model, API kompatibel OpenAI, dan privasi penuh.

Matthews Wong

Software Engineer

Juli 20269 menit baca
Jalankan LLM Lokal dengan Ollama: Model, API, Modelfile

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.

Tarik dan jalankan model dengan satu perintah

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 list

Jalankan 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: kelola versi konfigurasi model

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-helper

REST API kompatibel OpenAI di localhost

Begitu 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.

Keluaran terstruktur dan pemanggilan tool

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.

Perangkat keras: GPU, CPU, kuantisasi, dan RAM

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.

  • Setidaknya 8 GB RAM untuk menjalankan model 7B.
  • Setidaknya 16 GB RAM untuk menjalankan model 13B.
  • Setidaknya 32 GB RAM untuk menjalankan model 33B.
  • GPU dengan VRAM cukup untuk menampung model jauh lebih cepat daripada inferensi hanya-CPU, tetapi tidak wajib untuk mulai.

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.

Ollama lokal versus API terkelola

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.

AspekLokal (Ollama)API terkelola
Privasi dataPrompt tak pernah keluar dari mesin AndaPrompt dikirim ke server pihak ketiga
Model biayaPerangkat keras sekali beli, tanpa biaya per tokenBayar per token, membengkak seiring pemakaian
Penggunaan luringBekerja tanpa internet sama sekaliMembutuhkan koneksi jaringan
Batas atas modelDibatasi RAM dan VRAM AndaAkses ke model frontier terbesar
LatensiTanpa lompatan jaringan; terikat perangkat keras AndaPerjalanan bolak-balik jaringan plus beban penyedia
OperasionalAnda mengelola pembaruan dan perangkat kerasPenyedia 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.

FAQ

Pertanyaan Umum

Jawaban singkat untuk pertanyaan yang paling sering diajukan pembaca tentang topik ini.

Apa itu Ollama?

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.

Bagaimana cara menjalankan model dengan Ollama?

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.

Apakah Ollama punya API kompatibel OpenAI?

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.

Apa itu Modelfile di Ollama?

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.

Berapa RAM yang saya butuhkan untuk menjalankan model Ollama?

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.