İ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.
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






