Bir üretim ERP’sinde, tedarik zinciri verilerini analiz ederken, o kritik bilgileri herkesin erişebildiği bir bulut tabanlı LLM’e gönderme fikri beni hep rahatsız etti. Şirkete ait özel üretim planları, müşteri listeleri veya finansal detaylar gibi hassas verilerin üçüncü taraf sunucularında işlenmesi, benim için kabul edilemez bir riskti. Bu tür durumlarda, veri güvenliğini sağlamanın tek yolu, LLM’i kendi kontrolümüzde, yerel bir ortamda çalıştırmaktan geçiyor.
İşte tam da bu noktada Ollama devreye giriyor. Ollama, büyük dil modellerini (LLM’ler) yerel sisteminizde kolayca çalıştırmanıza olanak tanıyan bir araçtır. Bu sayede, internete bağlı olmadan ve verilerinizi dışarıya sızdırma riski olmadan kendi AI asistanınızı kurabilir, hassas iş süreçlerinizi güvenle otomatikleştirebilirsiniz. Bu yazıda, Ollama’nın neden önemli olduğunu, nasıl kurulup kullanılacağını ve veri güvenliği açısından sunduğu avantajları adım adım inceleyeceğim.
Ollama Neden Önemli: Veri Güvenliği ve Kontrol Sağlar mı?
Modern yazılım geliştirme süreçlerinde ve operasyonel iş akışlarında LLM’lerin potansiyeli çok büyük, ancak kurumsal verilerin gizliliği ve güvenliği her zaman öncelikli bir endişe kaynağıdır. Özellikle bir bankanın iç platformu gibi yüksek güvenlik gerektiren ortamlarda veya kendi yan ürünümün finansal hesaplayıcılarında, kullanıcı verilerini dışarıya göndermeden işlemem gerekiyor. Bu senaryolarda, bulut tabanlı LLM servisleri genellikle bir çözüm olmaktan çok, yeni bir risk faktörü oluşturuyor.
Ollama, bu kritik veri güvenliği açığını kapatmak için tasarlanmıştır. Modelleri yerel makinenizde çalıştırarak, verilerinizin şirket ağınızın veya kişisel bilgisayarınızın dışına çıkmasını engeller. Bu, özellikle GDPR, KVKK gibi veri koruma mevzuatlarına tabi sektörlerde çalışanlar için hayati bir avantajdır. Ayrıca, internet bağlantısı gerektirmemesi sayesinde, çevrimdışı ortamlarda veya ağ kesintisi durumlarında bile LLM yeteneklerinden faydalanmaya devam edebilirsiniz. Kontrol tamamen sizde olduğu için, hangi modelin hangi verilerle çalıştığını, modelin ne kadar kaynak tükettiğini ve güvenlik politikalarının nasıl uygulandığını baştan sona yönetebilirsiniz. Bu tam kontrol, kurumsal ortamlar için vazgeçilmez bir özelliktir.
Ollama Kurulumu: Linux Sistemlerde Adım Adım Rehber
Ollama’yı Linux sistemime kurmak, genel olarak oldukça basit bir süreç. Çoğu dağıtım için tek satırlık bir komut yeterli oluyor. Ben genelde Ubuntu tabanlı dağıtımları kullandığım için, bu rehberde o ortamı referans alacağım. Kurulumdan önce sisteminizin minimum gereksinimleri karşıladığından emin olmanız önemlidir; özellikle yeterli RAM ve mümkünse bir GPU, modellerin performanslı çalışması için kritik.
İlk adım olarak, Ollama’nın resmi web sitesindeki kurulum betiğini indirip çalıştırmak en kolay yöntemdir. Bu betik, sisteminizi kontrol eder, gerekli bağımlılıkları yükler ve Ollama servisini otomatik olarak kurar.
curl -fsSL https://ollama.com/install.sh | sh
Bu komutu çalıştırdıktan sonra, Ollama servisi systemd altında otomatik olarak başlayacaktır. Servisin durumunu kontrol etmek için aşağıdaki komutu kullanabiliriz:
systemctl status ollama
Eğer kurulum başarılıysa, çıktı active (running) şeklinde bir durum gösterecektir. Bu, Ollama’nın arka planda çalışmaya hazır olduğu anlamına gelir. Kurulum sırasında herhangi bir hata alırsanız, genellikle terminal çıktısında eksik bağımlılıklar veya izin sorunları gibi ipuçları bulunur. Bu durumda, hata mesajına göre gerekli paketleri manuel olarak kurmak veya izinleri düzenlemek gerekebilir. Örneğin, GPU sürücülerinin doğru şekilde yüklü olması, özellikle büyük modeller için performansı doğrudan etkiler. Eğer Nvidia GPU kullanıyorsanız, nvidia-smi komutu ile sürücülerinizi kontrol etmeniz iyi bir alışkanlıktır.
Model Seçimi ve İndirme: Hangi LLM Sizin İçin Uygun?
Ollama’yı kurduktan sonraki en heyecan verici adım, kullanacağınız LLM modelini seçmek ve indirmektir. Ollama, birçok popüler açık kaynak modelini (Llama 2, Mistral, Gemma, Code Llama vb.) kolayca indirip çalıştırmanıza olanak tanır. Her modelin farklı boyutları, yetenekleri ve kaynak gereksinimleri vardır. Bu yüzden doğru modeli seçmek, sisteminizin donanımına ve kullanım amacınıza göre değişebilir.
Ollama’nın resmi sitesinde veya ollama run --help komutu ile mevcut modelleri ve onların kısaltmalarını görebilirsiniz. Örneğin, genel amaçlı bir model arıyorsanız llama2 iyi bir başlangıç olabilir. Daha kompakt ve hızlı bir şey arıyorsanız mistral veya gemma modellerini deneyebilirsiniz. Kod üretimi için ise codellama daha uygun olacaktır.
Bir modeli indirmek için ollama pull komutunu kullanırız:
ollama pull llama2
Bu komut, llama2 modelinin en son sürümünü indirir. İndirme işlemi, modelin boyutuna ve internet bağlantınızın hızına bağlı olarak biraz zaman alabilir. Modeller genellikle birkaç gigabayt boyutundadır, bu yüzden disk alanınızın yeterli olduğundan emin olun. Benim tecrübeme göre, ilk kurulumda genelde llama2 veya mistral ile başlıyorum, çünkü bunlar genel görevler için iyi bir denge sunuyorlar ve çok fazla kaynak tüketmiyorlar. Daha sonra, daha spesifik ihtiyaçlar için farklı modelleri denemeye geçiyorum.
Yerel LLM Kullanımı: Prompt Mühendisliği ve API Entegrasyonu
Modeli indirdikten sonra, Ollama ile etkileşime geçmenin birkaç yolu var. En basit yöntem, terminal üzerinden doğrudan sohbet etmektir. ollama run komutuyla indirdiğiniz herhangi bir modeli çalıştırabilir ve hemen prompt göndermeye başlayabilirsiniz.
ollama run llama2
>>> Merhaba, nasılsın?
Bu şekilde, modelle interaktif bir sohbet başlatmış olursunuz. Modelin yanıt verme süresi, sisteminizin donanımına ve modelin boyutuna göre değişecektir. Deneyimlerime göre, basit bir soru için bile ilk yanıtın gelmesi birkaç saniye sürebilir, ancak sonraki yanıtlar genellikle daha hızlıdır.
Daha gelişmiş kullanım senaryoları için, Ollama’nın bir REST API’si bulunmaktadır. Bu API, kendi uygulamalarınızdan veya betiklerinizden yerel LLM’inize programatik olarak erişmenizi sağlar. Örneğin, bir Python uygulaması yazarken, requests kütüphanesi ile Ollama API’sine istekler göndererek modelden yanıt alabilirsiniz. Bu, benim kendi yan ürünlerimde veya bir müşteri projesinde, özellikle hassas verilerin şirket içinde kalması gereken durumlarda sıklıkla başvurduğum bir yöntemdir.
Basit bir Python örneği ile Ollama API’sine nasıl istek gönderileceğini göstereyim:
import requests
import json
def generate_text(prompt, model="llama2"):
url = "http://localhost:11434/api/generate"
headers = {"Content-Type": "application/json"}
data = {
"model": model,
"prompt": prompt,
"stream": False # Tam yanıtı beklemek için
}
try:
response = requests.post(url, headers=headers, data=json.dumps(data))
response.raise_for_status() # HTTP hatalarını yakala
result = response.json()
return result["response"]
except requests.exceptions.RequestException as e:
print(f"API isteği sırasında hata oluştu: {e}")
return None
# Örnek kullanım
my_prompt = "Türkiye'nin başkenti neresidir?"
response_text = generate_text(my_prompt)
if response_text:
print(f"Model yanıtı: {response_text}")
Bu API entegrasyonu, benim için gerçek bir oyun değiştirici oldu. Özellikle bir üretim ERP’sinde, operatör ekranlarından gelen serbest metin notlarını özetlemek veya hata kodlarını analiz etmek gibi görevlerde, verileri dışarıya göndermeden LLM yeteneklerini kullanabilmek, operasyonel verimliliği artırırken veri güvenliğinden ödün vermememi sağladı.
Performans Optimizasyonu ve Kaynak Yönetimi: Yerel LLM’leri Hızlandırmak
Yerel LLM’leri kendi sisteminizde çalıştırırken, performans ve kaynak yönetimi önemli hale geliyor. Özellikle büyük modeller, ciddi miktarda RAM ve eğer varsa GPU belleği tüketebilir. Benim sistem yönetimi tecrübelerimde, Linux üzerinde cgroup limitlerini ayarlayarak veya journald loglarını izleyerek bu tür kaynak tüketimlerini yönetmeye çalışıyorum.
1. Donanım Optimizasyonu:
- RAM: LLM’ler, model ağırlıklarını RAM’e yüklediği için bol miktarda RAM’e ihtiyaç duyar. 8GB RAM ile küçük modelleri çalıştırabilirsiniz, ancak daha büyük modeller için 16GB veya 32GB RAM tercih edilir.
- GPU: Eğer bir Nvidia veya AMD GPU’nuz varsa, Ollama modelleri GPU’da çalıştırarak çok daha hızlı yanıt süreleri elde edebilirsiniz. GPU belleği (VRAM) de burada kritik bir faktördür.
- Disk Hızı: Modellerin diskten yüklenmesi sırasında hızlı bir SSD, genel deneyimi iyileştirir.
2. Ollama Konfigürasyonu: Ollama, varsayılan olarak sistemdeki en iyi donanımı kullanmaya çalışır. Ancak bazı durumlarda, özellikle birden fazla GPU’nuz varsa veya belirli bir GPU’yu kullanmak istiyorsanız, ortam değişkenleri ile bunu yönetebilirsiniz.
export OLLAMA_GPU=0 gibi bir komutla belirli bir GPU’yu hedefleyebilirsiniz.
3. Linux Kaynak Yönetimi (cgroup):
Diyelim ki Ollama’yı arka planda bir serviste çalıştırıyorsunuz ve bu servisin sistemin tamamını yemesini istemiyorsunuz. systemd unit’leri içinde MemoryHigh, MemoryMax gibi cgroup direktifleri ile bir servisin kullanabileceği bellek miktarını sınırlayabilirsiniz.
Aşağıdaki gibi bir ollama.service dosyasında (genellikle /etc/systemd/system/ollama.service yolunda bulunur):
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="OLLAMA_HOST=0.0.0.0:11434"
# Bellek sınırlandırması için örnekler
# MemoryHigh=8G # Yumuşak limit, sistem baskı altındayken bellek salıvermeye çalışır
# MemoryMax=12G # Sert limit, bu miktarın üzerine çıkmasına izin verilmez
[Install]
WantedBy=multi-user.target
Bu ayarları yaptıktan sonra systemctl daemon-reload ve systemctl restart ollama komutlarıyla servisi yeniden başlatmanız gerekir. Bu tür kaynak yönetimleri, özellikle aynı sunucuda başka kritik servislerin de çalıştığı hibrit dağıtım senaryolarında, sistemin genel stabilitesini korumak için hayati öneme sahiptir. Geçen ay bir yan ürünümün backend’inde, yanlışlıkla sleep 360 yazıp bir servisi OOM-killed duruma düşürdüğümde, bu tarz cgroup limitlerinin ne kadar önemli olduğunu bir kez daha görmüştüm.
Gelişmiş Ollama Kullanım Senaryoları: RAG ve Agent Pattern’leri
Ollama sadece tek başına bir LLM çalıştırma aracı olmaktan öte, daha karmaşık AI uygulama mimarileri için de sağlam bir temel oluşturuyor. Özellikle Retrieval-Augmented Generation (RAG) ve Agent pattern’leri gibi yaklaşımlarla birleştiğinde, yerel LLM’lerin yetenekleri çok daha geniş bir alana yayılabilir. Kendi AI uygulama mimarisi deneyimlerimde, bu pattern’leri genellikle verimliliği ve doğruluğu artırmak için kullanıyorum.
1. Retrieval-Augmented Generation (RAG) ile Doğruluk: RAG, LLM’lerin sadece öğrendikleri genel bilgiyi değil, aynı zamanda harici bir bilgi tabanından (dokümanlar, veritabanları, web siteleri) alınan spesifik verileri kullanarak yanıt üretmesini sağlayan bir tekniktir. Bu, özellikle LLM’lerin “halüsinasyon” eğilimini azaltmak ve kurumsal verilere dayalı daha doğru yanıtlar üretmek için kritiktir.
Yerel bir RAG sistemi kurmak için şu adımları izleyebiliriz:
- Veri Kaynağı: Şirket içi dokümanları (PDF’ler, Word dosyaları, iç wiki sayfaları) toplamak.
- Embeddings Oluşturma: Bu dokümanları, Ollama’nın desteklediği bir embedding modeli (örneğin,
nomic-embed-text) kullanarak sayısal vektörlere dönüştürmek. - Vektör Veritabanı: Oluşturulan embedding’leri yerel bir vektör veritabanında (örneğin, ChromaDB, Milvus) depolamak.
- Sorgulama ve LLM Entegrasyonu: Kullanıcı bir soru sorduğunda, bu soruyu embedding’e dönüştürüp vektör veritabanında en alakalı doküman parçacıklarını bulmak. Daha sonra bu parçacıkları ve orijinal soruyu Ollama’da çalışan LLM’e bir prompt olarak göndermek.
Bu yaklaşım, özellikle bir üretim firmasının ERP’sinde, eski manuel kılavuzları dijitalleştirip operatörlerin sorularını doğrudan LLM’e sormasına olanak tanıyarak büyük verimlilik artışları sağlayabilir. Veriler şirket içinde kaldığı için güvenlik endişesi de minimize edilmiş olur.
2. Agent Pattern’leri ile Otomasyon: Agent pattern’leri, LLM’leri belirli görevleri yerine getirmek için araçlar (API’ler, veritabanı sorguları, kod çalıştırma ortamları) kullanabilen “ajanlar” olarak konumlandırır. Örneğin, bir ajan, bir kullanıcının isteğini analiz edip, stok durumunu kontrol etmek için bir ERP API’sine çağrı yapabilir veya bir finansal hesaplama yapmak için bir Python betiği çalıştırabilir.
Yerel bir LLM ile ajan mimarisi oluşturmak, yine hassas kurumsal süreçleri otomatikleştirmek için idealdir. Örneğin, bir şirket içinde “X ürününün stok durumu nedir ve eğer 100 adetten azsa otomatik sipariş oluştur” gibi bir istek, bir ajan tarafından yerel LLM, ERP API’si ve bir sipariş yönetim sistemi entegrasyonu ile tamamen şirket içinde yönetilebilir. Bu, benim kendi VPS’imde geliştirdiğim özel finansal hesaplayıcılarda veya Android spam blocker gibi yan ürünlerimde, karmaşık iş akışlarını otomatikleştirmek için kullandığım bir yaklaşımdır. Farklı LLM sağlayıcıları (Gemini Flash, Groq, Cerebras) arasında fallback mekanizmaları kurmak yerine, tek bir yerel Ollama kurulumuyla bu tür sistemleri daha kontrollü ve güvenli bir şekilde çalıştırabiliyorum.
Sonuç
Ollama ile yerel LLM kurulumu, veri güvenliği ve üzerinde tam kontrol arayan herkes için güçlü ve pratik bir çözümdür. Gerek bir üretim ERP’sinde hassas verileri işlemek, gerekse kendi kişisel projelerinizde gizliliği korumak olsun, Ollama bu ihtiyacı doğrudan karşılar. Kurulumunun basitliği ve sunduğu esneklik sayesinde, AI yeteneklerini kendi altyapımıza taşımak artık hayal değil, somut bir gerçektir.
Bu rehberde anlattığım adımları takip ederek kendi yerel LLM’inizi kolayca kurabilirsiniz. Unutmayın ki performans, donanımınıza bağlı olarak değişecektir, bu yüzden sistem kaynaklarınızı doğru yönetmek kritik. İleri düzey kullanım senaryoları olan RAG ve Agent pattern’leri ise, yerel LLM’lerinizin potansiyelini daha da artırarak, kurumsal veya kişisel projelerinizde AI’dan maksimum fayda sağlamanıza olanak tanır. Kendi deneyimimde, bu tür yerel çözümlerin getirdiği güvenlik ve kontrol hissi, bulut tabanlı alternatiflerin sunduğu kolaylığın ötesine geçiyor. Bir sonraki adım, bu yerel LLM’leri mevcut iş akışlarınıza nasıl entegre edeceğinizi düşünmek olmalı.