Ollama Nedir: Yerel LLM Çalıştırmanın En Kolay Yolu

Yapay zeka modellerini bulut servislerinden kullanmak artık çok yaygın, ama her istekte API ücreti ödemek, verilerinin üçüncü taraf sunuculara gitmesi ya da internet bağlantısına bağımlı olmak pek çok sysadmin için ciddi bir sorun. İşte tam bu noktada Ollama devreye giriyor. Ollama, büyük dil modellerini (LLM) kendi sunucunda ya da iş istasyonunda çalıştırmanı sağlayan, kurulumu ve yönetimi inanılmaz derecede basit bir araç. Docker’ı ilk kez kurarken hissettiğin o “ah, bu kadar basit miymiş” hissini Ollama ile de yaşayacaksın.

Ollama Nedir ve Neden Önemli?

Ollama, açık kaynaklı bir LLM çalıştırma platformu. Temel olarak Llama, Mistral, Gemma, CodeLlama gibi popüler modelleri indirip yerel ortamında çalıştırmana olanak tanıyan bir araç. Arka planda llama.cpp kullanıyor ama bunu tamamen soyutluyor. Yani C++ derleme süreçleriyle, CUDA konfigürasyonlarıyla uğraşmak yerine tek bir komutla modeli indirip çalıştırabiliyorsun.

Bir sysadmin olarak neden Ollama kullanmak isteyesin:

  • Veri gizliliği: Şirket içi belgeler, log analizleri, script yazma gibi görevlerde veriler dışarı çıkmıyor
  • Sıfır API maliyeti: Llama 3, Mistral gibi güçlü modelleri sınırsız kullanıyorsun
  • Çevrimdışı çalışma: İnternet bağlantısı olmayan air-gapped ortamlarda bile kullanabilirsin
  • Öngörülebilir performans: Cloud rate limit’leriyle boğuşmak yok
  • Otomasyona kolay entegrasyon: REST API’si var, script’lere entegre etmek çok kolay

Sistem Gereksinimleri

Ollama’yı çalıştırmadan önce donanımını değerlendirmek gerekiyor. GPU olmadan da çalışıyor ama performans farkı oldukça belirgin.

CPU ile çalıştırma:

  • Minimum 8 GB RAM (7B parametreli modeller için)
  • 16 GB RAM önerilir
  • Modern bir CPU yeterli, ama yavaş olacak (3-5 token/saniye)

GPU ile çalıştırma (önerilen):

  • NVIDIA GPU: CUDA 11.3+ gerekiyor
  • Apple Silicon (M1/M2/M3): Metal desteğiyle mükemmel performans
  • AMD GPU: ROCm desteği mevcut (Linux’ta)
  • 8 GB VRAM: 7B parametreli modeller için yeterli
  • 16 GB+ VRAM: 13B ve üzeri modeller için

Model seçiminde şunu aklında tut: parametre sayısı arttıkça hem kalite hem de kaynak tüketimi artıyor. 7B modeller günlük görevler için genellikle yeterince iyi.

Kurulum

Linux’ta Kurulum

Linux’ta kurulum tek satır:

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

Bu script gerekli bağımlılıkları kuruyor, systemd servisi oluşturuyor ve PATH’e ekliyor. Kurulum sonrası servis otomatik başlıyor.

Servis durumunu kontrol edelim:

sudo systemctl status ollama
sudo systemctl enable ollama  # Otomatik başlatma için

Ollama varsayılan olarak 11434 portunda dinliyor. Bunu doğrulayalım:

curl http://localhost:11434
# Yanıt: Ollama is running

macOS’ta Kurulum

macOS için resmi .dmg dosyasını indirip kurabilirsin ya da Homebrew kullanabilirsin:

brew install ollama
ollama serve  # Servisi başlatmak için

Windows’ta Kurulum

Windows için resmi installer’ı ollama.com adresinden indiriyorsun. Kurulum sonrası PowerShell veya CMD’den direkt ollama komutunu kullanabiliyorsun.

Docker ile Kurulum

Ortamını temiz tutmak istiyorsan Docker seçeneği de var:

# CPU only
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

# NVIDIA GPU ile
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

İlk Model: Çalıştırma ve Test

Kurulum tamam, şimdi ilk modelimizi çalıştıralım. Ben genellikle başlangıç için llama3.2 öneriyorum, iyi bir denge sunuyor:

ollama run llama3.2

Bu komut modeli indirip direkt interaktif chat moduna giriyor. İlk seferinde modeli indirmesi gerekiyor, bağlantı hızına göre birkaç dakika sürebilir. Llama 3.2’nin 3B versiyonu yaklaşık 2 GB.

Farklı bir model denemek istersen:

ollama run mistral          # Mistral 7B
ollama run codellama        # Kod yazmaya özelleşmiş
ollama run llama3.1:70b     # Çok daha güçlü ama ağır (70B)
ollama run gemma2:9b        # Google'ın Gemma modeli
ollama run phi3.5           # Microsoft'un küçük ama yetenekli modeli

İndirilmiş modelleri listelemek için:

ollama list

Bir modeli silmek için:

ollama rm llama3.2

REST API Kullanımı

Ollama’nın gerçek gücü REST API’sinden geliyor. Bu sayede script’lerini, uygulamalarını ve otomasyon araçlarını Ollama’ya bağlayabiliyorsun. OpenAI API formatıyla da uyumlu, bu büyük bir avantaj.

Temel API Çağrıları

# Basit bir soru sormak
curl http://localhost:11434/api/generate 
  -d '{
    "model": "llama3.2",
    "prompt": "Linux sistemde zombie process nedir?",
    "stream": false
  }'

stream: false yanıtın tek seferde gelmesini sağlıyor. Stream modunda token token geliyor, interaktif uygulamalar için daha iyi.

Chat formatında kullanmak için:

curl http://localhost:11434/api/chat 
  -d '{
    "model": "llama3.2",
    "messages": [
      {"role": "user", "content": "Nginx access log'larını analiz etmem lazım, hangi komutları kullanmalıyım?"}
    ],
    "stream": false
  }'

OpenAI uyumlu endpoint de mevcut, bu sayede OpenAI SDK kullanan mevcut araçları doğrudan Ollama’ya yönlendirebilirsin:

curl http://localhost:11434/v1/chat/completions 
  -H "Content-Type: application/json" 
  -d '{
    "model": "llama3.2",
    "messages": [
      {"role": "user", "content": "Basit bir Python hello world yaz"}
    ]
  }'

Gerçek Dünya Senaryoları

Senaryo 1: Log Analizi Otomasyonu

Bir production sunucusunda anormal log pattern’leri var ve bunları anlamak istiyorsun. Şöyle bir script yazabilirsin:

#!/bin/bash
# log_analyzer.sh - Ollama ile log analizi

LOG_FILE="/var/log/nginx/error.log"
LAST_100=$(tail -100 "$LOG_FILE")

PROMPT="Aşağıdaki Nginx hata loglarını analiz et. Kritik sorunları, olası nedenleri ve çözüm önerilerini Türkçe olarak listele:nn$LAST_100"

curl -s http://localhost:11434/api/generate 
  -d "{
    "model": "llama3.2",
    "prompt": $(echo "$PROMPT" | python3 -c 'import json,sys; print(json.dumps(sys.stdin.read()))'),
    "stream": false
  }" | python3 -c 'import json,sys; print(json.load(sys.stdin)["response"])'

Bu script’i cron’a ekleyip günlük log raporu alabilirsin:

# Her gün sabah 08:00'de log raporu
0 8 * * * /opt/scripts/log_analyzer.sh >> /var/log/ai_analysis.log 2>&1

Senaryo 2: Ansible Playbook Yazma Yardımcısı

Sık sık Ansible playbook yazmam gerekiyor ve bazen sözdizimini doğrulamak ya da hızlı bir template oluşturmak için Ollama’yı kullanıyorum:

#!/bin/bash
# ansible_helper.sh

TASK_DESCRIPTION="$1"

curl -s http://localhost:11434/api/generate 
  -d "{
    "model": "codellama",
    "prompt": "Write an Ansible playbook task for: $TASK_DESCRIPTION. Only output valid YAML, no explanations.",
    "stream": false
  }" | python3 -c 'import json,sys; print(json.load(sys.stdin)["response"])'

Kullanımı:

./ansible_helper.sh "Install and configure nginx on Ubuntu with SSL"

Senaryo 3: Ağ Sorun Giderme Asistanı

#!/bin/bash
# network_troubleshoot.sh
# Ağ sorunlarını Ollama ile analiz et

echo "=== Ağ Durumu Toplaniyor ==="

NETWORK_INFO=$(cat <<EOF
Routing tablosu:
$(ip route show)

Aktif bağlantılar:
$(ss -tuln | head -30)

Son ağ hataları:
$(dmesg | grep -i "error|fail|drop" | tail -20)

DNS durumu:
$(systemd-resolve --status | head -20)
EOF
)

ANALYSIS=$(curl -s http://localhost:11434/api/generate 
  -d "{
    "model": "llama3.2",
    "prompt": "Sen bir ağ uzmanısın. Aşağıdaki ağ bilgilerini analiz et ve potansiyel sorunları Türkçe olarak açıkla:nn$NETWORK_INFO",
    "stream": false
  }" | python3 -c 'import json,sys; print(json.load(sys.stdin)["response"])')

echo "$ANALYSIS"

Özel Model Oluşturma: Modelfile

Ollama’nın çok işe yarayan bir özelliği Modelfile. Bununla kendi özelleştirilmiş modellerini oluşturabiliyorsun. Örneğin sadece Türkçe yanıt veren, sysadmin odaklı bir model:

# sysadmin.modelfile dosyası oluştur
cat > sysadmin.modelfile << 'EOF'
FROM llama3.2

PARAMETER temperature 0.3
PARAMETER top_p 0.9
PARAMETER num_ctx 4096

SYSTEM """
Sen deneyimli bir Linux/Windows sistem yöneticisisin. Kullanıcıların sistem yönetimi, 
ağ sorun giderme, otomasyon ve güvenlik sorularına cevap veriyorsun.

Kurallar:
- Her zaman Türkçe yanıt ver
- Pratik, çalışabilir çözümler sun
- Komutları code block içinde göster
- Güvenlik uyarılarını belirt
- Production ortamları için dikkatli ol
"""
EOF

# Modeli oluştur
ollama create sysadmin-tr -f sysadmin.modelfile

# Test et
ollama run sysadmin-tr "Nginx'te rate limiting nasıl yapılandırılır?"

Modelfile’da kullanabileceğin temel parametreler:

  • FROM: Temel model (ollama library’den veya yerel dosya)
  • PARAMETER temperature: Yanıtın yaratıcılığı (0=deterministik, 1=yaratıcı)
  • PARAMETER top_p: Olasılık kümülasyonu, diversity kontrolü
  • PARAMETER num_ctx: Context window boyutu (token sayısı)
  • SYSTEM: Sistem promptu, modelin kişiliğini ve rolünü belirler
  • TEMPLATE: Prompt formatını özelleştirir

Performans Optimizasyonu

GPU Bellek Yönetimi

Ollama modeli yükledikten sonra varsayılan olarak 5 dakika bellekte tutar. Bunu değiştirmek için:

# Ortam değişkeni ile ayarlama
export OLLAMA_KEEP_ALIVE=10m  # 10 dakika
export OLLAMA_KEEP_ALIVE=-1   # Hiç boşaltma
export OLLAMA_KEEP_ALIVE=0    # Kullanım sonrası hemen boşalt

Systemd servisi üzerinden kalıcı olarak ayarlamak için:

sudo systemctl edit ollama

Açılan editöre şunu ekle:

[Service]
Environment="OLLAMA_KEEP_ALIVE=30m"
Environment="OLLAMA_NUM_PARALLEL=2"
Environment="OLLAMA_MAX_LOADED_MODELS=2"

Ardından servisi yeniden başlat:

sudo systemctl daemon-reload
sudo systemctl restart ollama

Paralel İstekler

Birden fazla istek aynı anda geliyorsa paralel işlemeyi aktif et:

Environment="OLLAMA_NUM_PARALLEL=4"

Bu özellikle birden fazla kullanıcının aynı anda kullandığı bir iç araç geliştiriyorsan önemli.

Güvenlik Yapılandırması

Varsayılan olarak Ollama sadece localhost’tan erişilebilir, bu iyi. Ama ağ üzerinden erişim açmak istersen dikkatli olmalısın.

Ollama’yı ağda expose etmek için:

Environment="OLLAMA_HOST=0.0.0.0:11434"

Ancak bunu açarsan mutlaka önüne bir reverse proxy koy. Nginx ile basit bir auth:

# /etc/nginx/sites-available/ollama
server {
    listen 443 ssl;
    server_name ollama.internal.sirket.com;

    ssl_certificate /etc/ssl/certs/internal.crt;
    ssl_certificate_key /etc/ssl/private/internal.key;

    location / {
        auth_basic "Ollama API";
        auth_basic_user_file /etc/nginx/.ollama_htpasswd;

        proxy_pass http://127.0.0.1:11434;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Htpasswd dosyası oluştur:

sudo apt install apache2-utils
sudo htpasswd -c /etc/nginx/.ollama_htpasswd apiuser

Kullanışlı Open WebUI Entegrasyonu

Ollama’yı komut satırından kullanmak her zaman pratik değil. Open WebUI ile ChatGPT benzeri bir arayüz kurabilirsin:

docker run -d 
  -p 3000:8080 
  --add-host=host.docker.internal:host-gateway 
  -v open-webui:/app/backend/data 
  -e OLLAMA_BASE_URL=http://host.docker.internal:11434 
  --name open-webui 
  --restart always 
  ghcr.io/open-webui/open-webui:main

Tarayıcıdan http://localhost:3000 adresine girince tam özellikli bir AI chat arayüzü geliyor. Dosya yükleme, konuşma geçmişi, model seçimi gibi özellikler de dahil. Takımınızla paylaşmak istersen bu yolu tercih et.

Model Kütüphanesi ve Seçim Rehberi

ollama.com/library adresinde yüzlerce model mevcut. En sık kullandıklarım:

  • llama3.2:3b: Hızlı görevler, CLI script entegrasyonu, düşük kaynaklı sunucular
  • llama3.1:8b: Günlük asistan görevleri, iyi denge noktası
  • codellama:13b: Kod yazma, review, debug için
  • mistral:7b: Genel amaçlı, Llama’ya iyi alternatif
  • deepseek-coder-v2: Ciddi kod işleri için, çok güçlü
  • nomic-embed-text: Embedding görevleri, RAG sistemleri için
  • llava: Multimodal, görüntü analizi yapabiliyor

Model boyutunu tag ile belirtebilirsin:

ollama pull llama3.1:8b
ollama pull llama3.1:70b
ollama pull llama3.1:8b-instruct-q4_0  # Quantization belirtimi

Quantization (q4, q5, q8) model boyutunu ve kaliteyi etkiliyor. q4_0 en küçük, q8_0 en kaliteli ama en büyük. Kaynaklarına göre seçim yap.

Monitoring ve Sorun Giderme

Ollama’nın durumunu izlemek için:

# API üzerinden model bilgisi
curl http://localhost:11434/api/tags

# Çalışan model bilgisi
curl http://localhost:11434/api/ps

# Servis logları
journalctl -u ollama -f

# GPU kullanımı (NVIDIA)
watch -n 1 nvidia-smi

Sık karşılaşılan sorunlar:

  • “model not found” hatası: ollama pull modeladi ile önce indir
  • Yavaş yanıt: GPU kullanılmıyor olabilir, nvidia-smi kontrol et
  • Out of memory: Daha küçük model veya quantization dene
  • Port çakışması: OLLAMA_HOST ortam değişkeniyle portu değiştir

Sonuç

Ollama, yerel LLM çalıştırma konusunda gerçekten bir devrim. Birkaç yıl önce bu kadar büyük modelleri kendi sunucunda çalıştırmak için ciddi DevOps bilgisi ve çok fazla uğraş gerekiyordu. Şimdi tek bir komutla hallolabiliyor.

Sysadmin olarak benim için en büyük kazanım otomasyon tarafında oldu. Log analizi, script yazma yardımı, dokümantasyon oluşturma gibi görevlerde Ollama’yı script’lerime entegre etmek işimi ciddi ölçüde hızlandırdı. Üstelik şirket verilerinin dışarı çıkmadığından emin olarak bu işi yapabilmek paha biçilemez.

Başlangıç için önerim şu sırayı takip etmeni: Önce ollama run llama3.2 ile basit bir test yap, ardından REST API’yi curl ile dene, sonra kendi script’lerine entegre etmeye başla. Kaynakların yeterliyse Open WebUI ekle ve takımınla paylaş. Modelfile özelliğini keşfettiğinde ise işlerin nasıl özelleştirilebileceğini göreceksin.

Yerel AI altyapısı kurmak artık bir haftalık proje değil, öğle arası işi. Dene ve gör.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir