Gemma ve Phi-3 Modellerini Ollama ile Kullanma
Yapay zeka dünyası son birkaç yılda inanılmaz bir hıza ulaştı ve artık bu modelleri kendi sunucularımızda, kendi kontrolümüzde çalıştırmak hem mümkün hem de oldukça pratik hale geldi. Ollama, bu sürecin tam merkezinde yer alan bir araç. Google’ın Gemma serisi ve Microsoft’un Phi-3 modelleri ise boyutları küçük ama yetenekleri oldukça etkileyici iki seçenek. Bu yazıda bu iki modeli Ollama üzerinde nasıl kurup yöneteceğinizi, production ortamında nasıl kullanabileceğinizi ve sysadmin gözüyle nelere dikkat etmeniz gerektiğini konuşacağız.
Neden Gemma ve Phi-3?
Önce şunu netleştirelim: Neden bu iki model? Çünkü her ikisi de “small but mighty” kategorisine giriyor. GPT-4 ya da Claude gibi devasa modelleri kendi sunucunuzda çalıştırmak için ciddi bir GPU altyapısına ihtiyacınız var. Ama Gemma 2B/7B ve Phi-3 Mini/Small gibi modeller, orta sınıf bir sunucuda, hatta gelişmiş bir laptop üzerinde bile tatmin edici şekilde çalışabiliyor.
Gemma, Google DeepMind tarafından geliştirilen açık ağırlıklı bir model serisi. Gemma 2B neredeyse her makinede koşarken Gemma 7B biraz daha fazla kaynak istiyor. Kod üretimi, özetleme ve soru-cevap konularında oldukça başarılı.
Phi-3 ise Microsoft Research’ün “küçük dil modeli” araştırmalarının meyvesi. Phi-3 Mini 3.8 milyar parametre ile çalışırken Phi-3 Small 7 milyar parametreye çıkıyor. Phi modellerinin ilginç yanı, eğitim verilerinin kalitesine yapılan aşırı vurgu. Microsoft, bu modelleri “textbook quality” veriyle eğittiğini söylüyor ve sonuçlar gerçekten iddialı.
Ollama Kurulumu
Başlamadan önce Ollama’nın düzgün kurulu olduğundan emin olalım. Linux üzerinde kurulum tek satır:
curl -fsSL https://ollama.com/install.sh | sh
Kurulum sonrası servisin ayakta olduğunu kontrol edin:
systemctl status ollama
systemctl enable ollama
Ollama varsayılan olarak 11434 portunda dinliyor. Eğer uzaktan erişim istiyorsanız, servis konfigürasyonunu düzenlemeniz gerekiyor:
sudo systemctl edit ollama
Açılan editöre şunu ekleyin:
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Sonra servisi yeniden başlatın:
sudo systemctl daemon-reload
sudo systemctl restart ollama
Güvenlik notu: Eğer Ollama’yı dışarıya açıyorsanız, önüne mutlaka bir reverse proxy (Nginx veya Caddy) ve kimlik doğrulama koyun. Aksi takdirde herkes sizin modellerinizi ücretsiz kullanabilir.
Gemma Modelini İndirme ve İlk Test
Şimdi asıl konumuza gelelim. Gemma’yı indirmek için:
# Gemma 2B - yaklaşık 1.7GB
ollama pull gemma:2b
# Gemma 7B - yaklaşık 4.8GB
ollama pull gemma:7b
# Gemma2 serisi (daha güncel)
ollama pull gemma2:9b
İndirme tamamlandıktan sonra hızlı bir test yapalım:
ollama run gemma:2b "Linux sisteminde açık portları listeleyen bir komut yazar mısın?"
Modelin yüklenmesi ilk seferinde birkaç saniye sürebilir, ama sonraki çalıştırmalarda bu süre çok kısalır çünkü model bellekte kalıyor.
Eğer interaktif modda çalışmak istiyorsanız sadece model adını verin:
ollama run gemma2:9b
Bu sizi bir chat arayüzüne götürür. /bye yazarak çıkabilirsiniz.
Phi-3 Modelini İndirme ve Konfigürasyon
Phi-3 için süreç benzer:
# Phi-3 Mini - yaklaşık 2.3GB, en hafif seçenek
ollama pull phi3:mini
# Phi-3 Medium - daha güçlü ama daha fazla RAM
ollama pull phi3:medium
# Phi-3.5 Mini - güncel versiyon
ollama pull phi3.5
Phi-3’ü çalıştıralım:
ollama run phi3:mini "Bir Python scripti yaz: /var/log dizinindeki tüm log dosyalarını tara ve 'ERROR' içerenleri raporla"
Phi-3’ün kod üretme konusundaki performansı gerçekten dikkat çekici. Microsoft’un eğitim veri kalitesine yaptığı vurgu burada kendini gösteriyor.
Modelfile ile Özelleştirme
Ollama’nın en güçlü özelliklerinden biri Modelfile sistemi. Bununla kendi sistem promptlarınızı, parametrelerinizi ve davranışlarınızı tanımlayan özel modeller oluşturabilirsiniz.
Bir sysadmin asistanı oluşturalım. Önce bir Modelfile yazın:
cat > /opt/ollama/Modelfile.sysadmin << 'EOF'
FROM gemma2:9b
PARAMETER temperature 0.3
PARAMETER top_p 0.9
PARAMETER num_ctx 4096
SYSTEM """
Sen deneyimli bir Linux sistem yöneticisisin. Görevin:
- Sistem yönetimi, ağ konfigürasyonu ve güvenlik konularında yardım etmek
- Her zaman pratik, çalışır komutlar ve scriptler üretmek
- Güvenlik risklerini açıkça belirtmek
- Türkçe cevap vermek
- Komutları çalıştırmadan önce ne yapacaklarını açıklamak
Asla belirsiz veya teorik cevaplar verme. Her zaman somut, uygulanabilir çözümler sun.
"""
EOF
Bu Modelfile’dan yeni bir model oluşturun:
ollama create sysadmin-assistant -f /opt/ollama/Modelfile.sysadmin
Test edelim:
ollama run sysadmin-assistant "Sunucumda memory leak var gibi görünüyor, nasıl tespit ederim?"
Aynı mantıkla Phi-3 tabanlı bir güvenlik odaklı model de oluşturabilirsiniz:
cat > /opt/ollama/Modelfile.security << 'EOF'
FROM phi3:medium
PARAMETER temperature 0.1
PARAMETER top_p 0.85
PARAMETER num_ctx 8192
SYSTEM """
Sen bir siber güvenlik uzmanısın. Güvenlik açıklarını, log analizini ve sistem sertleştirmeyi
(hardening) konularında uzman yardımı sağlıyorsun. Her zaman savunma odaklı yaklaş.
Türkçe cevap ver.
"""
EOF
ollama create security-assistant -f /opt/ollama/Modelfile.security
API ile Entegrasyon
Gerçek dünya kullanımında modelleri çoğunlukla API üzerinden çağıracaksınız. Ollama, OpenAI uyumlu bir REST API sunuyor. Bu büyük bir avantaj çünkü mevcut araçlarınızı neredeyse sıfır değişiklikle Ollama’ya yönlendirebilirsiniz.
Basit bir API çağrısı:
curl -s http://localhost:11434/api/generate
-H "Content-Type: application/json"
-d '{
"model": "gemma2:9b",
"prompt": "Nginx reverse proxy konfigürasyonu için örnek bir config yaz",
"stream": false
}' | python3 -m json.tool
Streaming ile (gerçek zamanlı çıktı için):
curl -s http://localhost:11434/api/generate
-H "Content-Type: application/json"
-d '{
"model": "phi3:mini",
"prompt": "Bash ile sistem monitoring scripti yaz",
"stream": true
}'
Chat formatında (konuşma geçmişi ile):
curl -s http://localhost:11434/api/chat
-H "Content-Type: application/json"
-d '{
"model": "sysadmin-assistant",
"messages": [
{
"role": "user",
"content": "Sunucumda disk doluluk oranı nasıl izlerim?"
}
],
"stream": false
}' | python3 -c "import sys,json; print(json.load(sys.stdin)['message']['content'])"
Gerçek Dünya Senaryosu: Log Analiz Otomasyonu
Şimdi bunu gerçek bir senaryoya dönüştürelim. Diyelim ki her gece sistem loglarınızı analiz ettirip özetini almak istiyorsunuz. İşte bunun için bir script:
#!/bin/bash
# /usr/local/bin/log-analyzer.sh
# Sistem loglarını Ollama ile analiz et
OLLAMA_URL="http://localhost:11434/api/generate"
MODEL="gemma2:9b"
LOG_FILE="/var/log/syslog"
REPORT_DIR="/var/reports/ai-analysis"
DATE=$(date +%Y-%m-%d)
mkdir -p "$REPORT_DIR"
# Son 1 saatin kritik loglarını topla
RECENT_LOGS=$(grep -E "(ERROR|CRITICAL|FAILED|FATAL)" "$LOG_FILE" |
tail -50 |
sed 's/[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}/[IP_REDACTED]/g')
if [ -z "$RECENT_LOGS" ]; then
echo "[$DATE] Analiz edilecek kritik log bulunamadı" >> "$REPORT_DIR/summary.log"
exit 0
fi
# JSON payload oluştur
PROMPT="Aşağıdaki sistem loglarını analiz et. Kritik sorunları, olası nedenleri ve önerilen çözümleri Türkçe olarak özetle. Loglar:nn$RECENT_LOGS"
PAYLOAD=$(jq -n
--arg model "$MODEL"
--arg prompt "$PROMPT"
'{model: $model, prompt: $prompt, stream: false}')
# API çağrısı yap
RESPONSE=$(curl -s -X POST "$OLLAMA_URL"
-H "Content-Type: application/json"
-d "$PAYLOAD"
--max-time 120)
# Yanıtı parse et ve kaydet
echo "$RESPONSE" | python3 -c "
import sys, json
data = json.load(sys.stdin)
if 'response' in data:
print(data['response'])
" > "$REPORT_DIR/analysis-$DATE.txt"
echo "[$DATE] Log analizi tamamlandı: $REPORT_DIR/analysis-$DATE.txt"
Bu scripti cron’a ekleyin:
chmod +x /usr/local/bin/log-analyzer.sh
echo "0 */6 * * * root /usr/local/bin/log-analyzer.sh" >> /etc/cron.d/ai-log-analyzer
Model Yönetimi ve Performans İpuçları
Zamanla birden fazla model biriktirmeye başlarsınız. Yönetim komutlarına bir göz atalım:
# Yüklü modelleri listele
ollama list
# Çalışan modelleri gör
ollama ps
# Belirli bir modeli kaldır
ollama rm phi3:mini
# Model bilgisini görüntüle
ollama show gemma2:9b --modelfile
ollama show gemma2:9b --parameters
Performans için önemli çevre değişkenleri:
- OLLAMA_NUM_PARALLEL: Aynı anda işlenecek istek sayısı. Varsayılan 1, yoğun kullanımda 4-8 arası ayarlayabilirsiniz.
- OLLAMA_MAX_LOADED_MODELS: Bellekte tutulacak maksimum model sayısı.
- OLLAMA_KEEP_ALIVE: Modelin bellekte kalacağı süre.
5m,1hveya-1(süresiz) kullanabilirsiniz.
Bu değişkenleri systemd servis dosyasına ekleyin:
sudo systemctl edit ollama
[Service]
Environment="OLLAMA_NUM_PARALLEL=4"
Environment="OLLAMA_MAX_LOADED_MODELS=2"
Environment="OLLAMA_KEEP_ALIVE=10m"
Environment="OLLAMA_HOST=0.0.0.0:11434"
RAM ve GPU Hesaplamaları
Hangi modeli seçeceğiniz büyük ölçüde donanımınıza bağlı. Pratik bir rehber olarak:
- Phi-3 Mini (3.8B, 4-bit quantized): Yaklaşık 3-4 GB RAM yeterli. GPU olmadan da çalışır.
- Gemma 2B (4-bit quantized): 2-3 GB RAM. Çok hafif, CI/CD pipeline’larında bile kullanılabilir.
- Gemma 7B / Phi-3 Small: 6-8 GB RAM. GPU varsa çok daha hızlı.
- Gemma2 9B: 8-10 GB RAM. Bu boyuttan itibaren GPU ciddi fark yaratır.
GPU kullanımını kontrol edin:
# NVIDIA GPU varsa
nvidia-smi
# Ollama GPU kullanıyor mu?
ollama run phi3:mini "" 2>&1 | head -5
# Daha detaylı
OLLAMA_DEBUG=1 ollama run gemma2:9b "test" 2>&1 | grep -i gpu
Nginx ile Reverse Proxy Kurulumu
Production ortamında Ollama’yı direkt açmak yerine Nginx arkasına almak daha güvenli:
cat > /etc/nginx/sites-available/ollama << 'EOF'
upstream ollama_backend {
server 127.0.0.1:11434;
keepalive 32;
}
server {
listen 443 ssl;
server_name ai.sirketiniz.com;
ssl_certificate /etc/ssl/certs/sirketiniz.crt;
ssl_certificate_key /etc/ssl/private/sirketiniz.key;
# Basit API key kontrolü
location /api/ {
if ($http_x_api_key != "gizli-api-anahtariniz") {
return 401 "Unauthorized";
}
proxy_pass http://ollama_backend;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_read_timeout 300s;
proxy_buffering off;
}
}
EOF
ln -s /etc/nginx/sites-available/ollama /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
Gemma ve Phi-3 Arasında Seçim Yapmak
Bu ikisini aynı prompt ile test etmek, hangisinin işinize daha uygun olduğunu görmek için en iyi yol. Genel deneyimlere dayanarak:
Gemma modellerini şu durumlar için tercih edin:
- Türkçe dahil çok dilli içerik üretimi gerektiğinde
- Yaratıcı yazma veya özetleme görevlerinde
- Daha geniş genel bilgi kapsamı istediğinizde
Phi-3 modellerini şu durumlar için tercih edin:
- Kod üretimi ve teknik analiz öncelikliyse
- Mantık yürütme ve adım adım çözüm gerektiren problemlerde
- Düşük RAM kısıtı olan ortamlarda (Phi-3 Mini burada öne çıkıyor)
İkisini birden kullanmak da mümkün. Farklı görevler için farklı modeller çağıran bir orkestrasyon scripti yazabilirsiniz.
İzleme ve Monitoring
Ollama’yı production’da kullanıyorsanız izleme şart:
#!/bin/bash
# /usr/local/bin/ollama-health-check.sh
OLLAMA_URL="http://localhost:11434"
# Servis durumu
if ! curl -s --max-time 5 "$OLLAMA_URL/api/tags" > /dev/null 2>&1; then
echo "CRITICAL: Ollama servisi yanıt vermiyor!"
systemctl restart ollama
exit 2
fi
# Yüklü model sayısı
MODEL_COUNT=$(curl -s "$OLLAMA_URL/api/tags" | python3 -c "
import sys, json
data = json.load(sys.stdin)
print(len(data.get('models', [])))
")
echo "OK: Ollama çalışıyor, $MODEL_COUNT model yüklü"
# Disk kullanımı kontrol
OLLAMA_DIR="/usr/share/ollama/.ollama/models"
DISK_USAGE=$(du -sh "$OLLAMA_DIR" 2>/dev/null | cut -f1)
echo "Model disk kullanımı: $DISK_USAGE"
Bu scripti Nagios, Zabbix veya basit bir cron job olarak çalıştırabilirsiniz.
Sonuç
Ollama üzerinde Gemma ve Phi-3 kullanmak, yerel yapay zeka altyapısı kurmak için oldukça erişilebilir bir yol sunuyor. Verilerinizi dışarı göndermeden, internet bağlantısı olmadan ve aylık API maliyeti ödemeden LLM gücünden yararlanabiliyorsunuz. Bu, özellikle hassas verilerle çalışan şirketler, bant genişliği kısıtlı ortamlar ve maliyet optimizasyonu peşindeki ekipler için ciddi bir avantaj.
Pratik tavsiyem şu: Başlangıçta Phi-3 Mini veya Gemma 2B ile başlayın, bunlar hemen hemen her ortamda çalışır. Kullanım senaryonuza göre Modelfile ile özelleştirin ve işinize yaradığını gördükçe daha büyük modellere geçin. Log analizi, dokümantasyon üretimi, kod review yardımcısı veya iç chatbot gibi gerçek bir iş ihtiyacı etrafında şekillendirin, yoksa “çok güzel bir demo” olmaktan öteye geçemiyor.
Ollama ekosistemi hızla gelişiyor, model kütüphanesi büyüyor ve yeni özellikler sürekli ekleniyor. Bu araçları erken öğrenmek ve altyapınıza entegre etmek, önümüzdeki dönemde ciddi bir rekabet avantajı sağlayacak.
