7.2. Fine-Tuning to follow instructions
Bu bölümün amacı, metin üretmek yerine talimatları takip etmek için önceden eğitilmiş bir modeli ince ayar yapmayı göstermektir; örneğin, bir sohbet botu olarak görevlere yanıt vermek.
Veri Seti
Bir LLM'yi talimatları takip edecek şekilde ince ayar yapmak için, LLM'yi ince ayar yapmak üzere talimatlar ve yanıtlar içeren bir veri setine ihtiyaç vardır. Bir LLM'yi talimatları takip edecek şekilde eğitmek için farklı formatlar vardır; örneğin:
Apply Alpaca istem tarzı örneği:
Phi-3 İstem Tarzı Örneği:
Bir LLM'yi bu tür veri setleriyle eğitmek, yalnızca ham metin yerine, LLM'nin aldığı sorulara belirli yanıtlar vermesi gerektiğini anlamasına yardımcı olur.
Bu nedenle, istekler ve yanıtlar içeren bir veri seti ile yapılacak ilk şeylerden biri, o veriyi istenen istem formatında modellemektir, örneğin:
Sonra, her zamanki gibi, veri kümesini eğitim, doğrulama ve test için setlere ayırmak gereklidir.
Batching & Data Loaders
Sonra, eğitim için tüm girdileri ve beklenen çıktıları gruplamak gereklidir. Bunun için:
Metinleri tokenleştirin
Tüm örnekleri aynı uzunluğa (genellikle bu uzunluk, LLM'yi önceden eğitmek için kullanılan bağlam uzunluğu kadar büyük olacaktır) doldurun
Özel bir toplama fonksiyonunda girişi 1 kaydırarak beklenen tokenleri oluşturun
Eğitim kaybından hariç tutmak için bazı doldurma tokenlerini -100 ile değiştirin: İlk
endoftext
tokeninden sonra, diğer tümendoftext
tokenlerini -100 ile değiştirin (çünkücross_entropy(...,ignore_index=-100)
kullanmak, -100 olan hedefleri yok sayacağı anlamına gelir)[Opsiyonel] LLM'nin yalnızca yanıtı nasıl üreteceğini öğrenmesi için soruya ait tüm tokenleri -100 ile maskeleyin. Uygula Alpaca tarzında bu,
### Yanıt:
kısmına kadar her şeyi maskelemek anlamına gelecektir.
Bunu oluşturduktan sonra, her veri kümesi (eğitim, doğrulama ve test) için veri yükleyicilerini oluşturma zamanı.
Önceden Eğitilmiş LLM'yi Yükle & İnce Ayar Yap & Kayıp Kontrolü
İnce ayar yapmak için önceden eğitilmiş bir LLM yüklemek gereklidir. Bu, diğer sayfalarda zaten tartışılmıştır. Sonra, LLM'yi ince ayar yapmak için daha önce kullanılan eğitim fonksiyonunu kullanmak mümkündür.
Eğitim sırasında, eğitim kaybı ve doğrulama kaybının epochlar boyunca nasıl değiştiğini görmek de mümkündür; böylece kaybın azalıp azalmadığını ve aşırı uyum olup olmadığını görebilirsiniz. Aşırı uyum, eğitim kaybı azalırken doğrulama kaybının azalmadığı veya hatta arttığı durumlarda meydana gelir. Bunu önlemek için, bu davranışın başladığı epochta eğitimi durdurmak en basit şeydir.
Yanıt Kalitesi
Bu, kayıp değişimlerine daha fazla güvenilebilecek bir sınıflandırma ince ayarı olmadığı için, test setindeki yanıtların kalitesini kontrol etmek de önemlidir. Bu nedenle, tüm test setlerinden üretilen yanıtları toplamak ve kalitelerini manuel olarak kontrol etmek önerilir; böylece yanlış yanıtlar olup olmadığını görebilirsiniz (LLM'nin yanıt cümlesinin formatını ve sözdizimini doğru bir şekilde oluşturması mümkün, ancak tamamen yanlış bir yanıt vermesi de mümkündür. Kayıp değişimi bu davranışı yansıtmayacaktır). Ayrıca, üretilen yanıtları ve beklenen yanıtları diğer LLM'lere geçirerek yanıtları değerlendirmelerini istemek de mümkündür.
Yanıtların kalitesini doğrulamak için çalıştırılacak diğer testler:
Kapsamlı Çoklu Görev Dil Anlayışı (MMLU): MMLU, bir modelin bilgi ve problem çözme yeteneklerini beş yedi konu üzerinden değerlendirir; beşeri bilimler, bilimler ve daha fazlası dahil. Farklı zorluk seviyelerinde anlayışı değerlendirmek için çoktan seçmeli sorular kullanır.
LMSYS Chatbot Arena: Bu platform, kullanıcıların farklı chatbotlardan gelen yanıtları yan yana karşılaştırmalarına olanak tanır. Kullanıcılar bir istem girer ve birden fazla chatbot, doğrudan karşılaştırılabilen yanıtlar üretir.
AlpacaEval: AlpacaEval, GPT-4 gibi gelişmiş bir LLM'nin diğer modellerin çeşitli istemlere verdiği yanıtları değerlendirdiği otomatik bir değerlendirme çerçevesidir.
Genel Dil Anlayışı Değerlendirmesi (GLUE): GLUE, duygu analizi, metin çıkarımı ve soru yanıtlama gibi dokuz doğal dil anlama görevinden oluşan bir koleksiyondur.
SuperGLUE: GLUE üzerine inşa edilen SuperGLUE, mevcut modeller için zorlayıcı olan daha zorlu görevleri içerir.
Taklit Oyunu Benchmark'ının Ötesinde (BIG-bench): BIG-bench, bir modelin akıl yürütme, çeviri ve soru yanıtlama gibi alanlardaki yeteneklerini test eden 200'den fazla görev içeren büyük ölçekli bir benchmark'tır.
Dil Modellerinin Kapsamlı Değerlendirmesi (HELM): HELM, doğruluk, sağlamlık ve adalet gibi çeşitli metrikler üzerinden kapsamlı bir değerlendirme sağlar.
OpenAI Evals: OpenAI tarafından oluşturulan, özel ve standartlaştırılmış görevlerde AI modellerinin test edilmesine olanak tanıyan açık kaynaklı bir değerlendirme çerçevesidir.
HumanEval: Dil modellerinin kod üretme yeteneklerini değerlendirmek için kullanılan bir dizi programlama problemi.
Stanford Soru Yanıtlama Veri Seti (SQuAD): SQuAD, modellerin metni anlaması gereken Wikipedia makaleleri hakkında sorulardan oluşur.
TriviaQA: Trivia soruları ve yanıtları ile birlikte kanıt belgelerinden oluşan büyük ölçekli bir veri seti.
ve daha birçokları
Talimatları İzleme İnce Ayar Kodu
Bu ince ayarı gerçekleştirmek için kod örneğini https://github.com/rasbt/LLMs-from-scratch/blob/main/ch07/01_main-chapter-code/gpt_instruction_finetuning.py adresinde bulabilirsiniz.
Referanslar
Last updated