Friday, March 6, 2026

Ollama Cloud ile Açık Kaynak Büyük Dil Modellerini (LLM) Bulutta Kullanmak

Ollama Cloud ile Açık Kaynak LLM'leri İndirmeden Denemek

Açık Kaynak büyük dil modelleri (LLM) dünyasında her gün yeni bir model ve yeni bir sürüm konuşuluyor. Bu çok iyi bir haber, çünkü artık "tek bir model"e mahkum değiliz. Ama pratikte çoğu kişi aynı iki probleme takılıyor: (1) Büyük modeller yerel GPU VRAM'ine sığmıyor, (2) Birden fazla modeli denemek için her seferinde devasa dosyalar indirmek, kurmak, silmek hem zaman hem de disk alanı tüketiyor. Kısacası, öğrenme ve deneme süreci daha en başta yorucu hale gelebiliyor.

Ben bu eğitimi tam da bu yüzden hazırladım: Açık Kaynak LLM'leri Bilgisayarınıza model dosyalarını indirip biriktirmeden de test edebilin. Üstelik sadece "çalıştırma" değil, doğru model seçimi ve uygulamaya entegrasyon mantığını da anlayın. Bu yazı, YouTube'daki eğitimimin blog formatında, ders notu kadar derinlemesine hazırlanmış versiyonu. Adım adım giderken, neden-sonuç ilişkisini de kurmaya çalışacağım.

Eğitim videosu (YouTube canlı yayın kaydı): https://youtube.com/live/QEZ8oF4A68k

Kodlar ve dokümanlar (GitHub deposu): https://github.com/kmkarakaya/OllamaCloud

Not: Bu yazıda mümkün oldukça Türkçe terimler kullanıyorum. Örneğin "Açık Kaynak" (open source), "bulut", "belirteç" (token), "akış" (stream) gibi. Kod ve komutlarda ise resmi isimler ve parametreler aynen kalıyor.

Bu Ders Notunu Nasıl Kullanmalısın?

Bu yazı iki tip okuyucu için tasarlandı:

  • LLM dünyasına yeni girenler: "Ben nereden başlayacağım, hangi kavramlar önemli?" diyenler.
  • Uygulama geliştirmek isteyenler: "Ben Python ile bir şey kurmak istiyorum, model denemeyi hızlı hale getirmek istiyorum." diyenler.

Benim önerim şu: Önce kavramları ve karar mantığını oku. Sonra CLI ile bir modeli çalıştır. Ardından API ve Python bölümüne geç. En sonda repodaki iki örneği (model karşılaştırma betiği ve Streamlit demo) çalıştırıp sonuçları yorumla. Bu sırayla ilerlersen, "ne yaptığını bilerek" ilerlemiş olursun.

Temel Kavramlar: Modeller Neden Ağır? (VRAM, RAM, Disk, belirteç)

Bir modelin "büyük" veya "ağır" olması tek bir şeye bağlı değil. Yeni başlayanların kafasını en çok karıştıran nokta da bu. Ben burada üç kaynak üzerinden anlatıyorum: Disk, RAM ve VRAM.

  • Disk: Model dosyalarını indirip sakladığın yer. Birkaç model denemek bile onlarca GB yapabilir.
  • RAM: CPU belleği. Bazı durumlarda (özellikle CPU ile çalışan senaryolarda) RAM sınırlayıcı olur.
  • VRAM: GPU belleği. Büyük modellerin yerelde hızlı çalışmasında çoğu zaman asıl sınırlayıcı kaynak budur.

Parametre sayısı arttıkça (örneğin 20B, 120B gibi) modelin kapasitesi artabilir, ama kaynak ihtiyacı da artar. Ancak tek mesele parametre sayısı değildir. Model çalışırken "KV cache" (kısaca bağlam belleği) de büyür. Bu cache, konuşma uzadıkça ve context window büyüdükçe artar. Bu yüzden "kısa bir soru" ile "uzun bir sohbet" aynı modelde farklı kaynak tüketimi üretebilir.

Bir diğer kritik kavram: belirteç. Modelin okuduğu ve ürettiği metin parçaları belirteçlere bölünür. Bir prompt ne kadar uzunsa, o kadar fazla belirteç işlenir. Bir konuşma geçmişi ne kadar uzunsa, modelin "tek seferde düşünmesi" için o kadar fazla belirteç taşınır. Bu hem süreyi (gecikme) hem de bellek ihtiyacını etkiler. Bu yüzden iyi bir pratik: Modeli değerlendirirken sadece tek bir prompt değil, farklı uzunluklarda promptlar denemek.

Peki quantization (kuantizasyon) ne işe yarar? Çok basit anlatayım: Modeli daha düşük hassasiyetle temsil ederek daha az bellek kullanmasını sağlar. Bu sayede bazı modeller yerelde çalışabilir hale gelir. Ama bazen kalite ve tutarlılık üzerinde etkisi olabilir. Bu nedenle model seçimi yaparken "en büyük model en iyisidir" gibi basit bir kural yok. Senin senaryon için "yeterince iyi + yeterince hızlı + yönetilebilir maliyet" dengesi önemlidir.

Bu noktada Ollama Cloud'un değeri ortaya çıkıyor: İndirme ve donanım bariyerini azaltıp, senin hızlıca öğrenme ve deneme yapmanı sağlıyor. Yani önce doğru modeli seçiyorsun, sonra yerel veya bulut stratejini buna göre planlıyorsun.

KV Cache ve Context Window: Uzun Sohbet Neden Yavaşlar?

Yeni başlayanların en sık yaşadığı sürprizlerden biri şudur: Aynı model, kısa bir promptta çok hızlı cevap verirken; konuşma uzadıkça veya tek prompt çok uzayınca bariz şekilde yavaşlar. Bunun temel nedeni "modelin geçmişi nasıl taşıdığı" ile ilgilidir. Dil modelleri, her yeni belirteç üretirken önceki belirteçlere dikkat (attention) mekanizmasıyla bakar. Konuşma uzadıkça bakması gereken içerik artar; bu da hesaplama maliyetini ve bellek ihtiyacını yükseltir.

Bu işin bellek tarafındaki adı çoğu yerde KV cache olarak geçer. Çok basit anlatımla: Model, önceki belirteçlere ait bazı ara temsil bilgilerini (key/value) cache'ler ve sonraki adımlarda bunları kullanır. Context window büyüdükçe bu cache de büyür. Yerelde GPU kullanıyorsan bu cache çoğu zaman VRAM'de tutulur ve VRAM'in sınırlıysa uzun konuşmalarda daha çabuk sınıra dayanırsın. bulut'da bu sınır sende görünmez ama performans etkisini yine hissedebilirsin.

Bu yüzden ben model denemesinde şunu özellikle öneriyorum: Sadece "tek cümlelik bir soru" ile karar verme. Aynı modelde kısa prompt, orta prompt ve uzun prompt dene. Bir de "konuşma geçmişi" senaryosu dene. Çünkü gerçek uygulamada çoğu zaman kullanıcı bir soru sorup çıkmıyor; takip sorusu soruyor, detay istiyor, format değiştiriyor. Modelin bu akıştaki davranışı, tek seferlik cevap kadar önemlidir.

Pratik bir performans ipucu: Uygulamada konuşma geçmişini sınırsız büyütme. Gerekirse eski mesajları özetle, kritik noktaları "memory" gibi tek bir mesajda taşı. RAG (retrieval-augmented generation) gibi teknikler de burada devreye girer: Her şeyi konuşma geçmişinde tutmak yerine, ilgili bilgiyi dışarıdan çekip prompta eklersin. Bu hem maliyeti hem de gecikmeyi yönetmeyi kolaylaştırır.

Ollama Cloud Nedir? (CLI ve API İki Yol)

Ollama Cloud, desteklenen modelleri bulut üzerinden çalıştırıp denemeni sağlayan bir altyapı. Senin tarafında iki "arayüz" var: Ollama CLI ve Ollama API. Benim ders notu yaklaşımımda bunlar iki farklı hedefe hizmet eder:

  • CLI yolu: Hızlı deneme ve hızlı kıyaslama. Prompt yaz, cevap al, model davranışını gör.
  • API yolu: Uygulama entegrasyonu. Python ile web app, bot, servis veya otomasyon kur.

Resmi dokümanlar (okurken açık dursun): https://docs.ollama.com/cloud, https://docs.ollama.com/api

Not: "Ücretsiz deneme" ve limitler dönemsel olarak değişebilir. En güncel bilgiyi resmi sayfalardan kontrol etmeni öneririm.

Ne Zaman bulut, Ne Zaman Yerel?

bulut ve yerel kullanım birbirinin alternatifi değil; çoğu zaman birbirini tamamlar. Ben pratikte şöyle karar veriyorum:

  • bulut-öncelikli: Model denemek, model seçmek, hızlı prototip yapmak, eğitim/demo üretmek.
  • Local-first: Offline çalışma, çok sık istek, veri politikası nedeniyle tamamen yerel zorunluluk.

Eğer amacın "hangi model işimi görür?" sorusunu cevaplamaksa bulut yaklaşımı büyük hız kazandırır. Modeli seçtikten sonra yerelde koşmak istiyorsan, o aşamada donanım yatırımı veya daha küçük/kuantize bir model seçimi mantıklı hale gelir. Yani benim için bulut çoğu zaman bir "hızlandırıcı katman".

Model Deneme ve Karşılaştırma İçin Basit Bir Rubrik

Model denemek demek, aynı soruyu üç modele sormak demek değildir. Gerçek bir karşılaştırma yapmak için küçük bir rubrik gerekir. Benim kullandığım basit rubrik şu başlıklardan oluşur:

  • Talimat takibi: "Şu formatta yaz" dediğimde uyuyor mu?
  • Tutarlılık: Aynı soruyu tekrar sorunca benzer kalite veriyor mu?
  • Yapı ve okunabilirlik: Cevap düzenli mi, maddeleme iyi mi?
  • Doğruluk: Bariz hatalar yapıyor mu, uydurma eğilimi var mı?
  • Hız: Aynı prompt için yanıt süresi kabul edilebilir mi?
  • Dil uyumu: Türkçe sorularda Türkçe kalitesi yeterli mi?

Bu rubriği kullanarak "model seçimi"ni hızlandırabilirsin. Örneğin eğitimde kullandığım yaklaşım: Aynı konuda 2-3 farklı prompt tipi hazırla, sonra her modeli bu prompt setiyle test et. Böylece tek bir cevaba göre karar vermezsin. Özellikle "format zorlayan" promptlar modelin talimat takibini çok net gösterir.

Bu rubriği repodaki compare_models.py ile otomatikleştirmeye başladık. betik mükemmel bir kıyaslama değil, ama doğru düşünme biçimini öğretir: Önce yapılandırılmış görevler, sonra gerçek çıktı incelemesi.

Prompt Tasarımı İpuçları: Modeli Doğru Sınamak

Bir modelin "iyi" veya "kötü" olduğuna karar vermek için önce doğru prompt yazmak gerekir. Çünkü LLM'ler, soruyu nasıl sorduğuna göre çok farklı davranabilir. Benim ders notu şeklinde önerdiğim basit yaklaşım: Promptu dört parçaya böl ve her parçayı net yaz.

  • Rol: Modelden nasıl davranmasını istiyorsun? (Örn: "Bir eğitmen gibi anlat.")
  • Hedef: Tam olarak ne istiyorsun? (Örn: "RAG'i 5 maddeyle açıkla.")
  • Kısıt: Uzunluk, dil, format, ton gibi sınırlar. (Örn: "Her madde 1 cümle olsun.")
  • Çıktı formatı: Madde madde mi, JSON mu, tablo mu? (Örn: "Başlık + maddeler.")

Karşılaştırma yaparken de aynı konsept geçerli: Aynı rubrikle ölçmek istiyorsan, modellerin hepsine aynı formatı zorlayan promptları ver. Örneğin Türkçe üreteceksen mutlaka Türkçe prompt seti hazırla. Kod yazdıracaksan "basit kod", "hata ayıklama", "refactor" gibi farklı kod görevleri ekle. Bu sayede tek bir promptta parlayan ama diğer görevlerde dağılan modelleri erken fark edersin.

Bir başka pratik ipucu: Deneme promptlarını "gerçek iş" promptlarından ayır. Deneme promptu daha kısa ve daha kontrollü olur; gerçek iş promptu ise daha karmaşık ve daha çok bağlam içerir. Bu yüzden karar verirken iki tür promptu da kullan. Deneme promptu ile ele, gerçek iş promptu ile doğrula.

Güvenlik ve İyi Pratikler: API Key ile Çalışmak

API key bir şifre gibi düşünülmeli. En sık yapılan hata, API key'i koda gömmek veya depo içinde paylaşmak. Benim önerim: API key'i bir ortam değişkeni olarak tanımla ve uygulamada oradan oku.

Resmi yetkilendirme dokümanı: https://docs.ollama.com/api/authentication

Windows PowerShell tarafında, geçerli oturum için örnek:

$env:OLLAMA_API_KEY = "your_api_key_here"

Bu şekilde key'i kaynak koduna yazmadan, hem CLI tarafında hem de Python tarafında kullanabilirsin. Eğitim içeriklerinde özellikle şunu vurguluyorum: Key yönetimi "küçük bir detay" değil; ileride üretim ortamına gittiğinde en kritik alışkanlıklardan biri olacak.

CLI ile Başlamak: İlk Deneme Akışı (Neden Bu Komutlar?)

Önce Ollama'nın Windows kurulumu gerekiyor. Resmi Windows kurulum sayfası: https://docs.ollama.com/windows

Kurulumdan sonra amaç şu: bulut tarafına giriş yap ve bir modeli terminalde çalıştır. Temel akış:

ollama --version
ollama signin
ollama run gpt-oss:120b-cloud

Burada ollama signin kritik. bulut erişimi gerektiren işlemlerde yerel CLI'nin kimlik doğrulamasını yapmış oluyorsun. Sonra ollama run ile modeli interaktif moda alıyorsun. Bu noktada önemli pratik: İlk denemelerde kısa promptlarla başla, sonra uzun promptlara geç. Çünkü uzun prompt, hem hız hem de bağlam yönetimi açısından modeli daha fazla zorlar.

Bir diğer önemli not: bulut model isimleri CLI tarafında bazen -cloud ekiyle gelir. API tarafında ise model adları farklı görünebilir. Bu yüzden ben API entegrasyonlarında "model adını hardcode etme" alışkanlığını bırakmanı öneriyorum. Bunun çözümü bir sonraki bölümde: /api/tags.

Direkt API Yolu: /api/tags ile Model Keşfi, /api/sohbet ile Cevap

Uygulama geliştireceksen API tarafı kritik. Ben burada iki endpointi "temel taş" gibi görüyorum:

  • /api/tags: Hangi modeller erişilebilir? Bu sorunun cevabı.
  • /api/sohbet: Mesaj gönderip cevap almak.

Endpoint dokümanları: https://docs.ollama.com/api/tags, https://docs.ollama.com/api/chat

Benim pratik yaklaşımım: Model adını "varsayma". Önce /api/tags ile listeyi çek, sonra uygulamanda o listeden seçim yaptır. Bu sayede bir model erişilebilir değilse uygulama kırılmaz; sadece seçeneklerde görünmez.

Minimal bir curl örneği (PowerShell'de):

curl __URL_16__ `
  -H "Authorization: Bearer $env:OLLAMA_API_KEY"

sohbet tarafında stream parametresi önemli bir kavram. stream=false dersen tek seferde cevap alırsın. stream=true dersen cevap parça parça gelir. Web uygulamalarında akış kullanıcı deneyimini iyileştirir, ama kodu biraz daha dikkatli yazmayı gerektirir. Eğitimde ben önce stream=false ile mantığı kurup, sonra akışa geçmeni öneriyorum.

Python ile Entegrasyon: Mantığı Bir Kez Kur, Her Yerde Kullan

Python tarafında benim önerim şu: Önce en küçük "çalışıyor mu?" prototipini kur. Sonra aynı mantığı web uygulamasına taşı. Ollama Cloud Python dokümanı burada: https://docs.ollama.com/cloud#python

Kullandığımız Python paketi: https://github.com/ollama/ollama-python

Python tarafında temel fikir:

  • İstemciyi host="__URL_21__" ile bulut'a yönlendir
  • Header'a Authorization: Bearer ... koy
  • chat() çağrısında model ve mesajları gönder

Minimal örnek:

import os
from ollama import Client

client = Client(
    host="__URL_22__",
    headers={"Authorization": f"Bearer {os.environ['OLLAMA_API_KEY']}"},
)

resp = client.chat(
    model="gpt-oss:120b",
    messages=[{"role": "user", "content": "RAG nedir? 5 maddeyle anlat."}],
    stream=False,
)

print(resp["message"]["content"])

Burada mesaj formatı çok önemli. Mesajlar bir liste ve her mesajın role alanı var (örneğin user). Gerçek uygulamada konuşma geçmişi tutarsın: Önceki mesajları da yeni promptla birlikte gönderirsin. Bu sayede model bağlamı "hatırlar". Ama şu riski unutma: Konuşma geçmişi uzadıkça belirteç sayısı artar; bu da gecikmeyi artırabilir. Bu yüzden pratik bir yöntem: Geçmişi sınırlamak veya kritik noktaları özetleyip "memory" gibi göndermek.

Hata senaryolarını ders notu gibi düşünelim:

  • 401 Unauthorized: API key yanlış veya header formatı hatalı. İlk kontrol: ortam değişkeni + auth dokümanı.
  • 404 / model not found: Model adı erişilebilir değil; önce /api/tags ile listeyi kontrol et.
  • Timeout/slow: Çok büyük model veya yoğunluk; daha küçük modelle dene, istekleri azalt, akış kullan.

Bu üç hata tipi, pratikte en sık görülenler. Eğitimde de özellikle "önce tags, sonra sohbet" mantığını vurguluyorum.

depo Walkthrough: İki Bağımsız Örnekle Öğrenmeyi Hızlandırmak

Eğitimi izleyip "tamam anladım" demek kolay. Asıl değer, iki örneği çalıştırıp sonuçları yorumlamakta. depo içinde üç kritik dosya var: requirements.txt, compare_models.py, app.py. Bu üçü birlikte "deneme -> karşılaştırma -> demo" akışını tamamlıyor.

Önce bağımlılıkları kurmak ve örnekleri çalıştırmak için pratik komutlar:

pip install -r requirements.txt
python compare_models.py
streamlit run app.py

Şimdi iki örneği tek tek ders notu gibi inceleyelim.

compare_models.py ne yapıyor? Bu betik "model seçimi" problemine pratik bir yaklaşım getiriyor. İçindeki iki yapı çok önemli:

  • MODELS: Karşılaştırılacak model listesi (ör. gpt-oss:20b, gpt-oss:120b, qwen3-coder:480b)
  • TASKS: Modelin cevap vermesini istediğin yapılandırılmış görevler

Scriptin yaklaşımı şu: Her modele aynı görevleri sorar, yanıt süresini ölçer ve basit bir kalite skoru çıkarır. Bu skor bir hakem değil; bir "erken sinyal". Skorun mantığı dosyada açık:

  • Anahtar kelime kapsama skoru (0-60): Görev için kritik kelimeleri geçiriyor mu?
  • Format skoru (0-40): Maddeleme var mı, satır sayısı makul mü, yanıt uzunluğu yeterli mi?

Skorun amacı şu: Hızlıca "bu model talimatları takip ediyor mu?" sorusuna yaklaşmak. Ama karar verirken mutlaka raporu okuyacaksın. betik, tüm çıktıları model_comparison_report.md dosyasına yazar. Bu dosyayı açıp yanıtları yan yana okumak, gerçek kalite farkını görmenin en iyi yoludur.

Bu betiği kendi senaryona uyarlamak için pratik öneriler:

  • Kendi işine uygun 3-5 görev ekle (Türkçe özetleme, kod üretimi, e-posta yazma, hata ayıklama vb.).
  • MODELS listesini /api/tags ile gördüğün erişilebilir modellere göre güncelle.
  • Skorun "tek ölçüt" olmadığını unutma; raporu mutlaka oku.

Şimdi ikinci örnek: app.py. Bu dosya Streamlit ile basit bir web arayüzü kuruyor. Bu demo, özellikle öğrenme ve manuel test için çok değerli. Çünkü CLI'de hızlı denersin ama bazen promptları düzenlemek, farklı formatları denemek, çıktıyı kopyalayıp incelemek tarayıcıda daha rahattır.

Uygulamanın akışı:

  • API key'i ortamdan alır veya kullanıcıdan ister.
  • bulut'dan model listesini çeker ve seçim sunar.
  • Prompt gönderilir, cevap ekranda gösterilir.

Bu yapının asıl öğretici tarafı şudur: Modeli "hardcode" etmek yerine listeden seçtirmek. Böylece erişilebilir modeller değişse bile uygulama dayanıklı olur. Bu, üretim sistemlerinde de çok işe yarayan bir alışkanlıktır.

Uygulamayı geliştirmek istersen, başlangıç için birkaç fikir:

  • Konuşma geçmişi (sohbet geçmişi) ekle: Önceki mesajları saklayıp tekrar gönder.
  • akış yanıt ekle: Cevap yazılıyor gibi görünsün.
  • Prompt şablonları ekle: "özetle / maddele / kod yaz" gibi hazır butonlar.
  • Çıktıyı kaydet: Prompt ve cevapları logla, sonra analiz et.

Sık Yapılan Hatalar ve Pratik Çözümler

Bu bölüm gerçek hayatın özeti: Hata alırsın ve çözersin. Ben en sık şunları görüyorum:

  • 401 Unauthorized: API key yok, yanlış veya header formatı hatalı. Önce Authentication dokümanına bak, sonra ortam değişkenini kontrol et.
  • Model bulunamadı: Model adı erişilebilir değil. İlk adım: /api/tags ile modelleri listele ve doğru adı seç.
  • Çok yavaş yanıt: Büyük model veya yoğunluk olabilir. Daha küçük model dene, promptu kısalt, akış kullanmayı düşün.
  • Virtualenv karışıklığı: Farklı Python ortamına kurulum yapılıyor. En temiz yöntem: venv aç, sonra pip install -r requirements.txt.
  • Türkçe karakterler bozuk görünüyor: Kopyalama yaparken HTML editör modu dışında yapıştırmış olabilirsin. Blogger'da HTML görünümünde yapıştırmak genelde en sorunsuz yoldur.

Bu hataların ortak mesajı şu: Önce bağlantı ve yetkiyi doğrula, sonra model listesini doğrula, en son uygulama kodunu kurcala. Bu sırayla ilerlemek zamandan tasarruf ettirir.

Sık Sorulan Sorular (SSS)

Bu eğitimden sonra en çok gelen soruları kısa ve net cevaplayayım. Buradaki amaç "ezber" değil; doğru kontrol noktalarını öğretmek.

  • Ollama Cloud ücretsiz mi? Çoğu kişi bulutu "hızlı deneme" için kullanıyor. Ancak limit/politikalar zaman içinde değişebilir. En güncel bilgi için bulut sayfasını kontrol et.
  • Hangi modeller var, hangisini seçmeliyim? "Şu model kesin var" diye varsayma. Önce /api/tags ile listeyi gör. Seçimi rubrikle yap: talimat takibi, tutarlılık, hız, Türkçe kalitesi ve senin senaryona uygunluk.
  • CLI'de -bulut var ama API'de yok, neden? CLI ve API tarafında isimlendirme farklı görünebilir. Uygulama tarafında modeli listeden seçtirmen bu sorunu pratikte çözer.
  • ollama signin ile API key aynı şey mi? Hayır. ollama signin daha çok CLI akışı için oturum açma mantığıdır. API tarafında ise genelde API key + Bearer header ile çalışırsın. Detay için Authentication sayfasına bak.
  • Veri gizliliği açısından neye dikkat etmeliyim? Kural basit: Hassas veriyi göndermeden önce mutlaka politika/şartları oku ve kurumunun kurallarına göre hareket et. Eğitim ve demo sırasında gerçek müşteri verisi yerine sentetik/anonim veri kullanmak iyi bir alışkanlıktır.
  • Türkçe karakterler bozuk görünürse? Genelde iki sebep olur: dosya encoding'i veya Blogger'a yapıştırma modu. Bu dosya UTF-8 olarak hazırlanmıştır. Blogger'da HTML modunda yapıştırmak çoğu zaman sorunu çözer.

Mini Çalışma: Kendi Deneme Setini Oluştur

Bu yazıyı gerçekten değerli kılmak için sana küçük bir "ödev" seti bırakmak istiyorum. Eğer bir modeli seçmek istiyorsan, şu üç tip prompt hazırla:

  • Format testi: "5 maddeyle anlat, her madde 1 cümle olsun" gibi.
  • Akıl yürütme testi: "Adım adım açıkla" gibi.
  • Senaryo testi: "Benim işim şu, bana bir taslak çıkar" gibi.

Sonra aynı üç promptu üç farklı modelde dene. Karşılaştırma yaparken sadece "doğru mu?" diye bakma; rubriğe geri dön: Talimat takibi, tutarlılık, okunabilirlik ve hız. Bu küçük alışkanlık, öğrenme sürecini hızlandırır ve model seçimini daha sağlam yapar.

Benim Önerdiğim Deneme Stratejisi

Eğer bir proje için model seçeceksem ben genelde şu akışla ilerliyorum:

  • Önce 2-3 aday model belirlerim (biri hızlı/küçük, biri büyük/kaliteli, biri kod odaklı vb.).
  • compare_models.py ile hızlı karşılaştırma yaparım.
  • Rapor dosyasından cevapları okur, talimat takibi ve tutarlılığa bakarım.
  • Seçtiğim 1-2 modeli app.py ile manuel prompt testine sokarım.
  • Sonra uygulama entegrasyonuna geçerim (Python client ile).

Bu akışın güzelliği şu: Model seçimi "hissiyat" değil, kısa ama sistematik bir deneme sürecine dayanıyor. Üstelik bunu donanım yatırımı yapmadan başlatabiliyorsun.

Videoyu ve Kodları Burada Bulabilirsin

YouTube eğitim kaydı: https://youtube.com/live/QEZ8oF4A68k

GitHub deposu (README ve örnek kodlar): https://github.com/kmkarakaya/OllamaCloud

Resmi kaynaklar:

Kapanış

Ben bu eğitimi, "donanımım yetmiyor" bahanesinin seni açık kaynak LLM denemekten uzaklaştırmaması için hazırladım. Ollama Cloud ile hem farklı modelleri hızlıca deneyebilir, hem de seçtiğin modeli Python tarafında gerçek bir uygulamaya bağlayabilirsin.

Eğer sen de açık kaynak LLM'leri hızlıca denemek, karşılaştırma yapmak ve pratik bir akış kurmak istiyorsan videoyu izle, depo içindeki örnekleri çalıştır, sonra kendi senaryona uyarlayıp geliştirmeye başla. Benzer içerikler için Murat Karakaya Akademi'yi takip etmeyi unutma.

Sunday, February 1, 2026

OpenClaw (Clawdbot) Rehberi: AI Agent Dünyasında Devrim mi, Hayal Kırıklığı mı?

OpenClaw (Clawdbot) Teknik İncelemesi: AI Agent Teknolojisinde İlk İzlenimler ve Risk Analizi

Değerli meslektaşlarım ve teknoloji meraklıları, bugün yapay zeka dünyasını kasıp kavuran, ancak arkasında büyük soru işaretleri barındıran OpenClaw (eski adıyla Clawdbot) projesini masaya yatırıyoruz. Bir akademisyen ve yazılım mimarı olarak, bu aracı 4 gün boyunca en derin teknik katmanlarına kadar test ettim. Sonuç; büyük bir potansiyel ama beraberinde getirdiği ciddi bir kaos.

Bu konuyu uygulamalı analizlerim ve kod yapısı üzerine düşüncelerimle birlikte takip etmek isterseniz videom size rehberlik edecektir:

Bu Eğitimde Neler Öğreneceksiniz?

  • Yapay Zeka İş Göreni (Agent) Kavramı: OpenClaw'un mimari yapısı ve vaatleri.
  • Kurulum Kabusu: Windows, WSL ve Mac arasındaki uyumsuzlukların teknik nedenleri.
  • Yetenekler (Capabilities) ve Bundle Yapısı: CLI araçlarının entegrasyonu.
  • Güvenlik ve Gizlilik Analizi: Headless browser ve hesap kapanma riskleri.
  • Gelecek Projeksiyonu: Projenin ticari akıbeti ve alternatifler.

1. OpenClaw Nedir? Bir "Kişisel Projenin" Anatomisi

OpenClaw, temelinde yerel makinenizde çalışan bir agent mimarisidir. Geliştiricisi, Github üzerinde 40'tan fazla kütüphaneyi bir araya getirerek, bilgisayarınızdaki işletim sistemi komutlarını, dosyaları ve harici servisleri yönetebilen bir yapı kurgulamış. Ancak dikkat edilmesi gereken nokta şudur: Bu bir ticari ürün değil, 3-4 günlük bir "kişisel proje" olarak meşhur oldu. Bu durum, dokümantasyondan tutun da kod stabilitesine kadar her noktada kendini hissettiriyor.

2. Tecrübeler ve Kurulum Zorlukları: 4 Günlük Kayıp mı?

Birçok Youtuber'ın "tek tıkla kurun" söylemlerinin aksine, teknik gerçeklik oldukça farklı. Yazılımın mimarisi neredeyse tamamen macOS ekosistemi düşünülerek kurgulanmış.

  • Windows Bariyeri: Doğrudan Windows üzerine kurulum yapmaya çalıştığınızda, bağımlılıklar ve yol tanımları (path) sebebiyle iki günüm sadece hataları çözmekle geçti.
  • WSL (Linux) Çıkmazı: Windows Subsystem for Linux (WSL) kullanımı bir çözüm gibi görünse de, OpenClaw'un "yeteneği" olan donanım erişimlerinde ve CLI bağlamlarında sistem kararsızlaşıyor.
  • Bundle Sorunları: Ana yazılımı kurmak kolay, ancak asıl güç olan "bundle" (yetenek paketleri) kısımları Windows'ta %99 oranında çalışmıyor.

3. Yetenekler ve CLI Entegrasyonu (Capabilities)

OpenClaw'u meşhur yapan asıl unsur, sadece sohbet etmesi değil, aksiyon almasıdır. Geliştirici, Google Docs, Gmail ve Drive gibi araçlara erişmek için özel CLI (GOG CLI) araçları yazmış. Yapay Zeka İş Göreni (Agent), bir işi yapması gerektiğinde CLI üzerinden komutlar üreterek sizin yerinize işlem yapar. Ancak bu süreçte dökümantasyon o kadar hızlı değişiyor ki, komut isimleri bile birbirine karışmış durumda.

# Kurulum ve Gateway başlama süreçlerinde isim değişikliklerine dikkat!

Eski komutlar: claudebot gateway

Yeni muhtemel yapı: openclaw launch

Not: Eğer Windows kullanıyorsanız stabilite sorunlarına hazırlıklı olun.

4. Kritik Riskler: Güvenlik ve Hesap Kapanmaları

Burada en ciddi uyarıyı yapmam gerekiyor. OpenClaw kullanımı iki ana risk barındırıyor:

  1. Gizlilik Riski: Yazılım lokalde çalışsa da, modeller (GPT-4, Claude vb.) bulut tabanlıdır. Dokümanlarınızı okuttuğunuzda verileriniz dışarı çıkar. Ollama ile %100 lokal çözüm mümkün olsa da muazzam bir GPU gücü gerektirir.
  2. Sosyal Medya Ban Riski: Araç, Instagram veya X gibi platformlara "headless browser" üzerinden bağlanıyor. Sosyal medya platformları bot kullanımını yasaklar. OpenClaw'un bu kullanımı tespit edilebilir ve hesaplarınızın kalıcı olarak kapanmasına neden olabilir.

5. Gelecek Beklentileri: Bu Yol Nereye Gider?

OpenClaw şu an bir "hype" dalgasının üzerinde. Ancak bu mimarinin geleceği çok açık:

  • Kurumsallaşma: Muhtemelen büyük bir teknoloji devi (Google veya OpenAI) bu projeyi veya benzerlerini satın alıp daha güvenli/ücretli bir modele dönüştürecektir.
  • Alternatiflerin Doğuşu: 3-4 ay içerisinde daha stabil, Windows dostu ve dökümante edilmiş alternatiflerin çıkması kaçınılmazdır.

Sıkça Sorulan Sorular (SSS)

1. Windows'ta denemeli miyim? Şu anki haliyle hayır. Eğer ileri düzey bir sistem yöneticisi değilseniz, harcayacağınız zaman alacağınız verimden çok daha fazla olacaktır.

2. OpenClaw güvenli mi? Açık kaynak kodlu olması bir avantaj ancak tek bir kişinin kontrolünde olan ve API yetkilerinizi verdiğiniz her araç gibi risk taşır. Özellikle sosyal medya entegrasyonlarından kaçınmalısınız.

3. Mac kullanıcıları neden daha avantajlı? Geliştirici kendi iş akışını Mac üzerinde kurguladığı için tüm testler ve kütüphane yolları bu işletim sistemine göre optimize edilmiş durumdadır.

Sonuç

OpenClaw, yapay zekanın sadece bir "sohbet botu" olmaktan çıkıp "iş yapan bir asistan" olma yolundaki önemli ama sancılı bir adımıdır. Teknik eksikliklerine rağmen bu heyecan verici alanı takip etmeye devam edeceğiz. Ancak şu an için "erken erişimdeki" bir oyun gibi düşünün; hatalar çok, stabilite az.

Daha Fazlasını Keşfedin: Yapay zeka ve yazılım mimarisi dünyasındaki derinlemesine analizleri kaçırmamak için Murat Karakaya Akademi YouTube kanalına abone olun. Kanalı Ziyaret Et & Abone Ol 🚀

#MuratKarakayaAkademi #OpenClaw #Clawdbot #AI #DeepLearning #SoftwareArchitecture #YapayZeka

Thursday, January 22, 2026

LLAMA 3 ve Unsloth ile Adım Adım Fine-Tuning Rehberi

LLAMA 3 ve Unsloth ile Nutuk Eğitimi: Adım Adım Fine-Tuning Rehberi

Merhabalar arkadaşlar, Murat Karakaya Akademi YouTube kanalına hoş geldiniz. Bugün, daha önce başladığımız "İnce Ayar (Fine-Tuning)" eğitim serimizin en kritik aşamalarından birini gerçekleştireceğiz. 8 milyar parametreli devasa bir dil modeli olan LLAMA 3'ü, kendi hazırladığımız Nutuk veri setiyle nasıl eğitebileceğimizi ve ona Atatürk'ün ölümsüz eseri hakkında nasıl uzmanlık kazandırabileceğimizi göreceğiz.

Bu eğitimde sadece kod yazmayacağız; arkadaki matematiksel hileyi (LoRA), bellek optimizasyonunu ve modelin neden Unsloth kütüphanesiyle 2 kat daha hızlı eğitildiğini derinlemesine inceleyeceğiz. Hazırsanız, yapay zekanın "ince ayar" dünyasına giriş yapalım.

Bu konuyu uygulamalı olarak görmek ve kodları adım adım takip etmek için videoyu izlemenizi öneririm:

Bu Eğitimde Neler Öğreneceksiniz?

  • PEFT ve LoRA Kavramları: Milyarlarca parametreyi eğitmek yerine neden küçük "adaptörler" kullanıyoruz?
  • Unsloth Kütüphanesi: Bellek dostu ve yüksek performanslı Fine-Tuning nasıl yapılır?
  • Veri Hazırlığı: Nutuk metinlerini ShareGPT formatına ve modelin anlayacağı "Instruction" yapısına dönüştürme.
  • QLoRA (4-bit Quantization): T4 gibi ücretsiz GPU'larda dev modelleri eğitmenin sırrı.
  • Model Yayını: Eğitilen modeli Hugging Face'e yükleme ve tekrar geri çağırma.

Fine-Tuning'in Arkasındaki "Sihir": LoRA ve Düşük Dereceli Matrisler

Normalde 8 milyar parametreli bir modeli baştan aşağı eğitmek (Full Fine-Tuning) devasa sunucu parkları gerektirir. Ancak biz LoRA (Low-Rank Adaptation) yöntemini kullanıyoruz. Peki bu nedir?

Düşünün ki dev bir matrisiniz var (modelin ağırlıkları). Biz bu matrisin kendisini değiştirmek yerine, onun yanına çok daha küçük iki matris ekliyoruz. Bu iki küçük matrisin çarpımı, orijinal matristeki değişimi temsil ediyor. Örneğin, 200 milyon parametreyi temsil etmek için sadece 120 bin parametre eğitmemiz yetiyor. İşte bu "matematiksel hile", evdeki bilgisayarlarımızda bile yapay zeka eğitmemizi sağlıyor.

Yapay Zeka Eğitim Görseli

Teknik Derinleşme: Unsloth ve Model Yükleme

Unsloth kütüphanesi, Hugging Face ve Llama.cpp kütüphanelerini temel alarak optimizasyonlar yapar. Bellek kullanımını %70'e kadar azaltırken hızı 2 kat artırabilir. İlk adım olarak modelimizi 4-bit kuantize edilmiş halde yüklüyoruz:

from unsloth import FastLanguageModel
import torch

max_seq_length = 2048 # İstediğiniz uzunluk
dtype = None # Otomatik algılama
load_in_4bit = True # Bellek dostu eğitim için

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name = "unsloth/llama-3-8b-Instruct-bnb-4bit",
    max_seq_length = max_seq_length,
    dtype = dtype,
    load_in_4bit = load_in_4bit,
)

Veri Seti Hazırlığı: Nutuk'u Modele Öğretmek

Bir önceki dersimizde hazırladığımız 4300 soruluk Nutuk veri setini, modelin "sohbet" edebilmesi için ShareGPT formatına çeviriyoruz. Modelin sadece soruyu değil, bir sohbet akışını (User -> Assistant) anlaması için "Conversation" yapısını kuruyoruz:

def formatting_prompts_func(examples):
    instructions = examples["instruction"]
    inputs       = examples["input"]
    outputs      = examples["output"]
    texts = []
    for instruction, input, output in zip(instructions, inputs, outputs):
        # Modelin chat template'ine göre formatlama
        text = f"### Instruction:\n{instruction}\n\n### Input:\n{input}\n\n### Response:\n{output}"
        texts.append(text)
    return { "text" : texts, }

# Veri setini yükleme ve formatlama adımı burada gerçekleşir

Eğitim Parametreleri ve Optimizasyon

Eğitim esnasında en önemli parametrelerden biri Rank (R) değeridir. Bu değer, adaptörün ne kadar karmaşık olacağını belirler. Biz bu örnekte R=16 kullandık. Daha yüksek değerler daha fazla öğrenme kapasitesi sunsa da bellek maliyetini artırır. 17 dakikalık bir eğitim sonucunda modelin "loss" değerinin 2.7'den 1.2'ye düştüğünü gözlemledik.

Önemli Not: Fine-tuning yapmadan önce model Sivas Kongresi sorularına İngilizce cevap verirken, eğitim sonrası veri setimizdeki üslupla Türkçe ve net cevaplar vermeye başladı.

Sıkça Sorulan Sorular (SSS)

1. Kendi veri setimle bu eğitimi yapabilir miyim?
Kesinlikle. Tek yapmanız gereken verilerinizi "Soru-Cevap" formatında bir JSON veya CSV dosyasına dönüştürmek ve videoda gösterdiğimiz formatting_prompts_func fonksiyonuyla modele sunmaktır.

2. LoRA Rank (R) değerini nasıl belirlemeliyim?
Genellikle 8, 16 veya 32 değerleri standarttır. Eğer modeliniz çok karmaşık bir konuyu (örneğin ileri düzey tıp veya hukuk) öğreniyorsa rank değerini artırabilirsiniz, ancak aşırı öğrenme (overfitting) riskine dikkat etmelisiniz.

3. Google Colab'ın ücretsiz GPU'su yeterli mi?
Evet, Unsloth kütüphanesinin 4-bit optimizasyonu sayesinde LLAMA 3 (8B) modelini ücretsiz T4 GPU'da sorunsuzca eğitebilirsiniz. Bellek kullanımımız yaklaşık 13-15 GB civarında seyretmektedir.

Sonuç

Özetle; doğru araçları (Unsloth), doğru yöntemleri (QLoRA) ve kaliteli bir veri setini (Nutuk) bir araya getirdiğinizde, devasa dil modellerini kendi ihtiyaçlarınıza göre özelleştirmeniz artık hayal değil. Bu model artık sadece genel bir dil modeli değil, aynı zamanda Nutuk konusunda uzmanlaşmış bir asistandır.

Daha Fazlasını Keşfedin:
Yapay zeka ve yazılım dünyasındaki gelişmeleri kaçırmamak için Murat Karakaya Akademi YouTube kanalına abone olun.

Kanalı Ziyaret Et & Abone Ol 🚀

#MuratKarakayaAkademi #FineTuning #Llama3 #Unsloth #Nutuk #YapayZeka #DeepLearning #Python

Teknofest Yapay Zeka Yarışması: Tıp Doktorundan Derece Tüyoları

Teknofest Sağlıkta Yapay Zeka Yarışması: Bir Tıp Doktorunun Dereceye Uzanan Yolculuğu

Merhabalar arkadaşlar, Murat Karakaya Akademi kanalına ve bloğuna hoş geldiniz. Bugün, özellikle yapay zekaya ilgi duyan ancak "Ben mühendis değilim, bu işi yapabilir miyim?" diye soran herkes için ilham verici bir başarı hikayesini ve teknik bir rehberi paylaşıyoruz.

Konuğumuz, 2019 Çapa Tıp mezunu olan ve mesleğini icra ederken yapay zeka alanında kendini sıfırdan geliştirerek Teknofest "Sağlıkta Yapay Zeka" yarışmasında 5800 takım arasından finalist olup 7.lik derecesi elde eden Dr. Alperen Kaban. Bu yazıda, Alperen Hocamızın tecrübelerinden yola çıkarak; sıfırdan öğrenme sürecinden DICOM verilerinin sanatsal işlenişine kadar tüm detayları inceleyeceğiz.

Bu değerli tecrübe aktarımını ve yarışma atmosferini Alperen Hocamızın kendi ağzından dinlemek için videoyu izlemenizi şiddetle öneririm:

Bu Eğitimde Neler Öğreneceksiniz?

  • Tıp doktoru olarak sıfırdan yapay zeka uzmanlığına geçiş metotları (MIT OCW, Kaggle ve ötesi).
  • Teknofest Raporlama Aşamaları: Proje Sunuş ve Detay Raporunda jürinin beklediği kritik detaylar.
  • Tıbbi görüntüleme (DICOM) verileriyle çalışma: 16-bit hassasiyeti ve veri kaybını önleme yolları.
  • Kaggle ve Teknofest veri setleri arasındaki yapısal farklar ve model stratejileri.
  • Final alanındaki donanım hazırlığı: Yedek bilgisayarın ve Docker kullanımının önemi.

1. Sıfırdan Başlamak: Bir Doktorun AI Yolculuğu

Dr. Alperen Kaban, 2019 yılında mezun olduktan sonra geleneksel yollar yerine programlama öğrenmeye karar veriyor. Sürecini şu şekilde özetliyor: "İlk yıl programlamanın temellerini (C ve Python) öğrendim. Google'ın AlphaGo belgeseli beni çok etkiledi ve bu alanın dünyayı değiştireceğine inandım."

Hocamızın önerdiği kaynak rotası ise altın değerinde:

  • MIT OCW (OpenCourseWare): Özellikle bilgisayar bilimi temelleri için 6.001 gibi dersler.
  • YouTube ve Udemy: Uygulamalı projeler (Tutorials).
  • Kaggle: Bitmiş yarışmaların çözümlerini incelemek ve lider tablolarındaki yöntemleri analiz etmek.

2. Teknofest Raporlama ve Strateji: Sadece Kod Yetmez

Teknofest, sadece en yüksek skoru alanın kazandığı bir yer değildir. Süreç; Proje Sunuş Raporu, Proje Detay Raporu ve Finaller şeklinde üç aşamadan oluşur. Alperen Hoca, birçok takımın "raporlama" aşamasında elendiğine dikkat çekiyor.

Raporun Püf Noktaları:

  • Literatür Taraması: Amerika'yı yeniden keşfetmeyin. Benzer problemler için hangi makaleler neyi önermiş? (Örn: Segmentasyon için Unet mi, Mask R-CNN mi?)
  • Özgün Değer: Siz bu literatürün üzerine ne koyuyorsunuz? Hangi veri artırma (Augmentation) tekniklerini denediniz?
  • Analitik Yaklaşım: ChatGPT ile doldurulmuş basit metinler yerine; verinin istatistiksel analizini, sınıf dengesizliğini ve preprocessing (ön işleme) basamaklarını detaylandırın.

3. Teknik Derinlik: DICOM ve Ön İşleme (Preprocessing)

Tıbbi verilerle çalışırken en büyük hata, DICOM dosyalarını standart JPG gibi görmektir. DICOM dosyaları 16-bit veri ve metadata (üst veri) barındırır. Hocamızın vurguladığı gibi: "16-bit veriyi yanlışlıkla 8-bit'e cast ederseniz, teşhis koyduracak o minik piksel farklarını kaybedersiniz."

Aşağıdaki Python örneği, BT (Bilgisayarlı Tomografi) verilerini doğru şekilde normalize etmek ve "Hounsfield Unit" (HU) dönüşümü yapmak için temel bir çerçeve sunar:

import pydicom
import numpy as np

def dicom_to_tensor(filepath):
    # DICOM dosyasını metadata ile oku
    ds = pydicom.dcmread(filepath)
    image = ds.pixel_array.astype(float)
    
    # Metadata'dan Rescale Slope ve Intercept değerlerini al
    # Bu değerler BT görüntülerindeki HU değerlerini hesaplamak için şarttır!
    slope = ds.RescaleSlope if 'RescaleSlope' in ds else 1
    intercept = ds.RescaleIntercept if 'RescaleIntercept' in ds else 0
    
    # Gerçek HU değerlerine dönüştür
    image = (image * slope) + intercept
    
    # Windowing (Pencereleme) - Akciğer için örnek: Center -600, Width 1500
    win_center, win_width = -600, 1500
    img_min = win_center - win_width // 2
    img_max = win_center + win_width // 2
    
    # Sınırları aşan pikselleri kırp (Clipping)
    image = np.clip(image, img_min, img_max)
    
    # 0-1 Normalizasyonu
    image = (image - img_min) / (img_max - img_min)
    
    return image

Dikkat Edilmesi Gerekenler: Maske (Segmentasyon) verileri her zaman iyi organize edilmiş olmayabilir. Zip dosyalarının içindeki klasör yapılarını manuel analiz etmek gerekebilir.

4. Kaggle vs. Teknofest Farkı

Dr. Alperen Kaban'a göre iki platformun veri yapıları çok farklıdır:

  • Kaggle: Veri seti çok büyük ve gürültülüdür (Noisy). Modelin "genellenebilirliği" (Generalization) daha zordur.
  • Teknofest: Veri seti daha "butik" ve temizdir. Radyologlar tarafından 3 aşamalı kontrolden geçirilmiş, kesin tanılı verilerdir. Ancak veri az olduğu için Overfitting (Aşırı öğrenme) riskine karşı dikkatli olunmalıdır.

5. Final Günü Hazırlığı: Sınav Atmosferi

Final alanına geldiğinizde sadece yazılım bilginiz değil, kriz yönetiminiz de test edilir. Hocamızın hayati önerileri:

  • İnternetsiz Çalışma: Alanda internet çok yavaş veya kesik olabilir. Tüm kütüphaneleri (PyTorch, TF, OpenCV) önceden kurup, modellerinizi internetsiz çalışacak şekilde yedekleyin.
  • Donanım: Yanınızda mutlaka güçlü bir yedek bilgisayar götürün. Final çıkarımı (Inference) için sınırlı süreniz (genelde 1 saat) olacak.
  • Formatlar: Sonuçları genelde bir JSON objesi olarak yüklemeniz beklenir. Kodunuzun bu formatı hatasız ürettiğinden emin olun.

Sıkça Sorulan Sorular (SSS)

1. Mühendislik okumayan biri bu yarışmada başarılı olabilir mi?
Evet! Alperen Hocamız bunun en canlı örneğidir. Ciddi bir çalışmayla (yaklaşık 1-2 yıl) bir bilgisayar mühendisi seviyesine gelmek mümkündür.

2. Yarışmada bulut tabanlı (Colab/Kaggle) araçlar kullanılabilir mi?
Ön hazırlık aşamasında evet, ancak final anında internet kullanımı yasak olabilir. Tüm işlemlerinizi yerel (local) donanımınızda yapabilmelisiniz.

3. Takım kurarken nelere dikkat edilmeli?
Görev dağılımını en baştan yapın (Veri temizliği, Rapor yazımı, Model eğitimi). İletişim sorunu olmayan, disiplinli arkadaşları seçmek "zaman çizelgesine" uymak için kritiktir.

Sonuç

Yapay zeka sadece bilgisayar mühendislerinin tekelinde değil; her disiplinden gelen uzmanın kendi bilgisiyle harmanladığında devrim yaratabileceği bir alandır. Alperen Hocamızın başarısı, sabır ve doğru kaynak takibinin sonucudur. Siz de Teknofest'e katılarak bu ekosistemin bir parçası olabilirsiniz.

Daha Fazlasını Keşfedin:
Yapay zeka, derin öğrenme ve modern yazılım dünyasındaki güncel gelişmeleri, Türkçe ve İngilizce anlatımlarla takip etmek için Murat Karakaya Akademi kanalımıza davetlisiniz.

Kanalı Ziyaret Et & Abone Ol 🚀

#MuratKarakayaAkademi #Teknofest #YapayZeka #SağlıktaYapayZeka #DeepLearning #Python #DICOM #DrAlperenKaban

İnce Ayar (Fine-Tuning): QLoRA Adaptörünü GGUF Formatına Dönüştürme ve Ollama Entegrasyonu

İnce Ayar (Fine-Tuning) Serisi: QLoRA Adaptörünü GGUF Formatına Dönüştürme ve Ollama Entegrasyonu

Değerli arkadaşlar, Murat Karakaya Akademi'ye hoş geldiniz. İnce ayar (Fine-Tuning) eğitim serimizin dördüncü ve tamamlayıcı bölümüyle karşınızdayım. Hatırlarsanız bu seriye veri setimizi hazırlayarak başlamış, ardından temel kavramları incelemiş ve üçüncü videomuzda Llama 3 modelini "Nutuk" verisiyle Unsloth kütüphanesini kullanarak eğitmiştik.

Bugünkü dersimizde ise eğittiğimiz bu QLoRA adaptörünü, baz (base) model ile birleştirip tek bir dosya haline getireceğiz. Daha sonra bu modeli GGUF formatına dönüştürüp 4-bit quantization (nitelik kaybı olmadan boyut küçültme) işlemini uygulayacağız. Son olarak da elde ettiğimiz bu modeli Ollama ve Llama.cpp kullanarak yerel bilgisayarımızda nasıl çalıştırabileceğimizi adım adım göreceğiz. Bu işlem, eğittiğiniz modelleri dağıtmak ve CPU üzerinde bile hızlıca çalıştırmak için kritik bir adımdır.

Bu teknik süreci uygulamalı olarak görmek, kodları adım adım takip etmek ve modelin canlı performansını izlemek için videoyu izlemenizi öneririm:

Bu Eğitimde Neler Öğreneceksiniz?

  • QLoRA adaptörünün baz model (Llama 3) ile birleştirilmesi (Merging).
  • Unsloth kütüphanesi ile GGUF formatına dönüşüm ve 4-bit Quantization.
  • Modelin Hugging Face Hub üzerine yüklenmesi.
  • Eğitilen modelin Ollama ve Llama.cpp ile yerel bilgisayarda çalıştırılması.
  • Gradio kullanarak model için basit bir sohbet arayüzü oluşturulması.

Neden Birleştirme (Merging) ve GGUF?

Bir önceki dersimizde modelimizi QLoRA tekniği ile eğitmiş ve elimizde sadece eğitilen parametreleri içeren küçük bir "adaptör" dosyası kalmıştı. Ancak modeli kullanmak istediğimizde hem devasa baz modeli hem de adaptörü aynı anda yüklememiz gerekiyordu. Bu durum hem bellek yönetimi açısından zorlayıcıdır hem de çıkarım (inference) hızını düşürür.

Bugün yapacağımız "Merging" işlemi ile adaptörü baz modelin içine gömeceğiz. Ardından yapacağımız GGUF dönüşümü ile modeli tek bir dosya haline getirip, Apple Silicon (Mac) veya standart CPU'lu bilgisayarlarda bile çok hızlı çalışabilir hale getireceğiz. Unsloth kütüphanesi, normalde Llama.cpp ile yapılan bu karmaşık işlemi bizim için çok basit bir hale getiriyor.

Unsloth ile GGUF Dönüşümü ve Hugging Face Upload

Unsloth kütüphanesi, modelin kaydedilmesi aşamasında bize save_pretrained_gguf metodunu sunar. Bu metod sayesinde hem 16-bit (orijinal) hem de 4-bit (quantize edilmiş) versiyonları tek komutla oluşturabilir ve Hugging Face hesabımıza yükleyebiliriz.

Aşağıdaki kod bloğunda, eğittiğimiz modelin "q4_k_m" (4-bit medium) formatında dönüştürülüp yüklenmesini görüyoruz:

# Modeli GGUF formatında kaydetme ve Hugging Face'e yükleme
model.push_to_hub_gguf(
    "hf_kullanici_adiniz/Nutuk-Llama-3-8B-GGUF", # Hugging Face Repo Adı
    tokenizer,
    quantization_method = "q4_k_m", # Yaygın kullanılan 4-bit quantization
    token = "hf_token_buraya_gelecek" # Hugging Face Token'ınız
)

Ollama ile Yerelde Çalıştırma

Modelimiz Hugging Face üzerinde GGUF formatında hazır olduğunda, artık onu Ollama ile çalıştırmak çocuk oyuncağı. Ollama'nın yeni özelliklerinden biri, doğrudan Hugging Face üzerindeki GGUF dosyalarını indirip çalıştırabilmesidir.

Google Colab veya yerel terminalinizde şu komutu kullanarak modeli indirebilir ve sohbeti başlatabilirsiniz:

# Ollama'yı arka planda çalıştırın (Linux/Colab için)
ollama serve &

# Hugging Face üzerindeki GGUF modelini çalıştırın
ollama run hf.co/hf_kullanici_adiniz/Nutuk-Llama-3-8B-GGUF

Python ve Gradio ile Arayüz Oluşturma

Sadece terminalden değil, Python kodları içerisinden de modelimize erişebiliriz. Videoda gösterdiğim gibi, llama-cpp-python kütüphanesini kullanarak bir çıkarım (inference) fonksiyonu yazabilir ve bunu Gradio ile basit bir web arayüzüne dönüştürebiliriz.

from llama_cpp import Llama

# Modeli yükle (Hugging Face'den indirdiğiniz GGUF dosya yolu)
llm = Llama(
    model_path="./Nutuk-Llama-3-8B.Q4_K_M.gguf",
    chat_format="llama-3"
)

# Örnek sorgu
response = llm.create_chat_completion(
    messages=[
        {"role": "user", "content": "Sivas Kongresi ne zaman yapıldı?"}
    ]
)

print(response['choices'][0]['message']['content'])

Sıkça Sorulan Sorular (SSS)

1. Neden modeli GGUF formatına çeviriyoruz?
GGUF formatı, modelin tek bir dosya içinde tutulmasını sağlar ve özellikle CPU (işlemci) üzerinde çalıştırmak için optimize edilmiştir. Ayrıca 4-bit quantization ile model boyutu 16GB'lardan 4-5GB seviyelerine düşer, bu da standart bilgisayarlarda çalışmasını mümkün kılar.

2. Unsloth kullanmadan bu işlemi yapabilir miyim?
Evet, llama.cpp kütüphanesini doğrudan kullanarak da dönüşüm yapabilirsiniz ancak bu süreç çok daha manuel ve karmaşıktır. Unsloth, bu süreci optimize ederek arka planda gerekli dönüşümleri otomatik yapar.

3. Eğittiğim modeli ticari olarak kullanabilir miyim?
Bu, temel aldığınız modelin (Llama 3) lisansına ve kullandığınız veri setinin telif haklarına bağlıdır. Llama 3 genellikle açık bir lisansa sahiptir ancak "Nutuk" gibi kamuya mal olmuş veriler dışında özel veri setleri kullanıyorsanız dikkatli olmalısınız.

Sonuç

Bu eğitimle birlikte, veri seti hazırlamadan başlayıp, modeli eğitme ve son kullanıcıya sunulabilir bir formata (GGUF) dönüştürme sürecini tamamlamış olduk. Artık kendi özelleştirilmiş yapay zeka modellerinizi oluşturup, şirketinizde veya kişisel projelerinizde internete ihtiyaç duymadan (lokal olarak) çalıştırabilirsiniz.

Daha Fazlasını Keşfedin:
Yapay zeka, Büyük Dil Modelleri (LLM) ve yazılım dünyasındaki en güncel gelişmeleri teknik derinlikle öğrenmek için Murat Karakaya Akademi YouTube kanalına abone olun.

Kanalı Ziyaret Et & Abone Ol 🚀

#MuratKarakayaAkademi #FineTuning #Llama3 #GGUF #Ollama #YapayZeka

Google Gemma 3: Türkçe Destekli Açık Kaynak Yapay Zeka Devrimi

Google Gemma 3: Türkçe Destekli Açık Kaynak Yapay Zeka Devrimi

Merhabalar arkadaşlar, hoş geldiniz. Bugün sizlerle Google DeepMind tarafından yayınlanan ve yapay zeka dünyasında, özellikle açık kaynak modeller tarafında büyük ses getiren Gemma 3 modelini derinlemesine inceleyeceğiz.

Biliyorsunuz, açık kaynak dünyası hızla gelişiyor ancak Türkçe dil desteği konusunda her zaman bazı kısıtlarla karşılaşıyorduk. Gemma 3, 128.000 token bağlam penceresi (context window) ve resmi Türkçe desteği ile oyunun kurallarını değiştiriyor olabilir. Peki, 4 milyar parametreli "küçük" bir model, 27 milyarlık abileriyle veya ChatGPT gibi devlerle yarışabilir mi? Gelin, teknik detaylara ve performans testlerine birlikte bakalım.

Bu konuyu uygulamalı olarak görmek, kodları adım adım takip etmek ve modelin canlı performans testlerini izlemek için videoyu izlemenizi şiddetle öneririm:

Bu Eğitimde Neler Öğreneceksiniz?

  • Gemma 3'ün teknik mimarisi ve getirdiği yenilikler (Multimodal yapı).
  • Modelin Türkçe dil performansı, mantık ve muhakeme yetenekleri.
  • 4B ve 27B modellerin donanım gereksinimleri (VRAM tüketimi).
  • Açık kaynak modellerin yerel bilgisayarda çalıştırılması.
  • RAG ve Agent (İş Gören) sistemlerinde kullanım potansiyeli.

Gemma 3 Nedir ve Neden Önemli?

Google'ın "Gemma" serisi, aslında kapalı kaynak olan Gemini modellerinin teknolojisiyle üretilmiş, ağırlıkları (weights) halka açılmış versiyonlarıdır. Gemma 3 ile birlikte Google, sadece ağırlıkları değil, teknik raporu da yayınlayarak şeffaflık konusunda önemli bir adım attı.

Bu modelin en çarpıcı özelliği Multimodal (Çok Modlu) olmasıdır. Yani modele hem metin hem de görsel verip, metin çıktısı alabilirsiniz. Ayrıca daha önceki versiyonlarda 8K olan bağlam penceresi, Gemma 3 ile 128K seviyesine çıkarılmış. Bu, yaklaşık olarak yüzlerce sayfalık bir kitabı tek seferde modele verip üzerinde konuşabileceğiniz anlamına gelir.

Türkçe Performansı ve Tokenizer Devrimi

Videodaki testlerimizde gördük ki, Gemma 3 özellikle Türkçe konusunda çok başarılı. Bunun arkasındaki temel sebep, Google'ın Tokenizer yapısını değiştirmesidir. Eski modeller genellikle İngilizce ağırlıklı eğitildiği için Türkçe kelimeleri çok fazla parçaya bölüyor ve anlam bütünlüğünü kaybedebiliyordu. Gemma 3, 140 dili kapsayan özel eğitim setiyle Türkçeyi "anadil" seviyesine yakın bir akıcılıkta işliyor.

Mantık ve Muhakeme Testleri

4 milyar parametreli (4B) versiyonu 4-bit quantize edilmiş haliyle test ettik. Şaşırtıcı sonuçlar aldık:

  • Oğuz Atay Özeti: "Tutunamayanlar" kitabından ağır bir paragrafı başarıyla ve felsefi derinliği koruyarak özetledi.
  • Mantık Soruları: Klasik "kuruyan gömlek" veya "otobüs durağı" sorularında, kendisinden çok daha büyük modellerin (hatta bazen GPT-4 seviyesindeki modellerin) düştüğü tuzaklara düşmedi. Kendi hatasını fark edip düzeltebilen bir yapı sergiledi.

Kodlama ve Teknik Kurulum

Gemma 3'ü yerel bilgisayarınızda çalıştırmak için Unsloth, Hugging Face Transformers veya Ollama kullanabilirsiniz. 4B modeli çalıştırmak için yaklaşık 7-8 GB VRAM (veya RAM) yeterli oluyor. Bu da ortalama bir oyun bilgisayarında veya Apple Silicon işlemcili bir Mac'te rahatlıkla çalışabileceği anlamına gelir.

Aşağıda, modeli Python ortamında `unsloth` kütüphanesi ile nasıl yükleyebileceğinize dair basit bir örnek paylaşıyorum:

from unsloth import FastLanguageModel
import torch

# 4-bit quantization ile modeli yükle (Daha az bellek kullanımı için)
max_seq_length = 2048
dtype = None 
load_in_4bit = True 

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name = "unsloth/gemma-3-4b-it-bnb-4bit", 
    max_seq_length = max_seq_length,
    dtype = dtype,
    load_in_4bit = load_in_4bit,
)

# Inference (Tahmin) Moduna Al
FastLanguageModel.for_inference(model)

# Prompt Formatı
messages = [
    {"role": "user", "content": "Bana Python'da bir QuickSort algoritması yazabilir misin?"},
]

inputs = tokenizer.apply_chat_template(
    messages,
    tokenize = True,
    add_generation_prompt = True,
    return_tensors = "pt",
).to("cuda")

# Çıktı Üret
outputs = model.generate(input_ids = inputs, max_new_tokens = 1024, use_cache = True)
print(tokenizer.batch_decode(outputs)[0])

Bu kod bloğu, Unsloth kütüphanesinin optimize edilmiş yapısını kullanarak modeli çok daha hızlı ve az bellek tüketerek çalıştırmanızı sağlar.

Sıkça Sorulan Sorular (SSS)

1. Gemma 3 tamamen ücretsiz mi?
Evet, Gemma 3 açık ağırlıklı (open weights) bir modeldir. Ticari kullanım şartlarına (Google'ın lisansına) uymak kaydıyla projelerinizde ücretsiz kullanabilirsiniz.

2. ChatGPT yerine kullanılabilir mi?
Günlük sohbetler için ChatGPT daha geniş bir genel kültüre sahip olabilir. Ancak veri gizliliğinin önemli olduğu şirket içi projelerde, RAG (Retrieval Augmented Generation) sistemlerinde ve yerel "Agent" (İş Gören) uygulamalarında Gemma 3 harika bir alternatiftir.

3. Hangi donanıma ihtiyacım var?
4 milyar parametreli (4B) modeli çalıştırmak için 8GB RAM/VRAM yeterlidir. 27 milyar parametreli (27B) versiyonu verimli çalıştırmak için ise RTX 3090 veya 4090 gibi en az 24GB VRAM'e sahip kartlar önerilir.

Sonuç

Özetle, Google Gemma 3, özellikle Türkçe doğal dil işleme projeleri geliştirmek isteyen mühendisler, öğrenciler ve araştırmacılar için muazzam bir fırsat. Açık kaynak olması, yerelde çalışabilmesi ve mantıksal çıkarım yeteneğinin boyutuna göre çok yüksek olması onu öne çıkarıyor. Projelerinizde API maliyetlerinden kurtulmak ve verinizi dışarı çıkarmadan işlemek istiyorsanız, Gemma 3'ü mutlaka test etmelisiniz.

Daha Fazlasını Keşfedin:
Yapay zeka, Büyük Dil Modelleri (LLM) ve yazılım dünyasındaki en güncel gelişmeleri teknik derinlikle öğrenmek için Murat Karakaya Akademi YouTube kanalına abone olun.

Kanalı Ziyaret Et & Abone Ol 🚀

#MuratKarakayaAkademi #Gemma3 #YapayZeka #LLM #DeepLearning #Python

Google Gemma 3 Vision: Python ile Görüntü İşleme, OCR ve Tarihi Analiz Deneyimleri

Google Gemma 3 Vision: Python ile Görüntü İşleme, OCR ve Tarihi Analiz Deneyimleri

Merhaba değerli arkadaşlar, ben Prof. Dr. Murat Karakaya. Murat Karakaya Akademi'ye hoş geldiniz. Bugün hem teknik hem de manevi açıdan çok özel bir inceleme ile karşınızdayım. 18 Mart Çanakkale Zaferi vesilesiyle, Google'ın yeni multimodal modeli Gemma 3 (4B)'ü, Çanakkale Savaşı'na ait tarihi fotoğraflar, belgeler ve menüler üzerinde test ettik.

Amacımız şu: Sadece 4 milyar parametreli küçük bir model, karmaşık tarihi belgeleri okuyabilir mi (OCR)? Yıpranmış siyah beyaz fotoğraflardaki duyguyu ve bağlamı anlayabilir mi? Ve en önemlisi, bunları Türkçe olarak hatasız yorumlayabilir mi? Sonuçlar beni gerçekten şaşırttı. Gelin, bu deneyimi ve Python kodlarını birlikte inceleyelim.

Bu duygusal ve teknik analizi baştan sona izlemek, modelin tarihi belgeleri nasıl yorumladığına şahit olmak için videoya göz atmanızı öneririm:

Bu Eğitimde Neler Öğreneceksiniz?

  • Hugging Face Transformers kütüphanesi ile Gemma 3 Vision kurulumu.
  • Gemma 3'ün OCR (Optik Karakter Tanıma) performansı ve kalori hesabı örneği.
  • Eski ve yıpranmış fotoğraflarda duygu ve bağlam analizi.
  • Yabancı dildeki (İngilizce/Yunanca) tarihi belgelerin analizi ve çevirisi.
  • Python ile Multimodal (Resim + Metin) pipeline oluşturma.

Gemma 3 Vision ve Teknik Altyapı

Gemma 3, sadece metin üreten bir LLM değil, aynı zamanda görüntüleri de "görebilen" bir VLM (Vision Language Model). Modelin içinde bir Vision Encoder bulunuyor. Bu encoder, görüntüyü küçük parçalara (patch) bölüyor, token'lara çeviriyor ve dil modelinin anlayabileceği bir formata dönüştürüyor.

Bu çalışmada, henüz çok yeni olduğu için Hugging Face'in transformers kütüphanesinin geliştirici sürümünü (GitHub branch) kullandık. Model olarak da 4 milyar parametreli (4B-it) versiyonu tercih ettik. Neden? Çünkü Colab'ın ücretsiz T4 GPU'sunda veya standart bir bilgisayarda (yaklaşık 7-8 GB VRAM ile) rahatlıkla çalışabiliyor.

Çanakkale Özel: Model Neleri Başardı?

1. OCR ve Mantıksal Çıkarım (Asker Menüsü)

Modele, Çanakkale Savaşı'nda askerlerimize verilen yemek listesini (15 Haziran, 26 Haziran gibi tarihlerin ve öğünlerin yazdığı eski bir belge) gösterdik. Gemma 3'ten sadece okumasını değil, askerlerin günlük kalorisini hesaplamasını ve günümüz hamburger menüsüyle kıyaslamasını istedik.

Sonuç: Model, tablodaki "Üzüm Hoşafı", "Yarım Ekmek" gibi silik yazıları kusursuz okudu. Askerin günlük ortalama 270 kalori aldığını hesapladı ve bunu günümüzün 1100 kalorilik menüsüyle kıyaslayarak aradaki uçurumu (yokluğu ve fedakarlığı) çok net ortaya koydu.

2. Duygu Analizi (Siperdeki Askerler)

Atatürk'ün cephede gözlemlediği anları anlattığı bir mektubun görselini ve siperdeki askerlerin bir fotoğrafını verdik. "Buradaki ruh halini özetle" dedik. Model, askerlerin yüzündeki kararlılık, korku, gerginlik ve vatan sevgisi ifadelerini metinle birleştirerek lise düzeyinde bir öğrencinin yazabileceği kalitede duygusal bir analiz yaptı.

3. Bağlamı Anlama (Fotoğraf Nerede Çekildi?)

Hiçbir yazı içermeyen, sadece askerlerin olduğu bir fotoğraf gösterdik. Model, üniformalardan, kask yapısından (her ne kadar kalpak yerine kask dese de) ve ortamdan bunun 1. Dünya Savaşı, Osmanlı Cephesi olduğunu ve muhtemelen Çanakkale veya Filistin cephesi olabileceğini "akıl yürüterek" buldu.

Python Kodları: Gemma 3 Vision Kurulumu

Bu analizi kendi bilgisayarınızda veya Google Colab'da yapmak için aşağıdaki Python kodlarını kullanabilirsiniz. Transformers kütüphanesinin güncel olduğundan emin olun.

import torch
from transformers import pipeline
from PIL import Image
import requests

# 1. Pipeline'ı Hazırlama
# 'image-text-to-text' görevi multimodal modeller içindir.
pipe = pipeline(
    "image-text-to-text",
    model="google/gemma-3-4b-it",
    device_map="auto",
    torch_dtype=torch.bfloat16 # Bellek tasarrufu için bfloat16 önemli
)

# 2. Resmi Yükleme (Örnek URL)
image_url = "https://example.com/canakkale_fotografi.jpg"
image = Image.open(requests.get(image_url, stream=True).raw)

# 3. Modele Mesaj Gönderme
# Gemma 3 için özel mesaj formatı
messages = [
    {
        "role": "user",
        "content": [
            {"type": "image", "image": image},
            {"type": "text", "text": "Bu resimde ne görüyorsun? Askerlerin ruh halini ve ortamı detaylıca analiz et."}
        ]
    }
]

# 4. Cevabı Üretme
output = pipe(messages, max_new_tokens=1024)
print(output[0]["generated_text"][-1]["content"])

Sıkça Sorulan Sorular (SSS)

1. Gemma 3 Türkçe OCR konusunda ne kadar başarılı?

4 milyar parametreli bir model için inanılmaz başarılı. Çanakkale menüsündeki eski yazı tiplerini, Atatürk'ün el yazısına yakın notlarını ve yıpranmış gazete küpürlerini %95'in üzerinde doğrulukla okuyup Türkçeye çevirebildi.

2. Bu model sadece CPU ile çalışır mı?

Evet, Llama.cpp gibi araçlarla CPU üzerinde çalıştırılabilir ancak bu rehberde kullandığımız Transformers kütüphanesi ile GPU (Colab T4 veya yerel RTX kartlar) kullanmak çok daha hızlı sonuç verir. CPU'da bir resmin analizi dakikalar sürebilir.

3. Llama 3.2 Vision ile farkı nedir?

Gemma 3, özellikle Türkçe dil desteği ve muhakeme (reasoning) yeteneği konusunda çok daha "yerel" hissettiriyor. Yaptığımız testlerde Türk tarihi ile ilgili bağlamları (üniformalar, coğrafya) şaşırtıcı derecede doğru tanıdı.

Sonuç

Bu 18 Mart'ta, teknolojiyi tarihimizi anlamak için kullandık. Gemma 3, 4 milyar parametresine rağmen, o dönemin zorluklarını, askerimizin fedakarlığını ve tarihin tozlu sayfalarındaki detayları bize bir kez daha, yapay zeka gözüyle gösterdi. Bize bu vatanı emanet eden tüm kahramanlarımızı saygı ve rahmetle anıyoruz.

Daha Fazlasını Keşfedin:
Yapay zeka modellerinin sınırlarını zorladığımız, teknik analizleri milli değerlerimizle harmanladığımız videoları kaçırmamak için Murat Karakaya Akademi YouTube kanalına abone olun.

Kanalı Ziyaret Et & Abone Ol 🚀

#MuratKarakayaAkademi #Gemma3 #VisionAI #CanakkaleZaferi #YapayZeka #Python

Google Gemma 3: GPU Olmadan Sadece CPU ile Llama.cpp Kullanarak Nasıl Çalıştırılır?

Google Gemma 3: GPU Olmadan Sadece CPU ile Llama.cpp Kullanarak Nasıl Çalıştırılır?

Merhaba değerli arkadaşlar, ben Prof. Dr. Murat Karakaya. Murat Karakaya Akademi'ye hoş geldiniz. Bu dersimizde, takipçilerimden gelen sıkça sorulan bir soruyu uygulamalı olarak yanıtlayacağız: "Hocam, güçlü bir ekran kartım (GPU) yok, VRAM'im yetersiz. Google'ın yeni çıkan Gemma 3 modelini kendi bilgisayarımda, sadece işlemci (CPU) kullanarak çalıştırabilir miyim?"

Cevabım: Evet! Hem de oldukça tatmin edici bir hızda. Bu rehberde, Llama.cpp kütüphanesini kullanarak, Google'ın en yeni multimodal (hem metin hem görsel anlayabilen) modeli Gemma 3 (4B) sürümünü, hiçbir bulut servisine veri göndermeden, tamamen yerel bilgisayarınızda (Local PC) nasıl ayağa kaldıracağınızı adım adım göstereceğim.

Bu süreci baştan sona canlı olarak görmek ve performans testlerini izlemek için videoya göz atmanızı öneririm:

Bu Eğitimde Neler Öğreneceksiniz?

  • Llama.cpp kütüphanesinin Windows için kurulumu ve AVX desteği.
  • Hugging Face üzerinden Gemma 3 GGUF (Quantized) modellerin indirilmesi.
  • Multimodal özellikler için "mmproj" dosyalarının kullanımı.
  • Komut satırı (CLI) üzerinden Gemma 3 ile sohbet etme.
  • Llama Server ile modeli web arayüzü üzerinden kullanma.

Neden GPU Yerine CPU? Ve Llama.cpp Nedir?

Büyük Dil Modelleri (LLM) normalde devasa GPU gücü ister. Ancak Llama.cpp projesi, bu modelleri C/C++ ile optimize ederek standart işlemcilerde (CPU) çalışabilir hale getiriyor. Özellikle Apple Silicon (M serisi) veya Intel/AMD işlemcilerdeki AVX2 komut setlerini kullanarak şaşırtıcı performanslar sunuyor.

Videoda gördüğünüz üzere, benim bilgisayarımda 24GB VRAM'li bir GPU olmasına rağmen, bu deneyde sadece CPU kullandım ve saniyede yaklaşık 12-16 token (kelime parçası) üretim hızına ulaştık. Bu, bir sohbet botu için gayet akıcı bir hızdır.

Adım Adım Kurulum Rehberi

1. Llama.cpp İndirme

GitHub'daki llama.cpp sayfasının "Releases" bölümüne gidin. Windows kullanıyorsanız ve işlemciniz son 10 yılda üretildiyse muhtemelen AVX2 destekliyordur. İlgili .zip dosyasını (örneğin: llama-bxxxx-bin-win-avx2-x64.zip) indirin ve bir klasöre çıkarın.

2. Gemma 3 Model Dosyalarını İndirme (GGUF)

Hugging Face üzerinde ggml-org veya benzeri güvenilir kaynaklardan Gemma 3'ün GGUF formatını bulun. Ben videoda 4 milyar (4B) parametreli versiyonun Q4_K_M (4-bit quantization) sürümünü kullandım. Bu sürüm hem hafiftir (yaklaşık 2.5 - 3 GB) hem de CPU dostudur.

ÖNEMLİ: Gemma 3 multimodal (görsel görebilen) bir modeldir. Resimleri işleyebilmesi için modelin yanında mutlaka mmproj (projector) dosyasını da indirmelisiniz. Bu genelde model dosyalarının yanında .gguf uzantılı ek bir dosya olarak bulunur.

3. Komut Satırı ile Çalıştırma (CLI)

Llama.cpp klasörüne gidin ve terminali (PowerShell) açın. Gemma 3 için özel bir çalıştırılabilir dosya veya parametre gerekebilir, ancak genel mantık şöyledir:

# Örnek Çalıştırma Komutu
.\llama-gemma3-cli.exe -m "C:\Yol\gemma-3-4b-it-Q4_K_M.gguf" --mmproj "C:\Yol\gemma-3-4b-mmproj-f16.gguf" --image "test_resmi.jpg" -p "Bu resimde ne görüyorsun?"

4. Web Server Olarak Çalıştırma

Siyah ekranlarla uğraşmak istemiyorsanız, Llama.cpp içindeki llama-server.exe aracıyla modeli bir web sunucusu gibi başlatabilirsiniz. Böylece tarayıcınızdan (ChatGPT benzeri bir arayüzle) sohbet edebilirsiniz.

# Server Başlatma Komutu
.\llama-server.exe -m "C:\Modeller\gemma-3-4b.gguf" --port 8080

Komutu çalıştırdıktan sonra tarayıcınızda http://localhost:8080 adresine giderek modelle konuşmaya başlayabilirsiniz.

Sıkça Sorulan Sorular (SSS)

1. Bilgisayarım çok ısınır mı?

CPU kullanımı %100'e yaklaşacağı için fanlarınızın hızlanması normaldir. Ancak modern işlemciler termal korumaya sahiptir, güvenlidir.

2. 4-bit (Q4) model kullanmak kaliteyi düşürür mü?

Çok az bir miktar düşürür ancak 4B gibi bir modelde aradaki farkı anlamak zordur. Buna karşılık RAM kullanımını ve işlem yükünü ciddi oranda azaltır, ev kullanıcıları için en iyi takastır.

3. Kendi resimlerimi yükleyebilir miyim?

Evet! Videoda gösterdiğim gibi, kanalın logosunu veya herhangi bir fotoğrafı yükleyip "Bu resimdeki kişi kim?" veya "Burada ne yazıyor?" diye sorabilirsiniz. Gemma 3 bunu başarıyla analiz eder.

Sonuç

Gördüğünüz gibi, yapay zeka ile çalışmak için binlerce dolarlık donanımlara her zaman ihtiyacınız yok. Doğru optimizasyon araçları (Llama.cpp) ve verimli modeller (Gemma 3) ile standart bir laptop bile güçlü bir AI asistanına dönüşebilir. Veri gizliliğiniz cebinizde, hızınız parmaklarınızın ucunda!

Daha Fazlasını Keşfedin:
Bu ve benzeri yapay zeka rehberlerini kaçırmamak, modellerin derinlemesine incelemelerini izlemek için Murat Karakaya Akademi YouTube kanalına abone olun. Yorumlarınız ve beğenileriniz bizim için çok değerli!

Kanalı Ziyaret Et & Abone Ol 🚀

#MuratKarakayaAkademi #Gemma3 #LlamaCpp #LocalAI #YapayZeka #DeepLearning

Google Gemini 2.0 Flash ile Otomatik Fonksiyon Çağırma: Python ile Uygulamalı Rehber

Google Gemini 2.0 Flash ile Otomatik Fonksiyon Çağırma: Python ile Uygulamalı Rehber

Merhaba değerli arkadaşlar, ben Prof. Dr. Murat Karakaya. Murat Karakaya Akademi'ye hoş geldiniz. Daha önceki eğitimlerimizde, Gemini API kullanarak "Function Calling" (Fonksiyon Çağırma) yapısını detaylıca incelemiştik. O zamanlar süreç biraz daha manuel ilerliyordu; model bize hangi fonksiyonu çağıracağını söylüyor, biz kod tarafında o fonksiyonu çalıştırıyor ve sonucu tekrar modele veriyorduk.

Ancak teknoloji yerinde durmuyor! Google'ın Gemini SDK'sına gelen yeni bir güncelleme ile artık "Automatic Function Calling" (Otomatik Fonksiyon Çağırma) özelliğini kullanabiliyoruz. Bu özellik, geliştiricilerin üzerindeki kod yükünü ciddi oranda alıyor ancak beraberinde bazı dikkat edilmesi gereken "kara kutu" risklerini de getiriyor. Bu yazıda, bu yeni özelliği Python ile nasıl uygulayacağımızı, avantajlarını ve dezavantajlarını gerçek bir senaryo üzerinden inceleyeceğiz.

Bu konuyu uygulamalı olarak görmek ve kodları adım adım takip etmek için videoyu izlemenizi öneririm:

Bu Eğitimde Neler Öğreneceksiniz?

  • Manuel ve Otomatik Fonksiyon Çağırma arasındaki temel farklar.
  • Google Gemini Python SDK ile otomatik araç (tool) kullanımı.
  • Fonksiyon tanımlarında "Docstring" ve "Type Hinting"in önemi.
  • Modelin "görünmez" ara adımlarını nasıl takip edebileceğiniz (Loglama stratejileri).
  • Paralel fonksiyon çağırma ve halüsinasyon risklerine karşı alınacak önlemler.

Otomatik Fonksiyon Çağırma (Automatic Function Calling) Nedir?

Geleneksel (manuel) yöntemde süreç üç adımdan oluşuyordu:

  1. Kullanıcı soruyu sorar, model uygun fonksiyonu ve parametreleri seçer (JSON olarak döner).
  2. Geliştirici bu fonksiyonu kendi kodunda çalıştırır (API isteği, veritabanı sorgusu vb.).
  3. Çıkan sonucu geliştirici tekrar modele gönderir ve model nihai yanıtı üretir.
Bu süreç, özellikle karmaşık döngülerde çok fazla "boilerplate" (basmakalıp) kod yazmamıza neden oluyordu. Otomatik modda ise, SDK aradaki bu trafiği üstleniyor. Biz sadece fonksiyonları tanımlayıp modele veriyoruz; SDK, modelin isteği doğrultusunda Python fonksiyonunu arka planda çalıştırıp sonucunu modele kendisi iletiyor. Bize sadece nihai doğal dil yanıtı kalıyor.

Uygulama: Kargo ve Vergi Hesaplayan AI Asistanı

Videoda, Gemini 2.0 Flash modelini kullanarak bir senaryo kurguladık. Senaryomuzda; ürünün fiyatını, gönderileceği şehirleri (mesafe hesabı için) ve döviz kurunu hesaplayan bir sistem tasarladık. İşte dikkat etmeniz gereken kritik noktalar:

1. Fonksiyonların Hazırlanması ve Docstring Önemi

Modelin bir fonksiyonu ne zaman ve nasıl çağıracağını anlaması için Python'daki docstring (açıklama satırları) hayati önem taşır. Parametrelerin tiplerini ve fonksiyonun ne işe yaradığını çok net belirtmelisiniz.

def calculate_delivery_cost(distance: float) -> float:
    """
    Calculates the delivery cost based on the distance.
    Returns the cost in USD.
    
    Args:
        distance (float): The distance in km.
    """
    # Basit bir mantık: Mesafenin %10'u kadar ücret
    return distance * 0.10

2. Gemini İstemcisini Ayarlama

Yeni SDK yapısında tools parametresine fonksiyon listemizi veriyoruz. SDK varsayılan olarak otomatik çağırmayı desteklese de, konfigürasyonda bunu açıkça belirtmek veya kapatmak mümkündür.

# Gerekli araçları (fonksiyonları) listeye ekliyoruz
tools = [calculate_delivery_cost, calculate_tax, get_exchange_rate]

# Modeli başlatırken tools parametresini veriyoruz
model = genai.GenerativeModel(
    model_name='gemini-2.0-flash',
    tools=tools,
    system_instruction="Sen vergi ve kargo hesaplama uzmanısın..."
)

# Sohbeti başlatıyoruz (SDK otomatik döngüyü yönetir)
chat = model.start_chat(enable_automatic_function_calling=True)

3. "Kara Kutu" Sorunu ve Çözümü

Otomatik modun en büyük dezavantajı şeffaflıktır. Kod çalıştığında, response.text size sadece "Toplam maliyet 540 TL" der. Ancak modelin arka planda hangi kurla çarptığını, mesafeyi kaç km aldığını göremezsiniz.

Bu problemi aşmak için Chat History veya Response Object içindeki geçmişi incelemeniz gerekir. Videoda gösterdiğim gibi, arka planda modelin adım adım (örneğin önce kuru alıp, sonra vergiyi hesaplayıp, sonra mesafeyi bulması) yaptığı işlemleri loglamanız, kurumsal uygulamalarda hesap verilebilirlik açısından şarttır.

Sıkça Sorulan Sorular (SSS)

1. Otomatik Fonksiyon Çağırma her zaman güvenli midir?

Hayır, model bazen "halüsinasyon" görebilir. Örneğin, kodda olmayan bir parametreyi uydurabilir veya fonksiyonu yanlış sırada çağırabilir. Bu yüzden kritik finansal işlemlerde mutlaka doğrulama katmanları eklemeli veya manuel modu tercih etmelisiniz.

2. Hangi Gemini modelleri bu özelliği destekliyor?

Şu an için Gemini 1.5 Pro, 1.5 Flash ve yeni çıkan Gemini 2.0 Flash modelleri destekliyor. Ancak "Lite" gibi daha düşük kapasiteli modellerde veya eski versiyonlarda bu özellik stabil çalışmayabilir.

3. Modelin yaptığı hesaplamaları nasıl görebilirim?

Standart çıktı sadece sonucu verir. Ara adımları görmek için chat.history objesini incelemeli veya sistem prompt'unda modelden "Adım adım ne yaptığını açıklayarak cevap ver" (Chain of Thought) isteğinde bulunmalısınız.

Sonuç

Otomatik Fonksiyon Çağırma, yapay zeka ajanları (AI Agents) geliştirirken kodlama yükünü azaltan harika bir özellik. Ancak kontrolü elden bırakmamak, logları iyi tutmak ve modelin kapasitesine göre (Gemini 2.0 gibi güçlü modellerle) çalışmak gerekiyor. Daha karmaşık projeler için tek bir modele 20 tane araç vermek yerine, "Multi-Agent" (Çoklu Ajan) mimarilerini kullanmanızı tavsiye ederim.

Daha Fazlasını Keşfedin:
Yapay zeka ve yazılım dünyasındaki gelişmeleri kaçırmamak, kodları detaylı incelemek için Murat Karakaya Akademi YouTube kanalına abone olun.

Kanalı Ziyaret Et & Abone Ol 🚀

#MuratKarakayaAkademi #GeminiAPI #Python #YapayZeka #FunctionCalling #LLM