Llama 3.1 Makalesi 1. Bölüm
Meta’nın “The Llama 3 Herd of Models” makalesinin Türkçe özetinin ilk bölümüdür.
75 sayfalık (metin olan kısmı) makalenin ilk 35 sayfasını özetledim ve çevirdim. Eksik bilgi bırakmamaya çalıştıysam da gözümden kaçmış ve almayı unuttuğum kısım olabilir hatırlatmak isterim, iyi okumalar.
Llama 3 olarak adlandırılan yeni bir temel model kümesi sunulmaktadır. Bu model kümesi en başarılı açık kaynaklı modelleri barındırmaktadır. Bu modeller, çok dilliliği, kodlamayı, akıl yürütmeyi ve araç kullanımını doğal olarak desteklemektedir. En büyük model, 405 milyar parametreye ve 128 bin token uzunluğunda bir bağlam penceresine sahip yoğun bir Transformer’dır (yoğun ağ, bir seviyedeki bir düğümün kendinden bir önceki ve bir sonraki tüm düğümlere bağlı olduğu durumdur). Makale ayrıca görüntü, video ve konuşma yeteneklerini llama3'e entegre edildiği deneylerin sonuçlarını sunmaktadır.
2. Genel Bakış
Llama 3 dil modellerinin geliştirilmesi 2 ana aşamadan oluşur:
- Dil modelinin ön eğitimi: Büyük, çok dilli bir metin korpusunu (metin veri kümesi) ayrık tokenlara dönüştürerek ve sonuçta ortaya çıkan veri üzerinde büyük bir dil modelini (LLM) sonraki token tahmini yapacak şekilde önceden eğiterek başlarız. Bu aşamada model, dilin yapısını öğrenir ve “okuduğu” metinden dünya hakkında geniş bilgi edinir. Etkili bir şekilde öğrenmesi için ön eğitim büyük ölçekte gerçekleştirilir: 405 milyar parametreli bir model, 15.6 trilyon token üzerinde, 8 bin tokenlık bir bağlam penceresi kullanılarak önceden eğitilir. Bu standart ön eğitim aşamasının ardından, desteklenen bağlam penceresini 128 bin tokena çıkaran devam ön eğitimi aşaması gelir. Ayrıntılar için Bölüm 3'e bakınız.
- Dil modelinin son eğitimi: Önceden eğitilmiş dil modeli dil konusunda zengin bir anlayışa sahip olmuş olsa da henüz talimatları izlememekte veya bir asistan gibi davranmamaktadır. Modeli, birkaç tur halinde insan geri bildirimi ile hizalarız; her bir tur, talimat ayar verileri üzerinde denetimli ince ayar (SFT: Supervised Fine Tuning) ve Doğrudan Tercih Optimizasyonu (DPO: Direct Preference Optimization; Rafailov ve diğerleri, 2024) içerir. Bu son eğitim aşamasında, araç kullanımı gibi yeni yetenekler de entegre edilir ve kodlama ve mantık yürütme gibi diğer alanlarda güçlü iyileştirmeler gözlemleriz. Ayrıca, güvenlik önlemleri de modelin son eğitim aşamasına dahil edilir, bunların ayrıntıları Bölüm 5.4'te açıklanmıştır.
Ortaya çıkan modeller, en az 8 dilde soruları yanıtlayabilir, yüksek kaliteli kod yazabilir, karmaşık mantık problemlerini çözebilir ve araçları direkt kullanabilir. Ayrıca, Llama 3'e görüntü, video ve konuşma yetenekleri eklemek için bileşimsel (compositional) bir yaklaşım kullanarak deneyler yapıyoruz.
- Çok modlu kodlayıcı ön eğitimi: Görüntüler ve konuşma için ayrı kodlayıcılar (encoders) eğitiyoruz. Görüntü kodlayıcımızı, büyük miktarda görüntü-metin çifti üzerinde eğitiyoruz. Bu, modele görsel içerik ile bu içeriğin doğal dildeki açıklaması arasındaki ilişkiyi öğretir. Konuşma kodlayıcımız ise konuşma girdilerinin bazı kısımlarını maskeler ve maskelenmiş kısımları ayrık-token (discrete-token) temsili aracılığıyla yeniden yapılandırmaya çalışır. Sonuç olarak, model konuşma sinyallerinin yapısını öğrenir. Görüntü kodlayıcı ile ilgili ayrıntılar için Bölüm 7'ye ve konuşma kodlayıcı ile ilgili ayrıntılar için Bölüm 8'e bakınız.
- Görsel adaptör eğitimi: Önceden eğitilmiş görüntü kodlayıcıyı önceden eğitilmiş dil modeline entegre eden bir adaptör eğitiyoruz. Adaptör, görüntü kodlayıcı temsillerini dil modeline aktaran bir dizi çapraz dikkat katmanından oluşur. Adaptör, metin-görüntü çiftleri üzerinde eğitilir. Bu, görüntü temsillerini dil temsilleri ile hizalar. Adaptör eğitimi sırasında, görüntü kodlayıcının parametrelerini de güncelleriz ancak dil modeli parametrelerini bilerek güncellemeyiz. Ayrıca, metinle eşleştirilmiş video verileri üzerinde görüntü adaptörünün üzerine bir video adaptörü eğitiyoruz. Bu, modelin kareler arasında bilgi toplamasını sağlar. Ayrıntılar için Bölüm 7'ye bakınız.
- Konuşma adaptör eğitimi: Son olarak, konuşma kodlayıcıyı, konuşma kodlamalarını doğrudan ince ayar yapılmış dil modeline beslenebilecek token temsillerine dönüştüren bir adaptör aracılığıyla modele entegre ederiz. Adaptör ve kodlayıcının parametreleri, yüksek kaliteli konuşma anlayışını sağlamak için denetimli bir ince ayar aşamasında birlikte güncellenir. Konuşma adaptör eğitimi sırasında dil modelini değiştirmeyiz. Ayrıca bir metinden sese model sistemini entegre ederiz. Ayrıntılar için Bölüm 8'e bakınız.
Çok modlu deneylerimiz, görüntülerin ve videoların içeriğini tanıyabilen ve bir konuşma arayüzü aracılığıyla etkileşimi destekleyen modellerle sonuçlanır. Bu modeller hâlâ geliştirme aşamasındadır ve henüz piyasaya sürülmeye hazır değildir.
Model mimarisi açısından Llama ve Llama 2'den (Touvron ve diğerleri, 2023a,b) önemli ölçüde sapmaz; performans kazanımlarımız esas olarak veri kalitesi ve çeşitliliğindeki iyileştirmeler ile artan eğitim ölçeğinden kaynaklanmaktadır. Llama 2'ye kıyasla ön eğitim ve son eğitim için kullanılan verilerin miktarını ve kalitesini artırdık. Ön eğitim verileri için daha dikkatli ön işleme ve kürasyon hatları, son eğitim verileri için daha titiz kalite kontrol ve filtreleme yaklaşımları geliştirdik. Llama 3'ü yaklaşık 15 trilyon çok dilli token üzerinde eğittik, Llama 2 için bu sayı 1,8 trilyondu.
3. Ön Eğitim
Dil modeli ön eğitimi (1) büyük ölçekli bir eğitim gövdesinin düzenlenmesi ve filtrelenmesi, (2) model mimarisinin ve model boyutunu belirlemek için karşılık gelen ölçekleme yasalarının geliştirilmesi, (3) büyük ölçekte verimli ön eğitim için tekniklerin geliştirilmesi ve (4) bir ön eğitim tarifinin geliştirilmesini içerir. Bu bileşenlerin her birini aşağıda ayrı ayrı sunuyoruz.
Dil modeli ön eğitimi için veri setimizi 2023 sonuna kadar bilgi içeren çeşitli veri kaynaklarından oluşturuyoruz. Yüksek kaliteli tokenler elde etmek için her veri kaynağına çeşitli veri çoğaltma yöntemleri ve veri temizleme mekanizmaları uyguluyoruz. Büyük miktarda kişisel veri (PII) içeren alan adlarını ve bilinen yetişkin içeriği olan alan adlarını kaldırıyoruz.
Veri karışımı özeti. Nihai veri karışımımız, yaklaşık %50 genel bilgiye karşılık gelen tokenler, %25 matematiksel ve akıl yürütme tokenleri, %17 kod tokenleri ve %8 çok dilli tokenleri içermektedir.
Çıkarım hızını artırmak ve çözümleme sırasında anahtar-değer önbelleklerinin (key-value cache) boyutunu azaltmak için 8 anahtar-değer başlığıyla gruplanmış sorgu dikkatini (GQA; Ainslie ve diğerleri (2023)) kullanıyoruz.
Bir dizi içindeki farklı belgeler arasında kendi kendine dikkati engelleyen bir dikkat maskesi kullanıyoruz. Bu değişikliğin standart ön eğitim sırasında sınırlı bir etkisi olduğunu gördük, ancak çok uzun dizilerde devam eden ön eğitimde önemli olduğunu fark ettik.
128 bin kelimelik bir sözlük kullanıyoruz. Kelime sözlüğümüz, tiktoken3 tokenizer’dan 100 bin kelime ile İngilizce dışındaki dilleri daha iyi desteklemek için 28 bin ek kelimeyi birleştiriyor. Llama 2 tokenizer ile karşılaştırıldığında, yeni tokenizer’ımız İngilizce verilerden oluşan bir örnek üzerinde sıkıştırma oranlarını karakter başına kelime sayısında 3,17'den 3,94'e kadar iyileştiriyor. Bu, modelin aynı miktarda eğitim hesaplamasıyla daha fazla metin “okumasını” sağlıyor. Ayrıca, seçili İngilizce dışı dillerden 28 bin kelime eklemenin, İngilizce tokenizasyonu üzerinde hiçbir etkisi olmadan hem sıkıştırma oranlarını hem de son performansı iyileştirdiğini bulduk.
RoPE temel frekans hiperparametresini 500.000'e çıkarıyoruz. Bu, daha uzun bağlamları daha iyi desteklememizi sağlıyor; Xiong ve diğerleri (2023), bu değerin 32.768'e kadar olan bağlam uzunlukları için etkili olduğunu göstermiştir.
Llama 3 405B, 126 katman, 16.384'lük bir token temsil boyutu ve 128 dikkat başlığına sahip bir mimariyi kullanır; ayrıntılar için Tablo 3'e bakın. Bu, 3,8 × 1025 FLOP’luk eğitim bütçemiz için verilerimizdeki ölçekleme yasalarına göre yaklaşık olarak hesaplama açısından en uygun olan bir model boyutuna yol açar.
Ölçekte Llama 3 405B ön eğitimini destekleyen donanım ve altyapımızı açıklıyoruz ve eğitim verimliliğinde iyileştirmelere yol açan çeşitli optimizasyonları tartışıyoruz.
RoCE tabanlı yapay zeka kümelememiz, üç katmanlı Clos ağıyla (Lee ve diğerleri, 2024) bağlı 24 bin GPU’dan oluşmaktadır.
En büyük modellerimizi eğitmek için, modeli parçalara ayırmak amacıyla dört farklı paralelleştirme yöntemini bir araya getiren 4D paralelleştirme kullanıyoruz. Bu yaklaşım, hesaplamayı birçok GPU’ya verimli bir şekilde dağıtır ve her bir GPU’nun model parametreleri, optimizasyon durumu, gradyanları ve aktivasyonlarının yüksek bant genişlikli belleğe (HBM) sığmasını sağlar.
Uzun diziler için bağlam paralelliği. Llama 3'ün bağlam uzunluğunu ölçeklendirirken bellek verimliliğini artırmak ve 128K’ya kadar son derece uzun diziler üzerinde eğitim yapmayı sağlamak için bağlam paralelliğini (CP: context parallelization’ı) kullanıyoruz. CP’de, dizi boyutuna göre bölümlendirme yapıyoruz ve özellikle, giriş dizisini 2 × CP parçaya bölüyoruz, böylece her CP sırası daha iyi yük dengelemesi için iki parça alıyor. i’nci CP sırası hem i’nci hem de (2 × CP − 1 − i)’nci parçaları alır.
Sayısal kararlılık. Farklı paralellik yapılandırmaları arasındaki eğitim kaybını karşılaştırarak, eğitim kararlılığını etkileyen birkaç sayısal sorunu düzelttik. Eğitim uyumunu sağlamak için, geri yayılım hesaplaması sırasında FP32 gradyan biriktirme kullanıyoruz ve ayrıca FSDP’deki veri paralel çalışanlar arasında FP32 ile yayılmış gradyanları azaltıyoruz. İleri hesaplama sırasında birden fazla kez kullanılan ara tensörler, örneğin, görsel kodlayıcı çıktıları, geri yayılım gradyanları da FP32'de biriktirilir.
Llama 3 için toplu iletişim kütüphanemiz, Nvidia’nın NCCL kütüphanesinin bir çatallanması (fork’u) olan NCCLX’e dayanmaktadır. NCCLX, özellikle daha yüksek gecikmeli ağlar için NCCL’nin performansını önemli ölçüde artırır.
Llama 3-405B’yi önceden eğitmek için kullanılan tarif üç ana aşamadan oluşur: (1) başlangıç ön eğitimi, (2) uzun bağlam ön eğitimi ve (3) tavlama (annealing) . 8B ve 70B modellerini önceden eğitmek için benzer adımları kullanıyoruz.
Llama 3 405B’yi, 8 × 10^−5 zirve öğrenme oranı, 8.000 adımlık lineer bir ısınma süreci ve 1.200.000 adım boyunca 8 × 10^−7'ye düşen bir kosinüs öğrenme oranı takvimi ile AdamW kullanarak önceden eğitiyoruz. Eğitim kararlılığını artırmak için eğitimin başlarında daha düşük bir toplam (batch) boyutu kullanıyor ve verimliliği artırmak için bu boyutu daha sonra artırıyoruz. Özellikle, başlangıçta 4M token’lık bir toplam boyutu ve 4.096 uzunluğunda diziler kullanıyor, 252M token’lık ön eğitimden sonra bu değerleri 8.192 token’lık 8M dizi boyutuna çıkarıyoruz. Toplam boyutunu 2.87T token üzerinde ön eğitim yaptıktan sonra tekrar 16M’e çıkarıyoruz. Bu eğitim tarifinin çok kararlı olduğunu gördük: birkaç kayıp değeri zirvesi gözlemledik ve model eğitiminin sapmasını düzeltmek için müdahaleye ihtiyaç duymadık.
Ön eğitimin son aşamalarında, 128K token’a kadar bağlam pencerelerini desteklemek için uzun diziler üzerinde eğitim yapıyoruz. Bu uzun diziler üzerinde eğitimi daha önce yapmıyoruz çünkü öz-dikkat katmanlarındaki hesaplama, dizi uzunluğuna göre karesel olarak artar. Desteklenen bağlam uzunluğunu kademeli olarak artırıyor, modelin artan bağlam uzunluğuna başarıyla uyum sağladığından emin olana kadar ön eğitim yapıyoruz.
Başarılı uyumu, (1) kısa bağlam değerlendirmelerinde modelin performansının tamamen iyileşip iyileşmediğini ve (2) modelin bu uzunluğa kadar olan ‘samanlıkta iğne’ (needle in a haystack) görevlerini mükemmel bir şekilde çözüp çözmediğini ölçerek değerlendiriyoruz. Llama 3-405B ön eğitiminde, bağlam uzunluğunu, başlangıçtaki 8K bağlam penceresinden başlayarak ve son 128K bağlam penceresine kadar 6 aşamada kademeli olarak artırdık. Bu uzun bağlam ön eğitimi aşaması, yaklaşık 800B eğitim token kullanılarak gerçekleştirildi.
Son 40 milyon token üzerinde ön eğitim sırasında, öğrenme oranını doğrusal olarak 0'a düşürdük/tavladık (annealing) ve 128 bin tokenlık bir bağlam uzunluğunu koruduk. Bu düşürme aşamasında, veri karışımını çok yüksek kaliteli veri kaynaklarını artıracak şekilde ayarladık; bkz. Bölüm 3.1.3. Son olarak, nihai ön eğitimli modeli üretmek için düşürme sırasında model kontrol noktalarının ortalamasını (Polyak (1991) ortalaması) hesapladık.
4. Ard Eğitim (Post-training)
Önceden eğitilmiş bir kontrol noktası (checkpoint) üzerinde, modeli insan geri bildirimiyle hizalayarak birkaç tur sonradan eğitim (Ouyang et al., 2022; Rafailov et al., 2024) uygulayarak hizalanmış Llama 3 modellerini üretiyoruz. Her sonradan eğitim turu, insan anotasyonlarıyla toplanan veya sentetik olarak üretilen örnekler üzerinde Denetimli İnce Ayar (SFT) ve ardından Doğrudan Tercih Optimizasyonu (DPO; Rafailov et al., 2024) içerir. Sonradan eğitim modelleme ve veri yaklaşımlarımız sırasıyla Bölüm 4.1 ve 4.2'de açıklanmaktadır. Bölüm 4.3'te akıl yürütme, kodlama, olgu gerçekliği, çok dillilik, araç kullanımı, uzun bağlam ve hassas talimat takip etme yeteneklerini geliştirmek için özel veri oluşturma stratejilerini daha ayrıntılı olarak ele alıyoruz.
Sonradan eğitim stratejimizin bel kemiği bir ödül modeli ve bir dil modelidir. İlk olarak, insan tarafından işaretlenmiş (human-annotated) tercih verileri kullanarak önceden eğitilmiş kontrol noktası (checkpoint) üzerinde bir ödül modeli eğitiyoruz (bkz. Bölüm 4.1.2). Ardından, önceden eğitilmiş kontrol noktalarını Denetimli İnce Ayar (SFT; bkz. Bölüm 4.1.3) ile ince ayar yapıyor ve kontrol noktalarını Doğrudan Tercih Optimizasyonu (DPO; bkz. Bölüm 4.1.4) ile daha da hizalıyoruz. Bu süreç Şekil 7'de gösterilmektedir. Aksi belirtilmedikçe, modelleme prosedürümüz Llama 3 405B’ye uygulanır ve basitlik adına Llama 3 405B’ye Llama 3 olarak atıfta bulunuyoruz.
Önceden eğitilmiş kontrol noktasının üzerine farklı yetenekleri kapsayan bir ödül modeli (RM) eğitiyoruz. Eğitim hedefi, Llama 2 ile aynıdır, ancak veri ölçeklendirmesinden sonra azalan iyileşmeler gözlemlediğimiz için kayıptaki marj terimini çıkarıyoruz. Llama 2'yi takiben, benzer yanıtları olan örnekleri filtreledikten sonra ödül modelleme için tüm tercih verilerimizi kullanıyoruz. Standart tercih çiftine (seçilen, reddedilen) ek olarak, bazı istemlerde seçilen yanıtın daha da iyileştirilmesi için “düzenlenmiş yanıt” adı verilen üçüncü bir yanıt oluşturulmaktadır (bkz. Bölüm 4.2.1). Bu nedenle, her tercih sıralama örneğinde iki veya üç yanıt, belirgin bir sıralama ile bulunur (düzenlenmiş > seçilen > reddedilen). Eğitim sırasında istemi ve birden fazla yanıtı tek bir satıra birleştiriyoruz ve yanıtları rastgele karıştırıyoruz. Bu, yanıtları ayrı satırlara yerleştirip puanları hesaplamanın standart senaryosuna bir yaklaşımdır, ancak yaptığımız karşılaştırmalarda, bu yaklaşım doğruluk kaybı olmadan eğitim verimliliğini artırmaktadır.
Ödül modeli daha sonra insan anotasyon istemlerimiz üzerinde reddetme örneklemesi yapmak için kullanılır, bunun detayları Bölüm 4.2'de açıklanmıştır. Reddetme örneklemesiyle elde edilen bu veri ve diğer veri kaynaklarıyla (sentetik veri dahil), önceden eğitilmiş dil modelini, hedef tokenler üzerinde standart bir çapraz-entropi kaybı kullanarak ince ayar yapıyoruz (istem tokenlarında kaybı maskeleyerek). Veri karışımı hakkında daha fazla ayrıntı Bölüm 4.2'de bulunabilir. Bu aşamaya, birçok eğitim hedefi model tarafından üretilmiş olsa da, denetimli ince ayar (SFT; Wei ve diğerleri, 2022a; Sanh ve diğerleri, 2022; Wang ve diğerleri, 2022b) adını veriyoruz. En büyük modellerimiz, 8.5K ile 9K adım arasında, 10^−5 öğrenme oranı ile ince ayardan geçirilmiştir. Bu hiperparametre ayarlarının farklı turlar ve veri karışımları arasında iyi çalıştığını gördük.
SFT modellerimizi, insan tercihi uyumu için Doğrudan Tercih Optimizasyonu (DPO; Rafailov ve diğerleri, 2024) ile daha da eğitiyoruz. Eğitim için, öncelikli olarak önceki uyum turlarından en iyi performans gösteren modeller kullanılarak toplanan en güncel tercih verilerini kullanıyoruz. Sonuç olarak, eğitim verilerimiz, her turda optimize edilen politika modelinin dağılımına daha iyi uyum sağlamaktadır. PPO (Schulman ve diğerleri, 2017) gibi politikaya dayalı algoritmaları da araştırdık, ancak DPO’nun büyük ölçekli modeller için daha az hesaplama gerektirdiğini ve özellikle IFEval (Zhou ve diğerleri, 2023) gibi talimat izleme karşılaştırmalarında daha iyi performans gösterdiğini bulduk. Llama 3 için, 10^−5 öğrenme oranı kullanıyoruz ve β hiperparametresini 0.1 olarak ayarlıyoruz (‘β’ momentum adı verilen 0 ile 1 arasında değişen bir hiperparametredir ve yeni ağırlıklı ortalamayı hesaplamak için önceki değerlerin ortalaması ile mevcut değer arasındaki ağırlığı ayarlar). Ayrıca, DPO’ya aşağıdaki algoritmik değişiklikleri uyguluyoruz:
- DPO kaybında biçimlendirme tokenlerinin maskelenmesi: DPO eğitiminin istikrarını sağlamak için, hem seçilen hem de reddedilen yanıtların kaybında özel biçimlendirme tokenlerini, başlık ve bitiş tokenleri de dahil olmak üzere (Bölüm 4.1.1'de açıklanmıştır), maskeliyoruz. Bu tokenlerin kayba katkıda bulunduğunu ve istenmeyen model davranışlarına, örneğin sonlandırma tokenlerinin aniden üretilmesi veya kuyruğun tekrarı gibi, yol açabileceğini gözlemliyoruz. Bunun, DPO kaybının karşıtlık doğası nedeniyle olduğunu düşünüyoruz . Hem seçilen hem de reddedilen yanıtlarda ortak tokenlerin bulunması, modelin bu tokenlerin olasılığını aynı anda artırıp azaltması gerektiği için çelişkili bir öğrenme hedefi oluşturuyor.
- NLL kaybı ile düzenleme: Seçilen diziler üzerinde 0.2'lik bir ölçekleme katsayısı ile negatif log-olabilirlik (NLL) kayıp terimi ekliyoruz, bu Pang ve diğerleri (2024) ile benzerdir. Bu, DPO eğitiminin istenen biçimlendirmeyi koruyarak daha da istikrarlı hale gelmesine ve seçilen yanıtların log olasılığının azalmasını önlemeye yardımcı olur (Pang ve diğerleri, 2024; Pal ve diğerleri, 2024).
Son olarak, her RM, SFT veya DPO aşamasında çeşitli veri veya hiperparametre versiyonlarını kullanarak deneylerden elde edilen modellerin ortalamasını alıyoruz (Izmailov ve diğerleri, 2019; Wortsman ve diğerleri, 2022; Li ve diğerleri, 2022).
Llama 2'yi takip ederek, yukarıdaki yöntemleri 6 turda uyguluyoruz. Her döngüde, yeni tercih anotasyonları ve SFT verilerini topluyoruz, en son modellerden sentetik veriler örnekliyoruz. Eğitim sonrası veri bileşimi, dil modellerinin kullanışlılığı ve davranışlarında kritik bir rol oynar.
Bu bölümde, insan anotasyon prosedürlerimizi ve tercih verisi toplama yöntemlerimizi (Bölüm 4.2.1), SFT verimizin bileşimini (Bölüm 4.2.2) ve veri kalite kontrolü ve temizleme yöntemlerini (Bölüm 4.2.3) tartışıyoruz.
Çoğu eğitim verimizin model tarafından oluşturulduğu göz önüne alındığında, bu verilerin dikkatli bir şekilde temizlenmesi ve kalite kontrolü gereklidir.
Veri temizleme. İlk aşamalarda, verilerimizde aşırı emoji veya ünlem işareti kullanımı gibi istenmeyen bazı yaygın kalıplar gözlemledik. Bu nedenle, sorunlu verileri filtrelemek veya temizlemek amacıyla bir dizi kural tabanlı veri kaldırma ve değiştirme stratejisi uyguladık. Örneğin, aşırı özür dileyen ton sorunlarını hafifletmek için, sık kullanılan ifadeleri (örneğin “Üzgünüm” veya “Özür dilerim”) tespit ederek bu tür örneklerin veri setimizdeki oranını dikkatlice dengeledik.
Açıklanan veri budama süreci, düşük kaliteli eğitim örneklerini kaldırmak ve genel model performansını artırmak için çeşitli model tabanlı teknikleri içerir.
- Konu Sınıflandırması: Llama 3 8B, verileri geniş (“matematiksel akıl yürütme”) ve spesifik (“geometri ve trigonometri”) kategorilere ayırmak için bir konu sınıflandırıcısı olarak ince ayar yapılmıştır.
- Kalite Puanlama: Veri kalitesini puanlamak için hem ödül modeli (RM) hem de Llama tabanlı metrikler kullanılır. RM tabanlı puanlama, en yüksek çeyreği yüksek kalite olarak değerlendirirken, Llama tabanlı puanlama genel İngilizce ve kodlama verilerini belirli kriterlere göre değerlendirir. Yüksek kaliteli örnekler, RM veya Llama tabanlı filtrelerle işaretlenenlerdir.
- Zorluk Puanlama: Veri karmaşıklığı, iki ölçüm kullanılarak değerlendirilir: Instag (niyetleri etiketler) ve Llama tabanlı zorluk puanlaması üç dereceli bir ölçek üzerinde yapılır. Daha karmaşık örnekler öncelikli olarak ele alınır.
- Anlamsal Yinelenenlerin Kaldırılması: RoBERTa, diyalogları gruplamak için kullanılır ve ardından bunlar, kalite ve zorluk puanlarının bir kombinasyonu ile sıralanır. Açgözlü (greedy) bir seçim süreci, kümeler içinde kosinüs benzerliğini karşılaştırarak yinelenenleri kaldırır ve yalnızca benzersiz yüksek kaliteli örnekleri tutar.
Kod (Bölüm 4.3.1), çok dillilik (Bölüm 4.3.2), matematik ve muhakeme (Bölüm 4.3.3), uzun bağlam (Bölüm 4.3.4), araç kullanımı (Bölüm 4.3.5), olgu gerçekliği (Bölüm 4.3.6) ve yön verilebilirlik (Bölüm 4.3.7) gibi belirli yetenekler için performansı iyileştirmeye yönelik özel çabaları vurguluyoruz.
Programlama
Llama 3 için, şu yüksek öncelikli programlama dilleri için kod üretme, dokümantasyon, hata ayıklama ve inceleme yeteneklerini geliştirmeyi ve değerlendirmeyi hedefliyoruz: Python, Java, Javascript, C/C++, Typescript, Rust, PHP, HTML/CSS, SQL, bash/shell. Burada, bir kodlama uzmanı eğiterek, SFT için sentetik veri üreterek, sistem istemi yönlendirmesiyle formatlamayı iyileştirerek ve eğitim verilerimizden kötü örnekleri çıkarmak için kalite filtreleri oluşturarak bu kodlama yeteneklerini geliştirmeye yönelik çalışmalarımızı sunuyoruz.
Uzman eğitimi. Kodla ilgili sonraki eğitim turlarında yüksek kaliteli insan anotasyonları toplamak için kullandığımız bir kodlama uzmanı eğitiyoruz. Bu, ana ön eğitim çalışmasını dallandırarak ve çoğunlukla (> %85) kod verilerinden oluşan 1T token karışımı üzerinde ön eğitime devam ederek gerçekleştirilir. Alan spesifik veriler üzerinde eğitime devam etmek, belirli bir alanda performansı artırmada etkilidir (Gururangan ve ark., 2020). CodeLlama (Rozière ve ark., 2023) tarifine benzer bir yöntemi izliyoruz. Eğitimin son birkaç bin adımında, repo seviyesindeki yüksek kaliteli kod verileri karışımı üzerinde uzmanının bağlam uzunluğunu 16K tokene çıkarmak için uzun bağlamlı ince ayar (LCFT) yapıyoruz. Son olarak, bu modeli hizalamak için, SFT ve DPO veri karışımlarının öncelikle kodu hedeflediği benzer bir sonrası eğitim modelleme tarifini takip ediyoruz (Bölüm 4.1'de açıklanmıştır). Bu model aynı zamanda kodlama istemleri için reddetme örneklemesi (Bölüm 4.2.2) için de kullanılır.
Sentetik veri üretimi. Geliştirme sırasında, kod üretiminde talimatları takip etme zorluğu, kod sözdizimi hataları, yanlış kod üretimi ve hataları düzeltme zorluğu gibi önemli sorunları belirledik. Yoğun insan anotasyonları bu sorunları teorik olarak çözebilirken, sentetik veri üretimi, anotatörlerin uzmanlık seviyesinden bağımsız olarak, daha düşük maliyetle ve daha yüksek ölçekte tamamlayıcı bir yaklaşım sunar. Bu nedenle, Llama 3 ve kod uzmanını kullanarak büyük miktarda sentetik SFT diyaloğu üretiyoruz.
Sentetik veri üretimi: yürütme geri bildirimi. 8B ve 70B modelleri, daha büyük ve daha yetkin bir model tarafından üretilen verilerle eğitildiğinde önemli performans iyileştirmeleri gösterir. Ancak, başlangıç deneylerimiz, Llama 3 405B’nin kendi ürettiği veriler üzerinde eğitilmesinin yardımcı olmadığını (hatta performansı düşürebildiğini) ortaya koydu. Bu sınırlamayı gidermek için modelin hatalarından öğrenmesini ve doğru yolda kalmasını sağlamak üzere bir gerçeklik kaynağı olarak yürütme geri bildirimini tanıttık. Özellikle, aşağıdaki süreçle yaklaşık bir milyon sentetik kodlama diyaloğundan oluşan büyük bir veri seti üretiyoruz:
Süreç üç ana adımdan oluşmaktadır:
- Problem Tanımı Üretimi: Çeşitli kaynaklardan rastgele kod parçacıkları örneklenerek çeşitli programlama problemi tanımları üretilir. Model, bu örneklerden yola çıkarak geniş bir yelpazede konuları kapsayan problemler oluşturmak üzere yönlendirilir.
- Çözüm Üretimi: Llama 3, her problemi belirli bir programlama dilinde çözmesi için yönlendirilir. Prompt içerisine genel programlama en iyi uygulamalarını dahil etmek ve modelin gerekçelerini açıklamasını istemek, çözümlerin kalitesini artırır.
- Doğruluk Analizi: Üretilen çözümlerin doğruluğu, statik ve dinamik analiz teknikleri kullanılarak yaklaşık olarak değerlendirilir. Statik analiz, sözdizimsel doğruluğu sağlarken, çalışma zamanında ve bazı anlamsal hataları yakalamak için birim testleri oluşturulur ve çalıştırılır.
Hata geri bildirimi ve yinelemeli kendini düzeltme: Bir çözüm herhangi bir adımda başarısız olduğunda, modeli bunu düzeltmesi için yönlendiririz. Bu yönlendirme, orijinal problem tanımını, hatalı çözümü ve parser/linter/tester’dan (stdout, stderr/ ve geri dönüş kodu) gelen geri bildirimi içerir. Birim testi yürütme hatasından sonra, model mevcut testleri geçecek şekilde kodu düzeltebilir veya oluşturduğu koda uyacak şekilde birim testlerini değiştirebilir. Yalnızca tüm kontrollerden geçen diyaloglar, denetimli ince ayar (SFT) için kullanılan nihai veri kümesine dahil edilir. Dikkat çekici bir şekilde, çözümlerin yaklaşık %20'sinin başlangıçta hatalı olup kendini düzelttiğini gözlemledik, bu da modelin yürütme geri bildiriminden öğrendiğini ve performansını geliştirdiğini gösteriyor.
İnce ayar ve yinelemeli iyileştirme: İnce ayar süreci, her tur bir öncekine dayanarak birden fazla turda gerçekleştirilir. Her turdan sonra model, bir sonraki tur için daha yüksek kaliteli sentetik veriler üreterek geliştirilir. Bu yinelemeli süreç, modelin performansının kademeli olarak rafine edilmesini ve geliştirilmesini sağlar.
Sentetik veri üretimi: programlama dili çevirisi. Ana programlama dilleri (örneğin, Python/C++) ile daha az yaygın olanlar (örneğin, Typescript/PHP) arasında bir performans farkı gözlemledik. Bu şaşırtıcı değildir çünkü daha az yaygın programlama dilleri için daha az eğitim verimiz bulunmaktadır. Bunu hafifletmek için mevcut verilerimizi, yaygın programlama dillerinden daha az yaygın dillere veri çevirisi yaparak tamamlıyoruz (Chen ve diğerleri, 2023'te akıl yürütme bağlamında olduğu gibi). Bu, Llama 3'ü yönlendirerek ve kaliteyi sözdizimi (syntax) çözümlemesi, derleme ve yürütme yoluyla sağlayarak gerçekleştirilir. Şekil 8, Python’dan çevrilmiş sentetik PHP kodunun bir örneğini göstermektedir. Bu, MultiPL-E (Cassano ve diğerleri, 2023) kıyaslamasıyla ölçüldüğü üzere daha az yaygın diller için performansı önemli ölçüde iyileştirir.
Sentetik veri üretimi: geri çeviri (back-translation). Yürütme geri bildiriminin kaliteyi belirlemede daha az bilgilendirici olduğu belirli kodlama yeteneklerini (örneğin dokümantasyon ve açıklamalar) geliştirmek için alternatif bir çok adımlı bir yaklaşım kullanıyoruz. Bu prosedürü kullanarak kod açıklama, üretme, dokümantasyon ve hata ayıklama ile ilgili yaklaşık 1,2 milyon sentetik diyalog oluşturduk. Ön eğitim verilerimizde çeşitli dillerden kod parçacıklarıyla başlayarak:
- Üretme: Hedef kabiliyetimizi temsil eden verileri üretmesi için Llama 3'ü yönlendiririz (örneğin, kod parçacığına yorumlar ve belge dizeleri ekleriz veya modelden bir kod parçasını açıklamasını isteriz).
- Geri Çevirme: Daha sonra modeli, sentetik olarak üretilen verileri orijinal koda “geri çevirmesi” için yönlendiririz (örneğin, modeli yalnızca belgelendirmesinden kod üretmesi için yönlendiririz veya modelden yalnızca açıklamasından kod üretmesini isteriz).
- Filtreleme: Orijinal kodu referans alarak, Llama 3'ü çıktının kalitesini belirlemesi için yönlendiririz (örneğin, modele geri çevrilen kodun orijinale ne kadar sadık olduğunu sorarız). Daha sonra SFT’de en yüksek öz-doğrulama puanlarına sahip üretilen örnekleri kullanırız.
Multilinguality (Çok Dillilik)
Llama 3'ün çok dilli yeteneklerini nasıl geliştirdiğimizi anlatıyoruz. Bu süreç, önemli ölçüde daha fazla çok dilli veriye uzmanlaşmış bir uzman eğitmeyi; Almanca, Fransızca, İtalyanca, Portekizce, Hintçe, İspanyolca ve Tayca için yüksek kaliteli çok dilli talimat ayarlama verileri elde etmeyi ve üretmeyi; ve modelimizin genel performansını artırmak için çok dilli dil yönlendirmesinin özel zorluklarıyla mücadele etmeyi içeriyor.
Uzman eğitimi. Llama 3 ön eğitim veri karışımımız, İngilizce olmayan tokenlerden önemli ölçüde daha fazla İngilizce token içermektedir. İngilizce olmayan dillerde daha yüksek kaliteli insan açıklamaları toplamak için, ön eğitim sürecinden dallanarak çok dilli bir uzmanı eğitiyoruz ve %90'ı çok dilli tokenlerden oluşan bir veri karışımı üzerinde ön eğitime devam ediyoruz. Ardından, Bölüm 4.1'i takip ederek bu uzmana son eğitim (post-training) uyguluyoruz. Bu uzman modeli, ön eğitim tamamen tamamlanana kadar İngilizce olmayan dillerde daha yüksek kaliteli açıklamalar toplamak için kullanılmaktadır.
Çok dilli veri toplama. Çok dilli SFT (Supervised Fine-Tuning) verilerimiz, ağırlıklı olarak aşağıda açıklanan kaynaklardan elde edilmektedir. Genel dağılım %2,4 insan açıklamaları, %44,2 diğer NLP görevlerinden alınan veriler, %18,8 reddedilen örneklenmiş veriler ve %34,6 çevrilmiş akıl yürütme verilerinden oluşmaktadır.
- İnsan Anotasyonları: Gerçek dünya senaryolarını yansıtan açık uçlu yönlendirmelere odaklanarak, dilbilimciler ve anadili konuşanlardan manuel olarak yüksek kaliteli veri toplanır.
- Diğer NLP Görevlerinden Veriler: Farklı görevlerden elde edilen çok dilli eğitim verileri, diyalog formatlarına dönüştürülür ve dil uyumunu artırmak için paralel metinler kullanılır. Düşük kaliteli veriler, belirli araçlar kullanılarak filtrelenir.
- Ret Örnekleme Verileri: İnce ayar için yüksek kaliteli veri üretmek amacıyla, insan tarafından anotasyon yapılmış yönlendirmelere red örnekleme uygulanır. Yaratıcılık ve tutarlılığı dengelemek için veri üretimi sırasında farklı sıcaklık ayarları kullanılır.
- Çevrilmiş Veriler: Model, önyargıları önlemek ve kültürel ve dilsel çeşitliliği sağlamak için makineyle çevrilmiş verilerden kaçınır. Ancak, çevrildiğinde performans iyileşmesi gösteren sentetik nicel akıl yürütme verileri için bir istisna yapılır.
Matematik ve Muhakeme
Muhakemeyi, çok adımlı hesaplamalar yapma ve doğru nihai cevaba ulaşma yeteneği olarak tanımlıyoruz. Matematiksel muhakemede mükemmel olan eğitim modellerine yönelik yaklaşımımıza birkaç zorluk rehberlik ediyor:
- İstem Kıtlığı: Sorular daha karmaşık hale geldikçe, eğitim için geçerli istemlerin sayısı azalır ve bu durum, çeşitli ve temsil edici veri kümeleri oluşturmayı zorlaştırır.
- Düşünce Zincirlerinin Yetersizliği: Etkili bir akıl yürütme, adım adım çözümleri gerektirir, ancak genellikle bu doğru düşünce zincirlerinden yetersiz sayıda bulunur, bu da modellerin yönlendirilmesi için kritiktir.
- Yanlış Ara Adımlar: Modeller akıl yürütme adımları oluşturduğunda, bu adımlar yanlış olabilir ve bu da yanlış sonuçlara yol açabilir.
- Modellere Harici Araçları Kullanmayı Öğretmek: Kod yorumlayıcılar gibi araçların kullanımını geliştirmek, kod ve metin akıl yürütmesini birleştirerek problem çözmeyi iyileştirebilir.
- Eğitim ve Uygulama Arasındaki Tutarsızlık: Modellerin nasıl eğitildiği ile gerçek dünyadaki senaryolarda nasıl kullanıldığı arasındaki farklar, akıl yürütme performanslarını etkileyebilir ve bu nedenle eğitim ile kullanım arasında tutarlılık sağlanması gereklidir.
Bu zorlukların üstesinden gelmek için aşağıdaki metodolojileri uyguluyoruz:
- Veri Temini ve Oluşturma: İlgili matematiksel veriler, denetimli ince ayar için soru-cevap formatına dönüştürülür. Modelin düşük performans gösterdiği alanlar için bir matematiksel beceriler taksonomisi rehberliğinde insanlardan istemler sağlamaları istenir.
- Adım-Adım Akıl Yürütme İzleri: Llama 3, istemlere adım adım çözümler üretir ve bu çözümler doğruluk açısından filtrelenir. Üretilen akıl yürütme izlerinin geçerli olduğundan emin olmak için öz-doğrulama kullanılır, bu da ince ayar verilerinin kalitesini artırır.
- Yanlış Akıl Yürütmeyi Filtreleme: Sonuç ve adım adım ödül modelleri, verilerden yanlış akıl yürütme izlerini filtrelemek için eğitilir. Daha karmaşık istemler için geçerli akıl yürütme dizileri oluşturmak amacıyla Monte Carlo Ağaç Araması (MCTS) kullanılır.
- Kod ve Metinle Akıl Yürütmeyi Birleştirme: Llama 3, problemleri hem metinsel akıl yürütme hem de Python kodu kullanarak çözmeye yönlendirilir ve kod yürütme, akıl yürütmeyi doğrulamak için geri bildirim sağlar.
- Hatalardan Öğrenme: Yanlış akıl yürütme girişimleri, insan geri bildirimi simüle etmek için kullanılır ve Llama 3'ün hataları düzeltmeye teşvik edildiği bu yinelemeli süreç, modelin hatalarından öğrenmesine ve akıl yürütme doğruluğunu artırmasına yardımcı olur.
Uzun Bağlam
Son ön eğitim aşamasında, Llama 3'ün bağlam uzunluğunu 8K token’dan 128K token’a genişletiyoruz (daha fazla detay için Bölüm 3.4'e bakınız). Ön eğitimde olduğu gibi, ince ayar sırasında da kısa ve uzun bağlam yeteneklerini dengelemek için tarifi dikkatlice ayarlamamız gerektiğini bulduk.
SFT ve sentetik veri üretimi. Mevcut SFT tarifimizi yalnızca kısa bağlam verileriyle kullanmak, ön eğitimden gelen uzun bağlam yeteneklerinde önemli gerilemelere yol açtı ve SFT veri karışımımıza uzun bağlam verilerini dahil etme ihtiyacını vurguladı. Ancak, uzun bağlamlı metinleri okumak zahmetli ve zaman alıcı olduğundan, insanların bu tür örnekleri etiketlemesi genellikle pratik değildir, bu yüzden bu boşluğu doldurmak için ağırlıklı olarak sentetik verilere güveniyoruz. Llama 3'ün önceki sürümlerini kullanarak, önemli uzun bağlam kullanım durumlarına dayanarak sentetik veriler üretiyoruz: (muhtemelen çoklu dönüşümlü) soru-cevaplama, uzun belgeler için özetleme ve kod repoları üzerinde akıl yürütme, ve bunları aşağıda daha detaylı olarak açıklıyoruz.
- Soru Cevaplama: Öncelikle, önceden eğittiğimiz karışımlardan özenle seçtiğimiz uzun belgeleri bir araya getiriyoruz. Bu belgeleri 8 bin tokenlik parçalara bölüyoruz ve rastgele seçilen bu parçalara dayalı olarak QA (Soru-Cevap) çiftleri oluşturmak için Llama 3 modelinin önceki bir versiyonunu kullanıyoruz. Eğitim sırasında, tüm belge bağlam olarak kullanılır.
- Özetleme: Uzun bağlamlı belgelerin hiyerarşik özetlemesini, önce 8 bin token uzunluğundaki giriş parçalarını en güçlü Llama 3 8K bağlam modelimizi kullanarak özetleyip, ardından bu özetleri özetleyerek uyguluyoruz. Eğitim sırasında, tam belgeyi veriyor ve modelden tüm önemli detayları koruyarak belgeyi özetlemesini istiyoruz. Ayrıca, belgelerin özetlerine dayalı QA çiftleri oluşturuyor ve modele, tüm uzun belgeyi global olarak anlamayı gerektiren sorular yöneltiyoruz.
- Uzun bağlam kodu çıkarımı: Python dosyalarını analiz ederek import ifadelerini ve bu ifadelerin bağımlılıklarını belirliyoruz. Buradan, en sık bağımlılık gösterilen dosyaları seçiyoruz, özellikle en az 5 başka dosya tarafından referans verilenleri. Bu ana dosyalardan birini bir repodan kaldırıyoruz ve modele, hangi dosyaların eksik dosyaya bağımlı olduğunu belirlemesini ve gerekli eksik kodu oluşturmasını istiyoruz.
Bu sentetik olarak üretilen örnekleri, girdi uzunluklarının daha hassas hedeflenmesini sağlamak amacıyla dizilim uzunluğuna göre (16K, 32K, 64K ve 128K) daha da kategorize ediyoruz. Dikkatli ablasyonlar sayesinde, sentetik olarak üretilen uzun bağlam verisinin %0,1'ini orijinal kısa bağlam verisiyle karıştırmanın, hem kısa bağlam hem de uzun bağlam kıyaslamalarında performansı optimize ettiğini gözlemliyoruz.
DPO. Yalnızca kısa bağlam eğitim verisi kullanmanın, SFT modelinin uzun bağlam görevlerinde yüksek kaliteli olması durumunda uzun bağlam performansını olumsuz etkilemediğini gözlemliyoruz. Bunun, DPO tarifimizin SFT’ye kıyasla daha az optimizasyon adımına sahip olmasından kaynaklandığını düşünüyoruz. Bu bulguya dayanarak, uzun bağlam SFT kontrol noktalarımızın üzerine standart kısa bağlam tarifini DPO için koruyoruz.
Araç Kullanımı
LLM’lere arama motorları veya kod yorumlayıcıları gibi araçları kullanmayı öğretmek, çözebilecekleri görevlerin yelpazesini büyük ölçüde genişletir ve onları saf sohbet modellerinden daha genel asistanlara dönüştürür (Nakano et al., 2021; Thoppilan et al., 2022; Parisi et al., 2022; Gao et al., 2023; Mialon et al., 2023a; Schick et al., 2024). Llama 3'ü aşağıdaki araçlarla etkileşim kuracak şekilde eğitiyoruz:
- Arama motoru: Llama 3, bilgi kesilme tarihinin ötesine geçen veya web’den belirli bir bilgiyi elde etmeyi gerektiren soruları yanıtlamak için Brave Search7'ü kullanacak şekilde eğitilmiştir.
- Python yorumlayıcısı: Llama 3, karmaşık hesaplamalar yapmak, kullanıcı tarafından yüklenen dosyaları okumak ve bunlara dayalı olarak soru yanıtlama, özetleme, veri analizi veya görselleştirme gibi görevleri çözmek için kod üretebilir ve çalıştırabilir.
- Matematiksel hesaplama motoru: Llama 3, Wolfram Alpha API8'i kullanarak matematik ve bilim sorunlarını çözebilir veya Wolfram’ın veritabanından doğru bilgileri alabilir.
Ortaya çıkan model, bu araçları bir sohbet ortamında, kullanıcının sorgularını çözmek için kullanabilir, çok adımlı diyaloglar da dahil olmak üzere. Eğer bir sorgu birden fazla araç çağrısı gerektiriyorsa, model adım adım bir plan yazabilir, araçları sırayla çağırabilir ve her araç çağrısından sonra mantıksal çıkarımlar yapabilir. Ayrıca, Llama 3'ün sıfırdan araç kullanma yeteneklerini geliştirdik — bağlama uygun, potansiyel olarak daha önce görülmemiş araç tanımları ve bir kullanıcı sorgusu verildiğinde, modeli doğru araç çağrısını oluşturması için eğitiyoruz.
Uygulama. Temel araçlarımızı farklı yöntemlere sahip Python nesneleri olarak uyguluyoruz. Sıfırdan araçlar, açıklamalar ve belgeler (örneğin, nasıl kullanılacaklarına dair örnekler) ile Python fonksiyonları olarak uygulanabilir ve modelin uygun çağrıyı oluşturması için sadece fonksiyonun imza ve açıklama metnini bağlam olarak kullanması yeterlidir. Ayrıca, fonksiyon tanımlamalarını ve çağrılarını, örneğin web API çağrıları için, JSON formatına dönüştürüyoruz. Tüm araç çağrıları Python yorumlayıcısı tarafından yürütülür ve bu, Llama 3 sistem isteminde etkinleştirilmelidir. Temel araçlar sistem isteminde tek tek etkinleştirilebilir veya devre dışı bırakılabilir.
Veri toplama. Schick ve diğerlerinden (2024) farklı olarak, Llama 3'e araçları nasıl kullanacağını öğretmek için insan anotasyonları ve tercihleri kullanıyoruz. Llama 3'te genel olarak kullanılan eğitim sonrası boru hattıyla iki ana fark vardır:
- İşlemler için, diyaloglar genellikle tek bir asistan mesajından daha fazlasını içerir (örneğin, aracı çağırma ve aracın çıktısını değerlendirme). Bu nedenle, daha ayrıntılı geri bildirim toplamak amacıyla mesaj düzeyinde notlar alıyoruz: değerlendiriciler, aynı bağlama sahip iki asistan mesajı arasında bir tercih yapar veya her ikisi de büyük sorunlar içeriyorsa, mesajlardan birini düzenler. Seçilen veya düzenlenen mesaj daha sonra bağlama eklenir ve diyalog devam eder. Bu, hem asistanın araçları çağırma yeteneği hem de araç çıktıları hakkında akıl yürütme için insan geri bildirimi sağlar. Değerlendiriciler araç çıktıları hakkında sıralama yapamaz veya düzenleme yapamaz.
- Reddetme örneklemesi uygulamıyoruz, çünkü araç ölçütlerimizde kazanç gözlemlemedik.
Not alma sürecini hızlandırmak için, önceki Llama 3 kontrol noktalarından sentetik olarak üretilmiş verilerle ince ayar yaparak temel araç kullanım yeteneklerini başlatıyoruz. Böylece, değerlendiricilerin daha az düzenleme yapması gerekiyor. Benzer bir şekilde, Llama 3 geliştikçe ve ilerledikçe, insan not alma protokollerimizi giderek karmaşıklaştırıyoruz: tek seferlik araç kullanımı notlarıyla başlıyor, ardından diyaloglarda araç kullanımı ve nihayetinde çok aşamalı araç kullanımı ve veri analizi için notlar alıyoruz.
Araç veri setleri. Araç kullanım uygulamaları için veri oluşturmak amacıyla aşağıdaki prosedürü kullanıyoruz:
Tek adımlı araç kullanımı: Öncelikle, yapay kullanıcı istemlerinin birkaç örnekle üretimiyle başlıyoruz; bu istemler, yapıları gereği temel araçlarımızdan birini (örneğin, bilgi kesim tarihimizin ötesinde olan sorular) kullanmayı gerektirir. Sonra, yine birkaç örnekle üretime dayanarak, bu istemler için uygun araç çağrılarını oluşturuyor, bu çağrıları çalıştırıyor ve çıktıyı modelin bağlamına ekliyoruz. Son olarak, modelden, aracın çıktısına dayanarak kullanıcının sorgusuna nihai bir yanıt üretmesini istiyoruz. Sonuç olarak şu formda yollar elde ediyoruz: Sistem istemi, kullanıcı istemi, araç çağrısı, araç çıktısı ve nihai yanıt. Ayrıca, çalıştırılamayan araç çağrılarını veya diğer biçimlendirme sorunlarını çıkarmak için bu veri setinin yaklaşık %30'unu filtreliyoruz.
- Çok adımlı araç kullanımı: Benzer bir protokol izliyoruz ve öncelikle modele temel çok adımlı araç kullanma yeteneklerini öğretmek için yapay veriler üretiyoruz. Bunu yapmak için, önce Llama 3'ü en az iki araç çağrısı gerektiren kullanıcı istemleri oluşturması için yönlendiriyoruz; bu araçlar, temel setimizdeki aynı veya farklı araçlar olabilir. Sonra, bu istemler temelinde, Llama 3'ü ReAct (Yao ve diğerleri, 2022) benzeri bir şekilde, aralıklı akıl yürütme adımları ve araç çağrılarından oluşan bir çözüm üretmesi için birkaç örnekle yönlendiriyoruz. Çok adımlı araç kullanımını içeren bir görevi yerine getiren Llama 3'e bir örnek için Şekil 10'a bakın.
- Dosya yüklemeleri: Şu dosya türleri için anotasyon yapıyoruz: .txt, .docx, .pdf, .pptx, .xlsx, .csv, .tsv, .py, .json, .jsonl, .html, .xml. İstemlerimiz, sağlanan bir dosyaya dayalı olup, dosyanın içeriğini özetleme, hataları bulma ve düzeltme, bir kod parçasını optimize etme ve veri analizi veya görselleştirme yapmayı istemektedir. Bir dosya yüklemeyi içeren bir görevi yerine getiren Llama 3'e bir örnek için Şekil 11'e bakın.
Bu sentetik veriyi ince ayarladıktan sonra, çok adımlı etkileşimler, üçten fazla adımlı araç kullanımı ve bir aracın istenilen cevabı veremediği durumlar dahil olmak üzere çeşitli ve zorlu senaryolarda insan anotasyonları topluyoruz. Modeli yalnızca etkinleştirildiğinde araçları kullanmaya öğretmek için sentetik verimizi farklı sistem komutlarıyla genişletiyoruz. Modelin basit sorgular için araçları çağırmaktan kaçınmasını sağlamak amacıyla, kolay matematik veya soru-cevap veri setlerinden (Berant ve diğerleri, 2013; Koncel-Kedziorski ve diğerleri, 2016; Joshi ve diğerleri, 2017; Amini ve diğerleri, 2019) ve bunların araçsız yanıtlarından, ancak sistem komutunda araçların etkin olduğu durumlar ekliyoruz.
Sıfır atış araç kullanımı verileri. Llama 3'ün sıfır atış araç kullanımı yeteneklerini (fonksiyon çağrısı olarak da adlandırılır) büyük ve çeşitli, kısmen sentetik (fonksiyon tanımları, kullanıcı sorgusu, karşılık gelen çağrı) dizileri üzerinde ince ayar yaparak geliştiriyoruz. Modelimizi, daha önce görülmemiş bir araç setinde değerlendiriyoruz.
- Tekli, iç içe ve paralel fonksiyon çağrısı: Çağrılar basit, iç içe (yani, bir fonksiyon çağrısını başka bir fonksiyonun argümanı olarak geçmek) veya paralel (yani, modelin bağımsız fonksiyon çağrılarından oluşan bir liste döndürmesi) olabilir. Çeşitli fonksiyonlar, sorgular ve doğru yanıtlar üretmek zor olabilir (Mekala ve diğerleri, 2024), bu yüzden sentetik kullanıcı sorgularımızı gerçek fonksiyonlara dayandırmak için Stack’ten (Kocetkov ve diğerleri, 2022) veri çıkarmaya başvuruyoruz. Daha spesifik olarak, fonksiyon çağrılarını ve tanımlarını çıkarıyor, eksik dokümantasyon ya da çalıştırılamayan fonksiyonlar gibi durumlar için temizleme ve filtreleme yapıyor, ardından Llama 3'ü kullanarak fonksiyon çağrısına karşılık gelen doğal dilde bir sorgu üretiyoruz.
- Çok adımlı fonksiyon çağrısı: Ayrıca, Li ve diğerlerinin (2023b) önerdiği protokole benzer bir şekilde, fonksiyon çağrıları içeren çok adımlı diyaloglar için sentetik veri üretiyoruz. Bu süreçte, çeşitli alanları ve gerçekçi API’leri kapsayan veriler üretildiğinden emin olarak, alanlar, API’ler, kullanıcı sorguları, API çağrıları ve yanıtlar üreten birden fazla ajan kullanıyoruz. Tüm ajanlar, rolleri doğrultusunda farklı şekillerde yönlendirilen Llama 3'ün varyantları olup, adım adım iş birliği yapmaktadır.
4.3.6 Olgu Gerçekliği (Factuality)
Modelin, bildiği şeyleri bilmesini sağlama ilkesine uyuyoruz; eğitimin ardından modele yeni bilgi eklemek yerine (Gekhman ve diğerleri, 2024; Mielke ve diğerleri, 2020). Temel yaklaşımımız, model çıktılarının ön eğitim verilerinde bulunan gerçek bilgilere uygun hale getirilmesini amaçlayan veri üretmeyi içerir. Bunu başarmak için, Llama 3'ün bağlam içi yeteneklerinden yararlanan bir bilgi yoklama tekniği geliştiriyoruz. Bu veri üretim süreci şu adımları içerir:
- Ön eğitim verilerinden bir veri parçası çıkarılır.
2. Llama’ya bir yönerge vererek bu veri parçaları hakkında gerçekçi bir soru oluşturulur.
3. Llama 3'ten bu soruya verilen yanıtlar örneklenir.
4. Oluşturulan yanıtların doğruluğu, orijinal bağlam referans alınarak ve Llama 3 yargıç olarak kullanılarak değerlendirilir.
5. Yanıtların bilgilendirici olup olmadığı, Llama 3'ün yargıcı olarak değerlendirilir.
6. Llama 3 kullanılarak, tutarlı bir şekilde bilgilendirici ancak yanlış olan yanıtlar için bir reddetme yanıtı oluşturulur.
Bilgi yoklama tekniğiyle üretilen verileri kullanarak modelin sadece bildiği sorulara yanıt vermesini ve emin olmadığı soruları yanıtlamayı reddetmesini teşvik ediyoruz. Ayrıca, ön eğitim verileri her zaman gerçeğe uygun veya doğru olmayabilir. Bu nedenle, gerçekçi olmayan veya yanlış ifadelerin yaygın olduğu hassas konuları ele alan sınırlı sayıda etiketlenmiş gerçeklik verisi de topluyoruz.
Yön verilebilirlik (Steerability)
Yön verilebilirlik, modelin eylemlerini ve sonuçlarını geliştirici ve kullanıcı gereksinimlerine uygun şekilde yönlendirme yeteneğidir. Llama 3 genel bir temel model olduğundan, farklı alt uygulamalara kolayca yön verilebilmesi için maksimum düzeyde yön verilebilir olmalıdır. Llama 3 için, özellikle yanıt uzunluğu, formatı, tonu ve karakter/persona çevresinde doğal dil talimatlarıyla sistem komutları aracılığıyla yön verilebilirliğini artırmaya odaklanıyoruz.
Veri toplama: Llama 3 için farklı sistem komutları tasarlamalarını isteyerek, genel İngilizce kategorisi içinde yön verilebilirliğini tercih örnekleri topluyoruz. Annotatörler, sohbet boyunca sistem komutlarında tanımlanan talimatları ne kadar tutarlı bir şekilde izlediklerini değerlendirmek için modellerle sohbetlere giriyor. Aşağıda, yön verilebilirliğini artırmak için kullanılan özelleştirilmiş bir sistem komutu örneği gösteriyoruz:
Siz, yoğun aileler için yemek planı asistanı olarak görev yapan yardımsever ve neşeli bir AI Chatbot'sunuz.
Aile 2 yetişkin, 3 genç ve 2 okul öncesi çocuktan oluşuyor.
Bir seferde iki veya üç gün planlayın ve ikinci günün planı için artıkları veya ekstra malzemeleri kullanın.
Kullanıcı iki veya üç gün isteyip istemediğini size bildirecektir.
İstemiyorlarsa, üç gün olduğunu varsayın.
Her plan kahvaltı, öğle yemeği, ara öğün ve akşam yemeğini içermelidir.
Kullanıcıya planı onaylayıp onaylamadığını veya ayarlamalar gerekip gerekmediğini sorun.
Onayladıktan sonra aile büyüklüğünü göz önünde bulundurarak bir alışveriş listesi sağlayın.
Her zaman aile tercihlerini aklınızda bulundurun ve beğenmedikleri bir şey varsa bir ikame sunun.
Kullanıcı ilham almıyorsa, bu hafta tatilde ziyaret etmeyi dilediği tek yerin neresi olduğunu sorun ve ardından o yerin kültürüne göre yemekler önerin.
Hafta sonu yemekleri daha karmaşık olabilir.
Hafta içi yemekleri hızlı ve kolay olmalıdır.
Kahvaltı ve öğle yemeği için tahıl gevreği, önceden pişirilmiş pastırmalı İngiliz kekleri ve diğer hızlı ve kolay yiyecekler gibi kolay yiyecekler tercih edilir.
Aile meşguldür.
Kahve veya enerji içecekleri gibi temel ve favori ihtiyaçlarının olup olmadığını sorduğunuzdan emin olun, böylece satın almayı unutmazlar.
Özel bir durum olmadığı sürece bütçenizi koruyun.
Modelleme. Tercih verilerini topladıktan sonra, bu verileri ödül modellemesinde, reddetme örneklemesinde, SFT’de ve DPO’da kullanarak Llama 3'ün yön verilebilirliğini geliştiriyoruz.
Kaynak
Meta AI, (July 2024), Meta LLama 3.1: