▍kelas.niumination
mode demoLogin & pembayaran nonaktif — materi tetap bisa dibaca.
2 / 12·32 menit·gratis#ollama#instalasi#model#pengukuran

Ollama menyederhanakan satu hal yang dulu menyiksa: menjalankan model LLM lokal tanpa menyusun lingkungan Python, CUDA, dan dependensi yang saling bertengkar. Ia membungkus model, bobot, dan server API jadi satu perintah.

1. Pasang

terminal
$ curl -fsSL https://ollama.com/install.sh | sh

Itu untuk Linux dan macOS. Setelah selesai, pastikan servisnya hidup:

terminal
$ ollama --version && systemctl is-active ollama
ollama version is 0.x.x
active

Kalau servisnya tidak aktif:

terminal
$ sudo systemctl enable --now ollama

Windows: unduh penginstal dari ollama.com/download, jalankan, lalu buka PowerShell baru.

Docker (berguna untuk server, bukan laptop):

terminal
$ docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
✓Cek dulu apakah GPU-mu kepakai

Jalankan ollama ps setelah menarik dan menjalankan model. Kolom Processor akan menunjukkan 100% GPU, sebagian GPU, atau 100% CPU. Kalau GPU-mu ada tapi kolomnya CPU, masalahnya hampir selalu driver CUDA/ROCm yang belum terpasang — bukan Ollama.

2. Pilih model — ini bagian yang paling sering salah

Ukuran model ditulis dalam miliaran parameter: 3B, 7B, 8B, 14B, 70B. Angka itu bukan "kepintaran"; ia adalah perkiraan beban memori. Aturan praktisnya:

KuantisasiMemori per 1B parameterContoh: model 8B
Q4_K_M (default Ollama)~0,6 GB~4,9 GB
Q5_K_M~0,7 GB~5,7 GB
Q8_0~0,9 GB~7,2 GB
FP16 (tanpa kuantisasi)~2,0 GB~16 GB

Tambahkan sekitar 1–2 GB untuk konteks dan overhead. Maka:

  • RAM 8 GB → nyaman untuk model 3B–7B di Q4. Jangan mencoba 14B.
  • RAM 16 GB → model 8B di Q4 berjalan lancar; 14B masih mungkin tapi akan mengorbankan kecepatan.
  • RAM 32 GB + GPU 12 GB → 14B–32B mulai realistis.
  • GPU 24 GB → model 32B di Q4 bisa masuk.
!VRAM dan RAM itu berbeda, dan sistem akan diam-diam memakai keduanya

Kalau modelnya melebihi VRAM, Ollama akan membagi: sebagian lapisan di GPU, sisanya di RAM. Hasilnya: tetap jalan, tapi kecepatannya bisa turun 5–10 kali lipat. Ini sumber utama keluhan "kok lambat sekali padahal punya GPU".

Tarik dan jalankan

terminal
$ ollama pull qwen2.5:7b-instruct-q4_K_M

Pilihan model yang ramah untuk mulai, terutama untuk teks Indonesia:

ModelUkuranCatatan
qwen2.5:7b-instruct~4,7 GBSangat kuat untuk bahasa Indonesia dibanding kelas ukurannya; pilihan aman untuk mulai
llama3.1:8b-instruct~4,9 GBBahasa Inggris terbaik di kelasnya, Indonesia cukup
gemma2:9b~5,4 GBBagus untuk ringkasan dan instruksi terstruktur
qwen2.5-coder:7b~4,7 GBKhusus kode; bukan untuk percakapan umum
nomic-embed-text~270 MBBukan untuk mengobrol — untuk embedding (modul B3)

Jalankan sebentar untuk memastikan semuanya hidup:

terminal
$ ollama run qwen2.5:7b-instruct-q4_K_M
>>> Jelaskan apa itu kuantisasi dalam dua kalimat.
...

Ketik /bye untuk keluar.

3. Pakai lewat API, bukan hanya obrolan

Bagian yang akan kamu pakai sepanjang kelas ini adalah server HTTP-nya, yang otomatis hidup di port 11434.

terminal
$ curl http://localhost:11434/api/generate -d '{ "model": "qwen2.5:7b-instruct", "prompt": "Sebutkan tiga alasan memilih model lokal.", "stream": false }'

Untuk percakapan multi-giliran, pakai endpoint /api/chat dengan daftar messages. Perbedaan pentingnya:

  • /api/generate — satu prompt, satu jawaban. Cocok untuk tugas sekali jalan: ringkas, klasifikasi, ekstraksi.
  • /api/chat — menyimpan giliran. Cocok untuk asisten, dan menjadi dasar agent di modul G3.

Contoh paling kecil dengan Python:

import requests

R = "http://localhost:11434/api/chat"

def tanya(pesan: str, model: str = "qwen2.5:7b-instruct") -> str:
    r = requests.post(R, json={
        "model": model,
        "messages": [{"role": "user", "content": pesan}],
        "stream": False,
        "options": {"temperature": 0.2},
    }, timeout=120)
    r.raise_for_status()
    return r.json()["message"]["content"]

print(tanya("Tulis satu kalimat tentang Aceh Tengah."))

Dan versi TypeScript, kalau itu lebih dekat denganmu:

const r = await fetch('http://localhost:11434/api/chat', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    model: 'qwen2.5:7b-instruct',
    messages: [{ role: 'user', content: 'Tulis satu kalimat tentang Aceh Tengah.' }],
    stream: false,
    options: { temperature: 0.2 },
  }),
})
const { message } = await r.json()
console.log(message.content)

4. Ukur, jangan menebak

Sebelum kamu membangun apa pun di atas model ini, dapatkan tiga angka. Tiga angka ini akan menyelamatkanmu dari janji yang tidak bisa ditepati.

terminal
$ ollama run qwen2.5:7b-instruct --verbose
>>> Tulis laporan 300 kata tentang cuaca.
total duration: 4.2s
eval rate: 38.15 tokens/s

Yang perlu dicatat:

MetrikCara bacaTarget wajar (7B, CPU+GPU entry)
eval ratekecepatan menghasilkan token20–40 token/detik nyaman; di bawah 5 terasa menyiksa
prompt eval ratekecepatan membaca pertanyaancepat, biasanya bukan masalah
total durationwaktu end-to-endyang dirasakan pengguna

Ukur juga memori yang terpakai saat model sedang dimuat:

terminal
$ ollama ps
NAME SIZE PROCESSOR UNTIL
qwen2.5:7b-instruct 4.7 GB 82% GPU 4 minutes from now
✓Model menghilang setelah beberapa menit

Secara bawaan Ollama menurunkan model dari memori setelah sekitar 5 menit menganggur. Permintaan pertama setelah itu akan lebih lambat karena model dimuat ulang. Untuk eksperimen, atur OLLAMA_KEEP_ALIVE=10m atau kirim keep_alive di setiap permintaan.

5. Menulis resep model sendiri

Untuk mengunci parameter tanpa mengetiknya berulang kali, buat Modelfile:

FROM qwen2.5:7b-instruct

PARAMETER temperature 0.2
PARAMETER num_ctx 8192
PARAMETER top_p 0.9

SYSTEM """
Kamu adalah asisten yang menjawab dalam bahasa Indonesia.
Jawab singkat. Kalau tidak tahu, katakan tidak tahu.
Jangan pernah mengarang angka, nama, atau tanggal.
"""

Lalu bangun dan pakai:

terminal
$ ollama create asisten-id -f Modelfile && ollama run asisten-id

Baris "jangan mengarang angka" di atas bukan hiasan. Model kecil sangat mudah berhalusinasi pada fakta spesifik, dan instruksi eksplisit seperti ini menurunkannya secara terasa. Kita akan membahas teknik menekan halusinasi lebih jauh di modul B6.

TUGAS 2

Lakukan tiga hal, dan catat hasilnya di catatanmu:

  1. Pasang Ollama dan jalankan qwen2.5:7b-instruct.
  2. Jalankan dengan --verbose, lalu catat eval rate dan porsi GPU/CPU dari ollama ps.
  3. Buat Modelfile sendiri dengan instruksi sistem yang melarang model mengarang fakta, lalu uji dengan pertanyaan yang jawabannya pasti tidak diketahui model — misalnya "Siapa kepala dinas X pada 2019?"

Kalau model tetap menjawab dengan yakin di langkah 3, kamu baru saja melihat masalah terbesar model kecil secara langsung. Itu yang akan kita tangani di modul-modul berbayar.

Selanjutnya: mengubah model yang hanya menjawab menjadi agent yang bisa bertindak.