İçeriğe Atla
Mustafa Erbay
Rehberler · 9 dk okuma · görüntülenme Read in English

Yerel LLM ile AI Kod Tamamlama: Ollama'yı 5 Adımda Kurun

Kod tamamlama için bulut tabanlı AI'a bağımlılığı azaltmak ve gizliliği artırmak için Ollama ile yerel LLM'leri nasıl kuracağınızı adım adım öğrenin.

100%

Bugünlerde yazılım geliştirme yaparken en sık karşılaştığım şeylerden biri, IDE’mdeki kod tamamlama önerilerinin genellikle bulut tabanlı bir yapay zeka tarafından sağlanması. Bu durum, hem kod gizliliği hem de bazen gecikme süreleri açısından beni düşündürüyor. Yerel bir LLM (Large Language Model) ile kod tamamlama, bu sorunlara zarif bir çözüm sunuyor ve Ollama bu çözümü hayata geçirmek için oldukça pratik bir araç.

Bu yazıda, Ollama’yı kullanarak kendi makinenizde AI destekli kod tamamlama ortamını nasıl kuracağınızı adım adım anlatacağım. Amacım, bulut servislerine bağımlılığı azaltıp, daha hızlı ve güvenli bir geliştirme deneyimi elde etmenizi sağlamak. Beş basit adımla, kendi yerel kod asistanınızı çalıştırmaya başlayacağız.

Yerel LLM’ler Neden Önemli Hale Geldi?

Son zamanlarda, birçok geliştirici bulut tabanlı AI araçlarının sunduğu kolaylıklarla kod yazıyor. Ancak, geliştirdiğim bazı projelerde, özellikle müşteri verisi veya hassas iş mantığı içeren üretim ERP sistemlerinde çalışırken, yazdığım kodun bir dış servise gönderilmesi beni her zaman tedirgin ediyor. Gizlilik ve veri güvenliği endişeleri, yerel LLM çözümlerine olan ilgimi artırdı.

Yerel LLM’ler, kodunuzun şirket ağından veya kişisel bilgisayarınızdan dışarı çıkmasını engeller. Bu, özellikle NDA’ya tabi projelerde veya hassas algoritmalar geliştirirken büyük bir avantaj. Ayrıca, internet bağlantısı olmadan da kod tamamlama ve diğer AI özelliklerini kullanabilmek, mobil geliştirme veya seyahat ederken çalıştığım durumlarda iş akışımı kesintiye uğratmıyor.

Ollama Nedir ve Neden Tercih Edilmeli?

Ollama, büyük dil modellerini yerel olarak çalıştırmak için tasarlanmış açık kaynaklı, basit ve güçlü bir framework. Kurulumu kolay, kullanımı pratik ve geniş bir model yelpazesini destekliyor. Ollama’yı tercih etmemdeki başlıca nedenler, bare-metal veya container ortamında LLM’leri hızla ayağa kaldırabilmesi ve Linux sistemlerle mükemmel uyumu.

Bu platform sayesinde, farklı LLM’leri (Code Llama, Deepseek Coder gibi) kolayca indirip çalıştırabilir, hatta kendi modellerinizi bile Modelfile’lar aracılığıyla özelleştirebilirsiniz. Performans konusunda da, doğru model seçimi ve donanım optimizasyonu ile bulut servislerine yakın, hatta bazı durumlarda daha iyi deneyimler elde etmek mümkün. Özellikle yüksek bant genişliği veya düşük gecikme gerektiren durumlarda yerel bir çözümün farkı hissediliyor.

Adım 1: Ollama Kurulumu – İşletim Sisteminize Özel Yaklaşım

Ollama’yı kurmak oldukça basit. Ben genelde Linux sistemler üzerinde çalıştığım için, kurulumu Debian/Ubuntu tabanlı bir sistem üzerinden göstereceğim. Ollama’nın resmi web sitesinde diğer işletim sistemleri için de detaylı talimatlar bulunuyor. İlk olarak, terminalinizi açıp aşağıdaki komutu çalıştırarak Ollama’yı sisteminize indirebilir ve kurabilirsiniz:

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

Bu komut, Ollama’yı indirir, gerekli bağımlılıkları kurar ve systemd servisi olarak yapılandırır. Kurulum tamamlandığında, Ollama arka planda çalışmaya başlayacaktır. Kurulumun başarılı olup olmadığını kontrol etmek için aşağıdaki komutu kullanabilirsiniz:

ollama --version

Eğer sürüm numarasını görüyorsanız, kurulumunuz başarıyla tamamlanmış demektir.

Adım 2: İlk Kod Tamamlama Modelini Çekme (Code Llama Seçimi)

Ollama kurulduktan sonra, sıra kod tamamlama için bir dil modeli indirmeye geliyor. Ollama’nın desteklediği birçok model var ancak kod tamamlama için özellikle optimize edilmiş modellerden biri Code Llama’dır. Ben genellikle 7B parametreli versiyonunu tercih ediyorum, çünkü hem yeterince güçlü hem de ortalama bir donanımda bile kabul edilebilir performans sunuyor.

Modeli indirmek için terminalde şu komutu çalıştırın:

ollama pull codellama

Bu komut, Code Llama’nın varsayılan (genellikle 7B) versiyonunu çekecektir. Eğer farklı bir versiyon veya nicemleme (quantization) seviyesi isterseniz, modeli codellama:13b veya codellama:7b-code-q4_0 gibi belirtebilirsiniz. Modelin boyutu birkaç gigabayt olabileceğinden, indirme süresi internet bağlantınızın hızına göre değişebilir.

Model indirildikten sonra, Ollama’nın çalıştığını ve modeli kullanıma hazır olduğunu doğrulamak için basit bir sohbet başlatabilirsiniz:

ollama run codellama "Merhaba, bana Python'da basit bir Fibonacci serisi fonksiyonu yazabilir misin?"

Bu komut, Code Llama modelini çalıştıracak ve size yanıt vermesini sağlayacaktır. Bu adımı, modelin doğru çalıştığını ve temel yeteneklerini test etmek için kullanırım.

Adım 3: Entegrasyon: IDE’nizde Ollama’yı Kullanma

Yerel LLM’in gücünü IDE’mize taşımak, asıl verimlilik artışını sağlayan adımdır. Ben genellikle VS Code kullandığım için entegrasyonu VS Code üzerinden anlatacağım. Piyasada Ollama ile uyumlu birçok IDE eklentisi bulunuyor, ancak Continue eklentisi bu konuda oldukça başarılı ve esnek bir yapı sunuyor.

İlk olarak, VS Code’u açın ve Extensions (Uzantılar) sekmesine gidin. Arama çubuğuna “Continue” yazıp eklentiyi yükleyin. Yüklendikten sonra, settings.json dosyanızı açarak Continue’yi Ollama ile konuşacak şekilde yapılandırmanız gerekecek. settings.json dosyasını Ctrl+, (Windows/Linux) veya Cmd+, (macOS) ile açıp arama kutusuna “Preferences: Open User Settings (JSON)” yazarak bulabilirsiniz.

Aşağıdaki yapılandırmayı settings.json dosyanıza ekleyin:

{
  "continue.models": [
    {
      "name": "codellama",
      "provider": "ollama",
      "model": "codellama",
      "apiBase": "http://localhost:11434"
    }
  ],
  "continue.defaultModel": "codellama"
}

Bu yapılandırma, Continue eklentisine codellama adında bir model tanımlar ve bunun Ollama sağlayıcısı üzerinden http://localhost:11434 adresindeki Ollama sunucusuna bağlanmasını söyler. apiBase adresi, Ollama’nın varsayılan API adresidir. Eğer Ollama’yı farklı bir portta veya IP adresinde çalıştırıyorsanız, bu değeri değiştirmeniz gerekir.

Yapılandırmayı kaydettikten sonra VS Code’u yeniden başlatmanız gerekebilir. Artık Continue eklentisi, kod tamamlama ve diğer AI tabanlı geliştirme görevleri için yerel Ollama sunucunuzdaki Code Llama modelini kullanacaktır. Kod yazmaya başladığınızda, eklentinin size bağlam duyarlı öneriler sunduğunu göreceksiniz.

Adım 4: Performans İpuçları ve Optimizasyonlar

Yerel LLM’ler donanım kaynaklarını yoğun kullanabilir, bu yüzden performansı optimize etmek kritik. Kendi sistemimde, özellikle PostgreSQL ve Redis gibi bellek yoğun servisler çalışırken, LLM’in sistem kaynaklarını boğmaması için bazı ayarlamalar yapıyorum. İşte birkaç ipucu:

  1. Model Seçimi ve Nicemleme (Quantization): Her zaman en büyük modeli kullanmak zorunda değilsiniz. Örneğin, Code Llama’nın 7B parametreli nicemlenmiş (Q4_0 veya Q5_K_M gibi) versiyonları, daha küçük dosya boyutları ve daha az bellek tüketimi ile genellikle iyi performans sunar. ollama run codellama:7b-code-q4_0 gibi belirli nicemleme seviyelerini çekerek deneyler yapın.
  2. GPU Kullanımı: Eğer sisteminizde uyumlu bir GPU varsa (NVIDIA veya bazı AMD modelleri), Ollama otomatik olarak GPU hızlandırmasını kullanmaya çalışacaktır. Bu, CPU’ya kıyasla önemli bir performans artışı sağlar. ollama ps komutu ile çalışan modellerin GPU kullanıp kullanmadığını kontrol edebilirsiniz.
  3. Bellek Yönetimi: LLM’ler genellikle çok bellek tüketir. Linux’ta cgroup limit’leri veya systemd unit’leri ile Ollama servisine atanacak bellek miktarını sınırlayabilirsiniz. Bu, diğer kritik servislerinizin OOM (Out Of Memory) killer tarafından sonlandırılmasını engeller. Örneğin, bir systemd override dosyası oluşturarak:
    # /etc/systemd/system/ollama.service.d/limits.conf
    [Service]
    MemoryLimit=8G
    Ardından sudo systemctl daemon-reload && sudo systemctl restart ollama ile servisi yeniden başlatın. Bu sayede Ollama’nın 8GB’dan fazla RAM kullanmasını engellemiş olursunuz.
  4. Boşta Kalan Modelleri Kaldırma: Ollama, kullanılan modelleri bellekte tutar. Kullanmadığınız modelleri ollama unload <model_adı> komutuyla bellekten boşaltarak kaynakları serbest bırakabilirsiniz.

Adım 5: Gelişmiş Kullanım Senaryoları ve İleri Adımlar

Ollama ile sadece kod tamamlama yapmakla kalmaz, daha gelişmiş senaryolar için de kullanabilirsiniz. Ben kendi projelerimde Ollama’yı farklı şekillerde entegre ediyorum.

  1. Özel Modeller (Modelfile): Mevcut bir modelin davranışını değiştirmek veya kendi küçük verisetiniz üzerinde ince ayar yapmak isterseniz, Modelfile’lar oluşturabilirsiniz. Modelfile, bir Dockerfile’a benzer şekilde çalışır ve temel bir modelin üzerine ek talimatlar (sistem mesajları, sıcaklık ayarları, özel talimatlar) eklemenizi sağlar. Örneğin, bir Modelfile ile modelin sadece Python kodu üretmesini veya belirli bir kodlama stiline uymasını sağlayabilirsiniz.

    FROM codellama:7b-code-q4_0
    PARAMETER temperature 0.2
    SYSTEM """You are a highly skilled Python developer. Only generate Python code, no explanations."""

    Bu Modelfile’ı ollama create my-python-coder -f Modelfile komutuyla oluşturup ollama run my-python-coder ile kullanabilirsiniz.

  2. RAG (Retrieval-Augmented Generation) Entegrasyonu: Büyük kod tabanlarında spesifik kod parçacıklarını aramak ve bu bağlamda AI’dan yardım almak için RAG mimarilerini kullanabilirsiniz. Kendi sistemime yaptığım bir entegrasyonda, kod tabanımı parçalara ayırıp bir vektör veritabanında saklıyorum. Kullanıcı bir soru sorduğunda, ilgili kod parçacıkları çekilip Ollama’daki LLM’e bağlam olarak veriliyor. Bu sayede model, sadece genel bilgiyle değil, projenin kendi kod yapısıyla ilgili yanıtlar üretebiliyor.

  3. Çoklu Provider Fallback: Geliştirdiğim AI uygulamalarında, bazen yerel modelin yetersiz kaldığı veya daha güçlü bir modelin gerektiği durumlar oluyor. Bu durumlarda, Ollama’yı birincil provider olarak kullanıp, eğer yanıt kalitesi düşükse veya belirli bir token limiti aşılırsa, Groq veya OpenRouter gibi bulut tabanlı servislere fallback yapacak bir mimari kuruyorum. Bu, hem maliyeti optimize ediyor hem de esnekliği artırıyor.

Bu gibi gelişmiş kullanım senaryoları, yerel LLM’lerin sadece kod tamamlama ötesinde ne kadar güçlü olabileceğini gösteriyor. Kendi ihtiyaçlarınıza göre Ollama’yı şekillendirmek, geliştirme sürecinizi çok daha verimli hale getirebilir.

Sonuç

Yerel LLM’ler ile AI destekli kod tamamlama, gizlilik, hız ve maliyet avantajları sunarak geliştirme deneyimimizi dönüştürüyor. Ollama, bu gücü kendi makinelerimize getiren basit ama güçlü bir araç. Bu yazıda anlattığım 5 adımı takip ederek, siz de kısa sürede kendi yerel AI kod asistanınızı kurup çalıştırmaya başlayabilirsiniz.

Kendi projelerimde, özellikle hassas verilerle çalıştığım veya internet bağlantımın olmadığı durumlarda Ollama’nın sağladığı bu yerel yetenek paha biçilmez oldu. Bu kurulum, sadece bir başlangıç; Ollama’nın sunduğu esneklik sayesinde kendi Modelfile’larınızı oluşturarak veya RAG gibi daha gelişmiş sistemlerle entegre ederek çok daha fazlasını yapabilirsiniz. Bir sonraki adım, kendi özel kod asistanınızı inşa etmek olabilir.

Paylaş:

Bu yazı faydalı oldu mu?

Yükleniyor...

Bu yazı nasıldı?

Sıkça Sorulanlar

Bu makale ile ilgili okurların sorduğu yaygın sorular.

Yerel LLM kurulumu için hangi araçları kullanmalıyım?
Ben Ollama framework'ünü yerel LLM kurulumu için kullanıyorum. Kolay kurulumu ve güçlü özellikleri sayesinde, kod tamamlama ve diğer AI özelliklerini yerel olarak kullanabiliyorum. Ayrıca, Ollama açık kaynaklı olduğu için, topluluğun katkıları ve güncellemeleri sayesinde sürekli olarak gelişiyor.
Yerel LLM'nin avantajları ve dezavantajları nelerdir?
Yerel LLM'nin en büyük avantajı, kod gizliliği ve veri güvenliği endişelerini azaltmasıdır. Ayrıca, internet bağlantısı olmadan da çalışabiliyor, bu da mobil geliştirme veya seyahat ederken çalışmak için ideal. Dezavantaj olarak, yerel LLM'nin kurulumu ve bakımını kendiniz yapmanız gerekiyor, bu da bazı ekstra çaba gerektirebilir. Ancak, ben bu tradeoff'u kabul ediyorum, çünkü gizlilik ve güvenlik benim için çok önemli.
Yerel LLM kurulumunda hata oluşursa ne yapmalı?
Eğer yerel LLM kurulumunda hata oluşursa, ilk olarak Ollama topluluğunun belgelerini ve destek sayfalarını kontrol ediyorum. Ayrıca, sorunumu topluluk forumlarında paylaşarak, başkalarının benzer sorunlarla karşılaştığını ve nasıl çözdüğünü öğreniyorum. Eğer hala bir çözüm bulamazsam, Ollama geliştiricilerine doğrudan ulaşıyorum. Benim deneyimime göre, Ollama topluluğu çok aktif ve yardımcı, bu nedenle çözüm genellikle kısa sürede bulunuyor.
Yerel LLM'nin genel kanıya göre daha iyi bir seçenek olduğunu söylemek doğru mu?
Benim deneyimime göre, yerel LLM gerçekten daha iyi bir seçenek. Kod gizliliği ve veri güvenliği açısından, bulut tabanlı AI araçlarına göre daha güvenli. Ayrıca, internet bağlantısı olmadan da çalışabiliyor, bu da mobil geliştirme veya seyahat ederken çalışmak için ideal. Ancak, her geliştiricinin ihtiyaçları farklı olabilir, bu nedenle yerel LLM'yi denemek ve kendi deneyimini yaşamak en iyi yol. Ben, yerel LLM'nin avantajlarını gördüm ve artık bulut tabanlı AI araçlarını kullanmıyorum.
ME

Mustafa Erbay

Sistem Mimarisi · Network Uzmanı · Altyapı, Güvenlik ve Yazılım

2006'dan bu yana sistem mimarisi, network, sunucu altyapıları, büyük yapıların kurulumu, yazılım ve sistem güvenliği ekseninde çalışıyorum. Bu blogda sahada karşılığı olan teknik deneyimlerimi paylaşıyorum.

Kişisel Notlar

Bu notlar sadece sizde saklanır. Tarayıcınızda yerel olarak tutulur.

Hazır 0 karakter

Yorumlar

Sunucu Taraflı AI Moderasyon

Yorumlar sunucuda yapay zeka ile denetlenir ve kalıcı olarak saklanır.

?
0/2000

Sunucu taraflı AI denetim

✉️ Ücretsiz · Spam yok · İstediğin an çık

Yeni yazılardan haberdar olun

Yeni içerikler ve teknik notlar e-postanıza gelsin.

  • 📌
    Haftanın en iyisi Sadece okumaya değer tek yazı
  • 🔧
    Alet çantası Bu hafta kullandığım araçlar
  • 🧠
    Perde arkası Blog'a girmeyen notlar

Spam yapmıyoruz. İstediğiniz zaman ayrılabilirsiniz. · Sadece Umami (self-hosted, Google yok) ile takip.

Okuma İstatistikleriniz

0

Yazı Okundu

0dk

Okuma Süresi

0

Gün Serisi

-

Favori Kategori

İlgili Yazılar