Showing posts with label Ollama. Show all posts
Showing posts with label Ollama. Show all posts

Thursday, January 22, 2026

İ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

Wednesday, January 21, 2026

Ollama, Kaggle ve Ngrok ile Ücretsiz Bulut LLM Sunucusu Kurulumu

Ollama, Kaggle ve Ngrok ile Ücretsiz Bulut LLM Sunucusu Kurulumu: VS Code ve Open WebUI Entegrasyonu

Murat Karakaya Akademi'ye hoş geldiniz. Değerli arkadaşlar, bugün özellikle donanım kısıtları nedeniyle kendi bilgisayarında büyük dil modellerini (LLM) çalıştırmakta zorlananlar için harika bir çözümden bahsedeceğiz. Biliyorsunuz, günümüzde açık kaynaklı modellerin (Gemma, Llama, Qwen gibi) parametre sayıları ve VRAM ihtiyaçları giderek artıyor. Eğer benim gibi 6GB VRAM'e sahip bir laptop kullanıyorsanız, 12 milyar veya 27 milyar parametreli modelleri yerelde çalıştırmak neredeyse imkansız veya oldukça yavaş hale geliyor.

Bu dersimizde, Kaggle'ın bize ücretsiz sunduğu güçlü GPU altyapısını bir sunucu (Server) gibi kullanarak, Ollama ve Ngrok araçları sayesinde bu gücü nasıl kendi yerel bilgisayarımıza (VS Code, Terminal veya Open WebUI) tünelleyebileceğimizi detaylıca inceleyeceğiz. Yani özetle: Buluttaki GPU'yu, kendi bilgisayarımızdaymış gibi kullanacağız.

Neden Kaggle ve Bulut Tabanlı Çözüm?

Öncelikle sorunu netleştirelim. Akademik çalışmalarımda veya projelerimde bazen onlarca farklı modeli test etmem gerekiyor. Ancak standart bir kullanıcı bilgisayarı, özellikle 8GB, 12B veya üzeri modellerde yetersiz kalıyor. Kaggle ise bize haftalık 30 saatlik ücretsiz bir GPU kullanım hakkı tanıyor. Bu "Accelerator" seçeneğinde genellikle T4 GPU'lar (yaklaşık 15GB VRAM) bulunuyor. Bu, 6GB veya 8GB VRAM isteyen Gemma 3 (12B) veya Qwen 2.5 (14B) gibi modelleri rahatlıkla belleğe sığdırıp çalıştırabileceğimiz anlamına geliyor.

Ben bu yöntemi kendi ihtiyaçlarımdan yola çıkarak geliştirdim ve testlerimi başarıyla tamamladım. Kaggle'ın sağladığı bu 30 saatlik süre, garanti edilen bir süredir; Google Colab gibi sizi aniden oturumdan atma riski daha düşüktür.

Kurulum Mimarisi: Kaggle Üzerinde Ollama

Sistemi kurmak için Kaggle üzerinde bir Notebook açıp, hızlandırıcı (Accelerator) olarak GPU T4 x2'yi seçiyoruz. Burada temel amacımız Kaggle'ı bir "Software as a Service" (SaaS) gibi yapılandırmak. İzleyeceğimiz adımlar şunlar:

  1. Gerekli Kütüphanelerin Kurulumu: Arka planda süreçleri yönetmek için `subprocess` ve tünelleme için `pyngrok` gibi kütüphaneleri Python ortamına kuruyoruz.
  2. GPU Kontrolü: NVIDIA sürücülerinin ve donanımın Ollama tarafından görülebilir olduğunu teyit ediyoruz.
  3. Ollama Kurulumu: Linux tabanlı kurulum komutunu çalıştırarak Ollama'yı Kaggle ortamına indiriyoruz.

Ollama kurulduktan sonra varsayılan olarak `127.0.0.1:11434` portunda çalışmaya başlar. Ancak bu Kaggle'ın kendi iç ağıdır (localhost). Bizim dışarıdan, yani evimizdeki bilgisayardan bu porta erişmemiz gerekiyor. İşte burada devreye Ngrok giriyor.

Ngrok ile Tünel Açmak ve Dışa Erişim

Kaggle'daki yerel sunucuyu internete açmak için Ngrok kullanıyoruz. Bunun için Ngrok sitesine ücretsiz üye olup bir "Authtoken" almanız ve bunu Kaggle'daki "Secrets" (Gizli Anahtarlar) bölümüne eklemeniz gerekiyor. Ayrıca Ngrok size sabit bir domain (alan adı) tanımlayabilir. Bu sabit domain, bağlantı adresinizin her seferinde değişmemesi için önemlidir.

Kurulum kodumuzda (üyelerimizle paylaştığım kod bloğunda), Python üzerinden Ngrok'u konfigüre ederek 11434 portunu dış dünyaya tünelliyoruz. Sonuç olarak elimizde şöyle bir adres oluyor:

https://sizin-domain-adiniz.ngrok-free.app

Bu adres artık bizim Kaggle üzerindeki güçlü GPU'muza açılan kapımızdır. Bu adresi kullanarak sanki model yanımızdaymış gibi işlem yapabiliriz.

Lokal Bilgisayarda Kullanım Senaryoları

Kaggle tarafı hazır olduktan sonra (Ollama running mesajını aldıktan sonra), kendi bilgisayarımıza dönüyoruz. Burada üç farklı şekilde bu gücü kullanabiliriz:

1. Terminal ve Çevresel Değişkenler (Environment Variables)

Kendi bilgisayarınızda bir terminal açıp, Ollama'nın nereye bakacağını söylemeniz gerekir. Bunun için OLLAMA_HOST değişkenini ayarlıyoruz. Bu sayede `ollama list` veya `ollama pull` komutlarını yazdığınızda, komutlar sizin bilgisayarınızda değil, Kaggle sunucusunda çalışır.

2. VS Code Üzerinden Kodlama

Eğer Python ile uygulama geliştiriyorsanız, yazdığınız kodların (örneğin LangChain veya doğrudan API çağrıları) Kaggle'daki modelleri kullanmasını sağlayabilirsiniz. `OllamaClient` nesnesini oluştururken `host` parametresine Ngrok adresini vermeniz yeterlidir. Böylece yazdığınız bir "Hikaye Yazma Botu", işlemleri Kaggle'daki 15GB VRAM üzerinde gerçekleştirir.

3. Open WebUI ile Görsel Arayüz

En sevdiğim yöntemlerden biri de Open WebUI kullanmak. Eğer Docker kullanıyorsanız, Open WebUI'ı ayağa kaldırırken `OLLAMA_BASE_URL` parametresini değiştirerek Kaggle'a bağlayabilirsiniz. Videoda gösterdiğim örnek Docker komutu şöyledir:

docker run -d -p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-e OLLAMA_BASE_URL=https://sizin-ngrok-adresiniz.app \
-v open-webui:/app/backend/data \
--name open-webui \
ghcr.io/open-webui/open-webui:main

Bu komutla, tarayıcınızdan (localhost:3000) harika bir chat arayüzüne erişirsiniz, ancak arka plandaki beyin Kaggle'da çalışır.

Performans Karşılaştırması ve Uyarılar

Videodaki testlerimde de görebileceğiniz gibi, kendi RTX 3050 ekran kartımla (6GB VRAM) bir işlem yapmaya çalıştığımda veya CPU'ya yüklendiğimde saniyelerce beklerken, Kaggle üzerindeki sistem (T4 GPU) saniyede 30-40 token hızlarına (yaklaşık 3 kat daha hızlı) ulaşabiliyor. 12 Milyar parametreli Gemma 3 modelini kendi bilgisayarımda çalıştırmam mümkün değilken, bu yöntemle akıcı bir şekilde sohbet edebiliyorum.

⚠️ Önemli Güvenlik Uyarısı:

Bu yöntemi kullanırken verileriniz önce Ngrok sunucularına, oradan da Kaggle sunucularına iletilir. Bu nedenle, kişisel, gizli veya ticari sır niteliğindeki verilerinizi bu yöntemle işlemeyin. Ancak benim gibi açık kaynak veri setleri üzerinde akademik çalışmalar, testler veya hobi projeleri yapıyorsanız, bu yöntem hayat kurtarıcıdır.

Sonuç

Yapay zeka modelleri büyüdükçe donanım ihtiyacı artıyor, ancak bulut çözümleri de erişilebilir hale geliyor. Kaggle'ı sadece bir veri bilimi yarışma platformu olarak değil, ücretsiz bir GPU sunucusu olarak da görebilirsiniz. Bu yöntemle donanım sınırlarına takılmadan en yeni LLM'leri deneyimleyebilirsiniz.

Bu yayında kullandığım detaylı Python kodlarına ve Notebook dosyasına erişmek isterseniz, YouTube kanalımızdaki "Katıl" butonunu kullanarak bize destek olabilir ve ayrıcalıklı içeriklere ulaşabilirsiniz. Sorularınızı videonun altına veya Discord sunucumuza bekliyorum. Hepinize iyi çalışmalar!

#MuratKarakayaAkademi #YapayZeka #Ollama #Kaggle #LLM #DerinOgrenme #CloudComputing