Bir LLM'e Nasıl İnce Ayar Yapılır? [ve Bunun Yerine Ne Zaman RAG veya İstem Kullanılmalı]
Bu kılavuz, bir LLM'e adım adım nasıl ince ayar yapılacağını açıklıyor, tam ince ayarı LoRA ve QLoRA ile karşılaştırıyor ve bir modelin çıktılarını iyileştirmek için istem kullanımı ya da RAG yaklaşımının ne zaman daha iyi bir yol olduğunu gösteriyor.

Büyük bir dil modeline (LLM) ince ayar yapmak, önceden eğitilmiş bir LLM'yi küçük ve göreve özel bir veri kümesiyle iyileştirerek yalnızca istemlerle elde edemeyeceğiniz çıktılar üretmesini sağlamak anlamına gelir.
İnce ayar; istediğiniz davranışı gösteren örnek girdi/çıktı çiftlerini toplamayı, modelin ağırlıklarını bu örneklere doğru kaydıran eğitim turları çalıştırmayı ve sonucu orijinal modelin çıktılarıyla karşılaştırmayı içerir. LoRA gibi parametre açısından verimli yöntemler, bu işlemi tek bir GPU'da çalıştırılabilecek kadar ucuz hâle getirir.
LLM çıktılarından memnun değilseniz önce istemlerinizi ve erişimle artırılmış üretim (RAG) kurulumunuzu iyileştirin. İnce ayar, LLM'nin nasıl davrandığını değiştirir. Modelin güncel veya şirketinize özel bilgileri kullanması gerektiğinde istemler ve RAG genellikle daha iyi bir seçimdir.
Bu yazıda bir LLM'ye adım adım nasıl ince ayar yapılacağını, başlıca ince ayar yöntemlerini (LoRA ve QLoRA) ve süreci bozabilecek zorlukları ve hataları ele alıyoruz.
LLM ince ayarı nedir ve LLM ön eğitiminden nasıl ayrılır
LLM ön eğitimi, bir modelin genel dil yeteneğini devasa bir metin derlemi üzerinde sıfırdan oluştururken LLM ince ayarı, önceden eğitilmiş bir modeli tek bir iş için küçük bir veri kümesiyle uyarlar.
LLM ön eğitimi, temel modeli ortaya çıkaran ve yoğun kaynak gerektiren aşamadır. Model geniş bir metin derleminden öğrenir; bu da ona genel dil bilgisi, olgusal bilgi ve akıl yürütme becerisi kazandırır ancak sizin görevinize yönelik bir uzmanlık sağlamaz.
LLM ince ayarı, temel modelin eğitimini küçük ve özenle seçilmiş bir veri kümesiyle sürdürerek belirli bir görev veya kullanım senaryosu için istenen çıktıları üretmesini sağlar. Tutarlı bir biçim, bir marka sesi veya tonu, alana özgü kalıplar ya da güvenilir araç ve fonksiyon çağrıları buna örnek gösterilebilir.
LLM'lere ne zaman ince ayar yapmalı, ne zaman bunun yerine istem veya RAG kullanmalı
LLM performansını artırmak için basamakları sırayla tırmanın: istem kullanımı -> RAG -> ince ayar.
İstemlerinizi daha ayrıntılı talimatlarla iyileştirin ve modele güncel bilgi sağlamak için RAG kullanın. İnce ayara yalnızca istem ve erişim iyileştirmeleri sonuç vermediğinde başvurun.
Yaklaşım | Neyi değiştirir | Ne zaman kullanılır | Temel sınırlama |
İstem mühendisliği | Gönderdiğiniz istek | Davranış hedefe yakın; hız ve geri alınabilirlik istiyorsunuz | Temel modelin mevcut yetenekleriyle sınırlıdır |
RAG | Modelin çıkarım anında gördükleri | Bilgiler sık değişiyor ve LLM'nin güncel bilgilere erişmesi gerekiyor | Erişim gecikmesi ve altyapı yükü ekler; davranışı değiştirmez |
LLM ince ayarı | Modelin ağırlıkları (dahili model parametreleri) | Büyük ölçekte tutarlı davranış, biçim veya ton ya da her çağrıda daha kısa istemler gerekiyor | Başlangıç maliyeti, ağırlıklara gömülen bilginin eskimesi, önceden eğitilmiş davranışları unutma riski |
Daha iyi istemler ne zaman ince ayardan üstündür, ne zaman yetersiz kalır
İstem kullanımı en hızlı ve en ucuz kaldıraçtır. Çoğu durumda daha isabetli ve ayrıntılı istemler, istenen davranış değişikliklerini sağlar.
Ancak daha uzun istemler işi yavaşlatır, maliyeti artırır ve modelin mevcut sınırlamalarının üstesinden gelemez.
İstemlerin sınırına ulaşmış olabileceğinizi gösteren işaretler:
- Yeni uç durumlar çıktıyı bozmaya devam ediyor: Örneğin JSON gerekirken model düz metin döndürüyor veya tondan sapıyor ve siz de her yeni durum için istemi yamıyorsunuz.
- Sistem istemi sürekli büyüyor: İstem yüzlerce, hatta binlerce satıra ulaşıyor ve yönetilmesi zorlaşıyor.
- Her çağrıda bedelini ödüyorsunuz: İstem her istekte yeniden gönderilip işlendiği için token maliyeti ve gecikme artıyor.
- Değişiklikler fark yaratmıyor: Yeni talimatlar çıktıları iyileştirmiyor.
Bu durumda bile önce daha ucuz olan istem düzeyindeki çözümleri deneyin. Modele kalıbı göstermek için az örnekli (few-shot) istemleri (girdi/çıktı çiftleri), zor görevleri daha küçük adımlara bölmek için istem zincirlemeyi ya da kesin aramaları veya hesaplamaları devretmek için fonksiyon çağırma kancalarını kullanın.
RAG, modele ince ayar yapmaktan ne zaman daha mantıklıdır
RAG, LLM'nin ne bildiğini değiştirirken LLM ince ayarı nasıl davrandığını değiştirir. Eksik olan bilgiyse, özellikle de sık değişen veya kendi belgelerinizde bulunan bilgiyse çözüm RAG'dir. Eksik olan davranışsa ince ayar yapın.
İnce ayar bir modelin bildiklerini de değiştirir ancak modelin edindiği bilgiler eğitim anında donar ve hızla gelişen alanlarda çabucak güncelliğini yitirir. Üstelik bilgiler modelin ağırlıklarına gömülür; bu nedenle ağırlıklar bu bilgilerin kaynağına dair hiçbir kayıt taşımaz.
Bir erişim katmanının kullandığı kaynak belgeleri güncellemek daha hızlı ve daha ucuzdur; üstelik bu katman kullandığı kaynakları tam olarak gösterebilir. Bu da onu savunulabilir ve güncel bilgiye ihtiyaç duyduğunuzda daha iyi bir seçenek hâline getirir.
RAG'in dezavantajı mı? Oluşturulması ve bakımı gereken ek bir katmandır ve gecikmeyi artırır.
Uygulamada çoğu zaman ikisine de ihtiyaç duyarsınız. Üretim ortamındaki sistemler, ince ayarlı modelleri RAG ile birlikte kullanır: Biri tutarlı davranış, diğeri güncel bilgiler için.
Yaygın ince ayar tuzakları, riskleri ve zorlukları
İnce ayar doğru araç olsa bile bazı maliyet ve riskler taşır:
- Maliyet ve zaman: Temiz ve temsil gücü yüksek eğitim verilerini derlemek de eğitim için gereken işlem gücü de pahalıdır.
- Katastrofik unutma: Dar bir veri kümesiyle eğitilen bir model genel becerilerini kaybedebilir ve yeni hata türleri edinebilir; bu da temel modelin yapmadığı hatalara yol açar.
- Aşırı öğrenme: Veri çok az veya fazla tekrarlı olduğunda model, kalıpları öğrenmek yerine eğitim örneklerinizi ezberler; bu nedenle eğitim örneklerinde iyi, gerçek girdilerde ise kötü performans gösterir.
- Eskime: Ağırlıklara gömülen bilgi çabuk eskir; bu yüzden modeli yeni verilerle yeniden eğitmeniz gerekir.
- Geçerliliğini yitirme: Daha güçlü bir model çıktığında çoğu zaman hiçbir ayar yapılmadan sizin ince ayarlı modelinizi geride bırakır ve işi baştan yapmanız gerekir.
- Değerlendirme ve tekrarlanabilirlik zorlukları: İnce ayarlı modelin temel modelden daha iyi performans gösterdiğini kanıtlamak zordur. Aynı ayarlarla yapılan iki GPU eğitim çalıştırması da birbirinden biraz farklı modeller üretebilir.
- Veri yönetişimi: Şirkete özel veya hassas verilerle eğitim yapmak gizlilik ve lisanslama sorularını gündeme getirir; bir model daha sonra eğitildiği verilerin parçalarını açığa çıkarabilir.
Başlıca ince ayar yöntemleri
LLM ince ayarının başlıca türleri, modelin ne kadarını değiştirdiklerine göre farklılık gösterir: Tam ince ayar modelin tamamını yeniden eğitirken LoRA ve QLoRA gibi parametre açısından verimli ince ayar (PEFT) yöntemleri yalnızca bazı ağırlıkları günceller. PEFT yöntemleri, tam ince ayarın bellek maliyetinin yalnızca küçük bir kısmını gerektirir ve doğru ayarlarla aynı sonuçlara ulaşabilir.
Tam ince ayar, modelin her ağırlığını günceller. En pahalı yöntemdir ve katastrofik unutma riski en yüksek olandır. Bu yöntemi, destekleyecek veriye ve işlem gücüne sahip olduğunuz büyük davranış değişiklikleri için saklayın.
Alternatif ise parametre açısından verimli ince ayar, yani PEFT'tir. Bu, modelin büyük kısmını dondurup yalnızca küçük bir parametre kümesini eğiten yöntemler için kullanılan genel bir terimdir. Temel model olduğu gibi kaldığı için çok daha az bellek kullanır ve unutmaya daha az eğilimlidir.
Düşük rank değerlerinde PEFT, tam ince ayara göre daha az şey öğrenir ancak rank değerini yükseltmek ve öğrenme oranını ayarlamak, talimat ayarlama (instruction-tuning) görevlerinde aradaki farkın büyük kısmını kapatır.
PEFT yöntemleri şunlardır:
- LoRA (Low-Rank Adaptation, Düşük Ranklı Uyarlama): Genellikle başlangıç noktası olan bu yöntem, orijinal ağırlıkları dondurur ve eklenen küçük bir adaptör parametre kümesini (çoğu zaman toplamın %1'inden azını) eğitir; bu sayede tek bir tüketici sınıfı GPU'da çalışır.
- QLoRA (Quantized Low-Rank Adaptation, Nicemlenmiş Düşük Ranklı Uyarlama): LoRA'yı uygulamadan önce temel modeli 4 bit hassasiyete sıkıştırır; böylece büyük bir modele tek bir GPU'da ince ayar yapabilirsiniz.
Yöntem | Neyi günceller | Donanım gereksinimi | Ne zaman kullanılır |
Tam ince ayar | Modeldeki tüm ağırlıklar | 7B sınıfı modeller için çok GPU'lu bir düğüm, daha büyük modeller için çok daha fazlası | Köklü bir davranış değişikliğine ihtiyacınız var ve veriniz ile işlem gücünüz mevcut |
LoRA (PEFT) | Eklenen küçük bir adaptör ağırlık kümesi | Tek bir tüketici sınıfı GPU | Varsayılan başlangıç noktanız |
QLoRA (PEFT) | 4 bit ile sıkıştırılmış bir temel model üzerinde LoRA adaptörleri | Tek bir GPU'da çok büyük modeller | Belleğiniz kısıtlı ama büyük bir temel model istiyorsunuz |
Bunlara ek olarak, bir modelin talimatlara nasıl uyduğunu ve insan tercihleriyle ne ölçüde örtüştüğünü şekillendirmek için RLHF'den (Reinforcement Learning from Human Feedback, İnsan Geri Bildiriminden Pekiştirmeli Öğrenme) Direct Preference Optimization (DPO) ve Odds Ratio Preference Optimization (ORPO) gibi daha hafif alternatiflere kadar uzanan talimat ayarlama ve tercih ayarlama yöntemlerini kullanıyoruz.
Bir LLM'ye adım adım nasıl ince ayar yapılır
Bir LLM'ye ince ayar yapmanın doğru tercih olduğuna karar verdiyseniz izlemeniz gereken iş akışı şu şekildedir.
1. Adım: Görevi ve başarıyı nasıl ölçeceğinizi tanımlayın
LLM'den hangi davranışı beklediğinize ve bunu elde ettiğinizi nasıl anlayacağınıza karar verin.
İnce ayarlı modelin yerine getirmesini istediğiniz işi net olarak belirleyin; örneğin destek taleplerini sınıflandırmak, sözleşmeleri sabit bir biçimde özetlemek veya şirketinizin kod stiline uygun kod üretmek.
Ardından başarıyı tanımlayın. Yaygın seçenekler şunlardır:
- Çıktı geçerliliği: Örneğin sonuç geçerli bir JSON olarak ayrıştırılabiliyor mu veya ihtiyaç duyduğunuz Markdown yapısıyla eşleşiyor mu?
- Otomatik puanlar: Üretilen metni referans yanıtlarla karşılaştıran BLEU veya ROUGE gibi metrikleri ya da etiketli bir küme üzerindeki görev doğruluğunu kullanın.
- İnsan değerlendirmeleri: Ton veya yararlılık gibi bir betiğin iyi puanlayamadığı nitelikler için puanlı ya da geçti/kaldı esaslı bir değerlendirme ölçütü.
- Zor girdilerde güvenilirlik: Model, temel modeli zorlayan alışılmadık girdilerle başa çıkabiliyor mu?
2. Adım: Veri kümenizi hazırlayın
İnce ayarın başarısını veri kalitesi belirler; bu nedenle doğru ince ayar veri kümesini toplamaya emek verin.
Verilerinizi JSONL biçiminde talimat/yanıt çiftleri olarak düzenleyin; her satırda girdi (ve varsa bağlam) ile almak istediğiniz çıktının tam hâli yer almalıdır.
Örnek olarak genel talimat veri kümesi Alpaca-cleaned veya Databricks'in Dolly'si gibi herkese açık veri kümelerine ya da 77 amaca göre etiketlenmiş 13.000'den fazla gerçek destek sorgusu içeren göreve özel banking77 veri kümesine göz atabilirsiniz.
Odaklı bir görev için birkaç yüz ile birkaç bin arasında temiz ve çeşitli örnek, davranışı değiştirmeye yetebilir. Yeter ki örnekler, uç durumlar da dâhil olmak üzere üretim ortamındaki gerçek girdileri yansıtsın ve tutarlı biçimde düzenlenmiş olsun.
Henüz girdi/çıktı çiftiniz yok mu? Kümeyi elinizdeki verilerden oluşturun; örneğin destek talepleri ve bunlara verilen en iyi yanıtlar ya da belgeler ve bunların özetleri.
Yalnızca çıktılarınız varsa her biri için makul bir girdi üretmek üzere daha güçlü bir model kullanın veya küçük bir başlangıç kümesini elle yazıp daha büyük bir "öğretmen" modelle genişletin, ardından en iyi çiftleri tutun.
Son olarak, modelin görmediği örnekler üzerinde ölçüm yapabilmek için verileri eğitim, doğrulama ve test kümelerine ayırın.
3. Adım: Bir temel model ve yöntem seçin
3 ila 7 milyar parametreli küçük bir açık kaynak modelle ve LoRA ya da QLoRA gibi parametre açısından verimli bir ince ayar yöntemiyle başlayın.
Llama, Mistral ve Qwen gibi açık model aileleri, kendiniz barındırabileceğiniz güçlü bir temel sunar. PEFT yöntemleri de donanım gereksinimini düşük tutar: QLoRA temel modeli 4 bite nicemlediği için 7B bir modele ince ayar yapmak yalnızca 16-24 GB'lık bir tüketici sınıfı ekran kartı gerektirir. Aynı modele tam ince ayar yapmak ise bunun kat kat fazlası bellek ister.
4. Adım: Eğitim hiperparametrelerinizi belirleyin
Temel LLM ince ayar parametreleri ve önerilen başlangıç aralıkları şunlardır:
- Öğrenme oranı, ağırlıklara yapılan her güncellemenin ne kadar büyük olacağını kontrol eder. Biderman ve arkadaşlarının 2024 tarihli çalışması, LoRA için en iyi oranların tam ince ayardakilerin yaklaşık on katı olduğunu ortaya koydu: tipik olarak LoRA için 5e-5 ile 5e-4, tam ince ayar için 1e-5 ile 5e-5. Çalışma, 1e-5 ile 5e-4 arasında tarama yapılmasını ve eğitimin kararlı şekilde ilerlediği en yüksek değerin kullanılmasını öneriyor.
- Batch boyutu, modelin her ağırlık güncellemesinden önce kaç örnekten öğrendiğini belirtir. Tek bir GPU'da cihaz başına 1 ila 8 arasında küçük bir batch kullanın ve yaklaşık 16 ila 64'lük bir etkin batch boyutuna ulaşmak için gradyan biriktirmeden yararlanın.
- Epoch sayısı, modelin veri kümesinin tamamını kaç kez gördüğünü ifade eder. Modeli belirli görevleri yerine getirmek üzere eğitirken pratik bir kural olarak 1-3 epoch iyi bir seçimdir, ancak LoRA çalıştırmaları genellikle daha fazlasını gerektirir.
- LoRA rank değeri (r), adaptörün kapasitesini, yani ne kadar öğrenebileceğini belirler. Daha basit görevler için 8 ila 32 arasında bir değerle başlayın ve daha zor görevler için bu değeri artırın: Yukarıda değinilen Biderman ve arkadaşlarının LoRA çalışmasında, 7B'lik bir modele kod üzerinde talimat ayarı (instruction tuning) yapılırken tam ince ayarın sonuçlarını yakalamak için 256 rank değeri gerekirken matematikte 64 rank değeri bu sonuçlara yaklaştı.
- Maksimum dizi uzunluğu, çalıştırmanın işleyeceği en uzun girdidir. Bundan uzun olan her şey kırpılacağından, bu değeri modelin bağlam penceresini aşmadan en uzun örneklerinizi kapsayacak şekilde ayarlayın.
- Isınma ve zamanlama, öğrenme oranının çalıştırma boyunca nasıl yükseldiğini ve değiştiğini kontrol eder. Kısa bir ısınma ve kosinüs azalması yaygın varsayılanlardır. Ancak Pareja ve arkadaşlarının küçük modeller üzerine yaptığı çalışma, ısınmanın kaldırılmasının nihai puanları olumsuz etkilemediğini ortaya koydu.
Bunları sabit ayarlar olarak değil, bir hiperparametre taramasının başlangıç noktaları olarak değerlendirin.
5. Adım: Modeli eğitin ve kaybı izleyin
Eğitim sürerken, sürecin işe yarayıp yaramadığını görmek için eğitim ve doğrulama kaybı eğrilerini izleyin.
Kayıp, modelin çıktılarının örneklerinizden ne kadar uzak olduğunu ölçer ve çalıştırma ilerledikçe istikrarlı bir şekilde düşmelidir. Eğitim kaybı, modelin öğrendiği veriler üzerinden hesaplanır. Doğrulama kaybı ise ayrı tutulan örnekler üzerinden ölçülür.
Eğitim kaybı ve doğrulama kaybı birlikte düşüyorsa model genelleme yapmayı öğreniyordur. Eğitim kaybı düşmeye devam ederken doğrulama kaybı yatay seyrediyor veya yükseliyorsa model, örüntüyü öğrenmek yerine eğitim kümesini ezberliyordur (aşırı öğrenme).
6. Adım: Değerlendirin, ardından dağıtın
Düşük bir eğitim kaybı doğru çıktıları garanti etmez; bu nedenle ince ayar yapılmış modeli 1. Adımda belirlediğiniz kriterlere göre değerlendirin.
Model değerlendirmeyi geçtiğinde, dağıtım için iki seçeneğiniz vardır:
- Adaptörü temel modelin üzerinde sunun ve ikisini çalışma zamanında birlikte yükleyin; bu yöntem adaptörü değiştirilebilir tutar.
- Barındırması daha kolay, bağımsız tek bir model elde etmek için adaptörü temel model ağırlıklarıyla birleştirin.
LLM'inizin güncel bilgilere erişmesini sağlamak için Perplexity'yi kullanın
Model davranışını ihtiyaçlarınıza göre uyarlamak istediğinizde ince ayar doğru tercihtir.
Modelinizin güncel bilgilere, özellikle de hızla değişen bilgilere ihtiyacı varsa bir RAG sistemine veya güvenilir bir üçüncü taraf arama aracına ihtiyacınız vardır.
Özel bir getirme (retrieval) yığını, şirket içi wiki'niz, müşteri destek geçmişiniz, sözleşmeleriniz veya ürün belgeleriniz gibi şirketinize ait veri kümeleri için en iyi sonucu verir.
Kullanmak istediğiniz bilgi herkese açıksa, size özel bir getirme katmanı oluşturmanıza gerek yoktur. Perplexity, canlı bir web dizininden satır içi, tıklanabilir kaynak gösterimleriyle yanıtlar sunan bir yanıt motorudur. Perplexity'nin Agent API çözümü, web kaynaklarına dayanan ve kaynak gösterilen bu yanıtları tek bir çağrıda sunar; böylece uygulamanız güncel kaynaklardan yararlanabilir.
LLM ince ayarı hakkında sıkça sorulan sorular
Bir LLM'e ücretsiz olarak ince ayar yapabilir misiniz?
Evet, açık kaynaklı küçük bir LLM'e ücretsiz olarak ince ayar yapabilirsiniz. Örneğin Google Colab'ın ücretsiz katmanı, 3B ila 8B parametreli bir modelde QLoRA çalıştırmanıza yetecek kadar GPU sunar; bu da odaklı bir görev için fazlasıyla yeterlidir. Ücretsiz katmanın karşılayabileceğinden daha fazla belleğe, daha uzun çalıştırmalara veya daha büyük bir temel modele ihtiyaç duyduğunuzda ödeme yapmaya başlarsınız.
Kendi GPU'nuza mı ihtiyacınız var, yoksa bulutta ince ayar yapabilir misiniz?
LLM'lere ince ayar yapmak için GPU sahibi olmanız gerekmez. Yönetilen hizmetler ve GPU bulut sağlayıcıları donanımı saatlik olarak kiralar; bu nedenle kiralanan tek bir GPU, küçük bir modelde QLoRA çalıştırması için yeterlidir. GPU satın almak yalnızca sık sık ince ayar yapıyorsanız veya tüm verilerinizi kendi makinelerinizde tutmanız gerekiyorsa yatırıma değer.
LLM'lere ince ayar yapmak ne kadar sürer?
Küçük bir LLM için bir çalıştırma, veri kümesinin boyutuna ve donanıma bağlı olarak birkaç dakika ile birkaç saat arasında tamamlanabilir. Örneğin Oumi, barındırılan platformunda 0,8B'lik bir modele bir saatten biraz fazla bir sürede tam ince ayar yaptı.
Daha büyük modeller veya on binlerce örnek bu süreyi bir güne veya daha fazlasına çıkarır: Emburse'ün LoRA çalıştırmaları, tek bir 40 GB GPU üzerinde 7B'lik bir modelle 5.000 örnek için 8 saat, 50.000 örnek için ise yaklaşık 30 saat sürdü.
Verileriniz değiştikçe ince ayar yapılmış bir modeli güncellemeye devam edebilir misiniz?
Yeni veriler üzerinde yeniden ince ayar yapabilirsiniz, ancak her tur ek işlem gücü gerektirir ve yıkıcı unutma (catastrophic forgetting) riski taşır. Sık değişen bilgiler için RAG genellikle daha iyi bir çözümdür, çünkü modeli yeniden eğitmek yerine kaynak belgeleri güncellersiniz.