Ollama ile Llama 3 Modeli İndirme ve Kullanma
Yerel ortamınızda büyük dil modeli çalıştırmak artık sandığınızdan çok daha kolay. Ollama, karmaşık kurulum süreçlerini ortadan kaldırarak birkaç komutla production kalitesinde modelleri ayağa kaldırmanızı sağlıyor. Bu yazıda Meta’nın Llama 3 modelini Ollama üzerinden nasıl indireceğinizi, yapılandıracağınızı ve gerçek sysadmin senaryolarında nasıl kullanacağınızı ele alacağız.
Ollama Nedir ve Neden Kullanmalıyız
Ollama, open source büyük dil modellerini yerel makinenizde çalıştırmanızı sağlayan bir araçtır. Docker’ın container yönetimini basitleştirdiği gibi, Ollama da LLM yönetimini basitleştiriyor. Model indirme, çalıştırma, silme ve versiyonlama işlemlerini tek bir CLI üzerinden yönetebiliyorsunuz.
Sysadmin açısından bakıldığında Ollama’nın en büyük avantajları şunlar:
- Veri gizliliği: Hassas log dosyalarını, konfigürasyon içeriklerini veya iç ağ bilgilerini harici bir API’ye göndermek zorunda kalmıyorsunuz
- Maliyet kontrolü: Token başına ücretlendirme yok, çalıştırdığınız donanım kadar ödüyorsunuz
- Offline çalışma: İnternet bağlantısı olmayan air-gapped ortamlarda bile kullanabiliyorsunuz
- API uyumluluğu: OpenAI API formatıyla uyumlu endpoint sunuyor, mevcut araçlarınızı kolayca entegre edebiliyorsunuz
Sistem Gereksinimleri
Llama 3’ü çalıştırmadan önce donanım durumunuzu değerlendirmeniz gerekiyor. Model boyutuna göre minimum gereksinimler değişiyor.
Llama 3 8B modeli için:
- RAM: Minimum 8 GB, önerilen 16 GB
- Disk: Yaklaşık 4.7 GB boş alan (4-bit quantized)
- CPU: Modern multi-core işlemci (AVX2 desteği önemli)
- GPU (opsiyonel): NVIDIA GPU için CUDA 11.8+, AMD için ROCm 5.6+
Llama 3 70B modeli için:
- RAM: Minimum 48 GB (CPU only), GPU ile daha az
- Disk: Yaklaşık 40 GB boş alan
- GPU: 24 GB+ VRAM önerilen
Donanım bilgilerinizi hızlıca kontrol etmek için:
# RAM durumu
free -h
# CPU bilgisi ve AVX2 desteği
grep -m1 'model name' /proc/cpuinfo
grep -o 'avx2' /proc/cpuinfo | head -1
# Disk durumu
df -h /home
# NVIDIA GPU varsa
nvidia-smi --query-gpu=name,memory.total,memory.free --format=csv
Ollama Kurulumu
Linux Üzerinde Kurulum
Linux için resmi kurulum scripti en hızlı yöntem:
# Resmi kurulum scripti
curl -fsSL https://ollama.com/install.sh | sh
# Kurulumun başarılı olduğunu doğrula
ollama --version
# Servis durumunu kontrol et
systemctl status ollama
Kurulum scripti çalıştırmak istemeyenler için manuel kurulum:
# Binary'yi direkt indir
curl -L https://ollama.com/download/ollama-linux-amd64 -o /usr/local/bin/ollama
chmod +x /usr/local/bin/ollama
# Systemd servis dosyası oluştur
cat > /etc/systemd/system/ollama.service << 'EOF'
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="HOME=/usr/share/ollama"
Environment="OLLAMA_HOST=0.0.0.0:11434"
[Install]
WantedBy=default.target
EOF
# Ollama kullanıcısı oluştur
useradd -r -s /bin/false -m -d /usr/share/ollama ollama
# Servisi etkinleştir ve başlat
systemctl daemon-reload
systemctl enable ollama
systemctl start ollama
macOS Üzerinde Kurulum
# Homebrew ile kurulum
brew install ollama
# Servisi başlat
brew services start ollama
# Ya da direkt çalıştır
ollama serve
Llama 3 Modelini İndirme
Ollama kurulduktan sonra Llama 3 modelini indirmek tek satır komut:
# Llama 3 8B modelini indir (önerilen başlangıç modeli)
ollama pull llama3
# Belirli bir tag ile indir
ollama pull llama3:8b
# Daha büyük model için
ollama pull llama3:70b
# İndirme işlemini listele ve doğrula
ollama list
İndirme sırasında progress bar göreceksiniz. Ağ hızınıza göre 8B model 10-30 dakika arasında inebilir. İndirme yarıda kesilirse tekrar ollama pull komutunu çalıştırdığınızda kaldığı yerden devam ediyor, bu özellik özellikle yavaş bağlantılarda çok işe yarıyor.
Model dosyaları varsayılan olarak ~/.ollama/models dizinine kaydediliyor. Disk yönetimi açısından bu konumu değiştirmek isteyebilirsiniz:
# Model dizinini değiştir (servis dosyasına ekle ya da .bashrc'ye ekle)
export OLLAMA_MODELS=/data/ollama/models
# Mevcut modellerin disk kullanımını kontrol et
du -sh ~/.ollama/models/*
İlk Kullanım: Temel Komutlar
Model indirildikten sonra hemen kullanmaya başlayabilirsiniz:
# İnteraktif sohbet modu
ollama run llama3
# Tek seferlik sorgu (pipe ile kullanım)
echo "Linux'ta zombie process nedir ve nasıl temizlenir?" | ollama run llama3
# Dosya içeriğini modele gönder
cat /var/log/nginx/error.log | ollama run llama3 "Bu hata logunu analiz et ve olası nedenleri listele"
# Çıktıyı dosyaya kaydet
ollama run llama3 "Bash script ile disk kullanım raporu oluştur" > disk_report_script.sh
İnteraktif modda bazı kullanışlı komutlar:
- /bye: Oturumu kapat
- /clear: Sohbet geçmişini temizle
- /set parameter: Model parametrelerini değiştir
- /show info: Model bilgilerini göster
REST API Kullanımı
Ollama, localhost:11434 üzerinde bir REST API sunuyor. Bu API özellikle otomasyon ve entegrasyon senaryolarında çok değerli:
# API ile basit sorgu
curl http://localhost:11434/api/generate
-d '{
"model": "llama3",
"prompt": "Nginx 502 Bad Gateway hatasının en yaygın nedenleri nelerdir?",
"stream": false
}'
# Streaming yanıt
curl http://localhost:11434/api/generate
-d '{
"model": "llama3",
"prompt": "PostgreSQL vakuum işlemi hakkında açıkla",
"stream": true
}'
# Sohbet API endpoint (OpenAI uyumlu)
curl http://localhost:11434/api/chat
-d '{
"model": "llama3",
"messages": [
{
"role": "system",
"content": "Sen deneyimli bir Linux sistem yöneticisisin."
},
{
"role": "user",
"content": "Sunucumda yüksek I/O wait sorunu var, nasıl analiz ederim?"
}
],
"stream": false
}'
Gerçek Dünya Senaryoları
Senaryo 1: Log Analizi Otomasyonu
Günlük log analizi için bir bash scripti oluşturabilirsiniz. Bu senaryo özellikle alarm fatigue yaşayan ekipler için çok işe yarıyor:
#!/bin/bash
# log_analyzer.sh - Ollama ile otomatik log analizi
LOG_FILE="${1:-/var/log/syslog}"
REPORT_DIR="/var/reports/llm_analysis"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p "$REPORT_DIR"
# Son 1 saatin kritik loglarını çek
RECENT_ERRORS=$(grep -E "ERROR|CRITICAL|FATAL|OOM|panic" "$LOG_FILE"
| tail -50
| head -c 4000) # Token limitini aşmamak için boyut sınırla
if [ -z "$RECENT_ERRORS" ]; then
echo "Son 1 saatte kritik hata bulunamadı."
exit 0
fi
# Ollama ile analiz et
ANALYSIS=$(echo "$RECENT_ERRORS" | ollama run llama3
"Aşağıdaki sistem log kayıtlarını analiz et.
1. Kritik sorunları özetle
2. Olası root cause'ları listele
3. Önerilen aksiyon adımlarını ver
Türkçe yanıt ver.")
# Raporu kaydet
{
echo "# Log Analiz Raporu - $DATE"
echo "## Analiz Edilen Log Dosyası: $LOG_FILE"
echo ""
echo "## Ham Loglar"
echo '```'
echo "$RECENT_ERRORS"
echo '```'
echo ""
echo "## LLM Analizi"
echo "$ANALYSIS"
} > "$REPORT_DIR/report_$DATE.md"
echo "Rapor oluşturuldu: $REPORT_DIR/report_$DATE.md"
Senaryo 2: Bash Script Yazma Asistanı
Sık sık benzer script’ler yazmak zorunda kalıyorsanız bu workflow çok zaman kazandırıyor:
# Komut satırından hızlı script oluşturma
generate_script() {
local description="$1"
local output_file="$2"
echo "Script oluşturuluyor: $description"
ollama run llama3
"Aşağıdaki görevi yapan üretim kalitesinde bir bash script yaz.
Script'te error handling, logging ve kullanım mesajı olsun.
Sadece kodu yaz, açıklama ekleme.
Görev: $description" > "$output_file"
chmod +x "$output_file"
echo "Script oluşturuldu: $output_file"
}
# Kullanım örneği
generate_script
"Her gün gece 2'de /var/backups dizinine PostgreSQL dump alan ve 7 günden eski dosyaları silen script"
"/usr/local/bin/pg_backup.sh
Senaryo 3: Modelfile ile Özelleştirilmiş Asistan
Ollama’nın en güçlü özelliklerinden biri Modelfile ile kendi özelleştirilmiş modelinizi oluşturabilmek:
# Sysadmin odaklı özelleştirilmiş model oluştur
cat > /tmp/SysadminAssistant << 'EOF'
FROM llama3
PARAMETER temperature 0.3
PARAMETER top_p 0.9
PARAMETER num_ctx 4096
SYSTEM """
Sen deneyimli bir Linux ve Windows sistem yöneticisisin.
Görevlerin:
- Sistem sorunlarını tanımlayıp çözüm üretmek
- Güvenli ve production-ready komutlar önermek
- Her zaman komutların risklerini belirtmek
- Türkçe yanıt vermek
- Belirsiz durumlarda önce soru sormak, sonra öneri vermek
Yanıt formatın:
1. Sorunun özeti
2. Olası nedenler
3. Tanı komutları
4. Çözüm adımları
5. Önleyici tedbirler
"""
EOF
# Özelleştirilmiş modeli oluştur
ollama create sysadmin-assistant -f /tmp/SysadminAssistant
# Yeni modeli test et
ollama run sysadmin-assistant "Sunucumda load average 20'nin üzerinde, nasıl analiz ederim?"
Model Yönetimi ve Bakım
Birden fazla modelle çalışırken düzenli bakım önemli:
# Yüklü modelleri listele
ollama list
# Model hakkında detaylı bilgi
ollama show llama3
# Kullanılmayan modeli sil
ollama rm llama3:70b
# Modeli başka isimle kopyala
ollama cp llama3 llama3-backup
# Çalışan Ollama process'lerini gör
ps aux | grep ollama
# Ollama'nın bellek kullanımını izle
watch -n 5 'ps aux | grep ollama | grep -v grep | awk "{print $4, $6}"'
# Bir model ne kadar süredir yüklü, API ile kontrol et
curl -s http://localhost:11434/api/tags | python3 -m json.tool
Performans Optimizasyonu
Özellikle CPU ile çalışıyorsanız bazı optimizasyonlar işe yarıyor:
# Thread sayısını ayarla (CPU core sayısına göre)
export OLLAMA_NUM_PARALLEL=2
export OLLAMA_MAX_LOADED_MODELS=1
# GPU katman sayısını ayarla (GPU kullanıyorsanız)
# Modelfile içinde ya da API parametresiyle
curl http://localhost:11434/api/generate
-d '{
"model": "llama3",
"prompt": "Merhaba",
"options": {
"num_gpu": 35,
"num_thread": 8,
"num_ctx": 2048,
"temperature": 0.7
},
"stream": false
}'
# Ollama servisini belirli bir interface'e bağla (güvenlik için)
# /etc/systemd/system/ollama.service.d/override.conf
mkdir -p /etc/systemd/system/ollama.service.d/
cat > /etc/systemd/system/ollama.service.d/override.conf << 'EOF'
[Service]
Environment="OLLAMA_HOST=127.0.0.1:11434"
Environment="OLLAMA_NUM_PARALLEL=1"
Environment="OLLAMA_MAX_LOADED_MODELS=2"
EOF
systemctl daemon-reload
systemctl restart ollama
Güvenlik Dikkat Noktaları
Ollama’yı sunucuya kurduğunuzda göz ardı etmemesi gereken birkaç güvenlik konusu var:
- Network erişimi: Varsayılan olarak
0.0.0.0:11434üzerinde dinliyor, production’da bunu127.0.0.1olarak kısıtlayın - Reverse proxy: Dışarıya açmak zorundaysanız Nginx ile basic auth ekleyin
- Log içerikleri: Modele gönderilen her şey Ollama loglarında görünebilir, hassas data göndermeden önce logların nereye gittiğini kontrol edin
- Resource limitleri: Sistemd service’e
MemoryLimitveCPUQuotaekleyerek diğer servislerin etkilenmesini önleyin
# Nginx ile reverse proxy ve basic auth
apt-get install apache2-utils nginx
htpasswd -c /etc/nginx/.ollama_htpasswd admin
cat > /etc/nginx/sites-available/ollama << 'EOF'
server {
listen 443 ssl;
server_name llm.sirketiniz.local;
ssl_certificate /etc/ssl/certs/sirket.crt;
ssl_certificate_key /etc/ssl/private/sirket.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;
}
}
EOF
Monitoring ve Alerting
Ollama’yı production’da kullanıyorsanız izleme şart:
#!/bin/bash
# ollama_healthcheck.sh
OLLAMA_URL="http://localhost:11434"
ALERT_EMAIL="[email protected]"
# API erişilebilirliği kontrol et
if ! curl -sf "$OLLAMA_URL/api/tags" > /dev/null 2>&1; then
echo "CRITICAL: Ollama API erişilemiyor" |
mail -s "Ollama Health Alert" "$ALERT_EMAIL"
systemctl restart ollama
exit 1
fi
# Basit inference testi
RESPONSE=$(curl -sf "$OLLAMA_URL/api/generate"
-d '{"model":"llama3","prompt":"1+1=","stream":false}'
| python3 -c "import sys,json; print(json.load(sys.stdin).get('response',''))" 2>/dev/null)
if [ -z "$RESPONSE" ]; then
echo "WARNING: Ollama inference çalışmıyor" |
mail -s "Ollama Inference Alert" "$ALERT_EMAIL"
fi
echo "OK: Ollama sağlıklı çalışıyor"
Bu scripti crontab’a ekleyin:
# Her 5 dakikada kontrol et
*/5 * * * * /usr/local/bin/ollama_healthcheck.sh >> /var/log/ollama_health.log 2>&1
Sonuç
Ollama ile Llama 3 kombinasyonu, yerel LLM kullanımını gerçekten pratik hale getiriyor. Log analizi, script üretimi, dokümantasyon hazırlama ve troubleshooting gibi günlük sysadmin görevlerinde ciddi zaman tasarrufu sağlıyor. En önemli avantajı veri gizliliği konusunda: hassas sistem bilgilerini harici servislere göndermek zorunda kalmıyorsunuz.
Başlangıç için 8B modeli öneririm. 16 GB RAM olan herhangi bir makinede rahatlıkla çalışıyor ve günlük sysadmin ihtiyaçları için yeterince kapasiteli. 70B modeline geçiş ancak çok karmaşık analizler yapmanız gerektiğinde mantıklı oluyor.
Modelfile ile özelleştirilmiş asistan oluşturmak ise işin gerçekten güçlü tarafı. Ekibinizin terminolojisini, şirket içi konvansiyonlarınızı ve tercih ettiğiniz yanıt formatını modele öğreterek takım genelinde standart bir AI asistanı elde edebilirsiniz. Bunu bir internal Modelfile registry’ye koyup tüm ekibin aynı modeli kullanmasını sağlamak mükemmel bir kurumsal kullanım senaryosu.
Bir sonraki adım olarak Open WebUI ile Ollama’ya güzel bir arayüz eklemek ve bu kurulumu Kubernetes üzerinde çalıştırmak hakkında yazı yazmayı planlıyorum.
