- Byte Latent Transformer (BLT), sabit sözlüklü tokenizasyona gerek duymadan ham baytlar üzerinde eğitilen, buna rağmen büyük ölçekte tokenizasyon tabanlı LLM performansına yaklaşan bayt düzeyinde bir LLM mimarisidir
- Temel fikir, baytları sabit tokenlar yerine dinamik boyutlu yamalar halinde gruplamak ve bir sonraki baytın entropisinin yüksek olduğu konumlara daha fazla hesaplama ve model kapasitesi ayırmaktır
- Meta, bayt düzeyindeki modellerin ölçeklenebilirliğini doğrulamak için en fazla 8B parametre ve 4T eğitim baytı ile FLOP kontrollü bir ölçekleme çalışması yürüttü
- Veri ne kadar öngörülebilirse o kadar uzun yamalar seçerek eğitim ve çıkarım verimliliğini artırıyor; çıkarım ve long-tail genellemede de nitel iyileşmeler görülüyor
- Sabit çıkarım maliyetinde, yama boyutunu ve model boyutunu birlikte büyüten BLT yaklaşımı tokenizasyon tabanlı modellere göre daha iyi ölçekleme gösteriyor
BLT’nin önerdiği bayt düzeyinde LLM yapısı
- Byte Latent Transformer (BLT), sabit sözlüğe dayalı tokenizasyon yerine giriş birimi olarak ham baytları kullanan bayt düzeyinde bir LLM mimarisidir
- Büyük ölçekli ayarlarda tokenizasyon tabanlı LLM performansına yaklaşırken çıkarım verimliliği ve sağlamlıkta da kayda değer iyileşmeler gösterir
Dinamik yamalar hesaplama birimi haline gelir
- BLT, baytları dinamik boyutlu yamalar olarak kodlar ve bu yamaları ana hesaplama birimi olarak kullanır
- Yama bölümlendirme, bir sonraki baytın entropisine göre dinamik olarak yapılır
- Veri karmaşıklığının arttığı noktalara daha fazla hesaplama ve model kapasitesi ayrılır
- Veri öngörülebilir olduğunda hesaplamayı azaltmak için uzun yamalar seçilir
FLOP kontrollü ölçekleme deneyi
- Meta, bayt düzeyindeki modeller için FLOP kontrollü ölçekleme çalışması yürüttü
- Deney ölçeği en fazla 8B parametre ve 4T eğitim baytıdır
- Sonuçlar, sabit sözlük olmadan ham baytlarla eğitilen modellerin de ölçeklenebilir olduğunu gösteriyor
Verimlilik ve genelleme sonuçları
- Dinamik olarak uzun yamalar seçme yöntemi hem eğitim verimliliğini hem de çıkarım verimliliğini artırır
- Nitel sonuçlarda çıkarım ve long-tail genelleme alanında iyileşmeler görülür
- Sabit çıkarım maliyetinde BLT, tokenizasyon tabanlı modellere kıyasla daha iyi ölçekleme gösterir
- Yama boyutunu ve model boyutunu aynı anda büyüten bir yöntem kullanılır
Kaynaklar
- Makaleyi indirin: Byte Latent Transformer makalesini indirin
1 yorum
Hacker News yorumları
Makale: https://scontent-sjc3-1.xx.fbcdn.net/v/t39.2365-6/470135129_...
BERT'ün çıktığı yaz, karakter tabanlı bir CNN modeliyle sınıflandırma yapan bir startup'ta çalışıyordum
Ekipte alternatif temsil yöntemleri üzerine çok kafa yoruyorduk; diğer ekip üyeleri kelime vektörlerini tercih ediyordu ama ben pek sıcak bakmıyordum. Üzerinde çalıştığımız belgelerde sözlükte olmayan kelimeler sıkça çıkıyordu, bu kelimeler önemliydi ve onları atmanın başarısızlığa yol açacağını düşünüyordum
Biz de bir “temel model” geliştiriyorduk; bu yüzden yalnızca nihai modelde sözlük dışı kelime olmaları değil, eğitim maliyetinin daha yüksek olduğu temel model aşamasında sözlük dışı kalmaları da sorundu
Karakter tabanlı modelle sınıflandırma oldukça iyi gidiyordu ama “sözlüğü” sinir ağının içine kaydetmenin sinir ağlarını kullanmanın iyi bir yolu olmadığı düşüncesi yüzünden token'lardan beklenti yüksekti
Öte yandan Word2Vec gibi yöntemlerin umut vadetmediğine o kadar emindim ki, PubMed vaka raporları için sahte özetler yazdırmak üzere bir RNN eğiterek metin anlama için temel model geliştirdiğimiz önceki bir projeden ayrılmıştım
Byte-pair encoding ortaya çıktığında, bir toplantıda incelediğimiz tokenizasyon yöntemleri içinde ilk kez destekleyebileceğim bir yöntem olduğunu söylediğimi hatırlıyorum
Yine de açıkçası hâlâ karakter düzeyinde çalışabilsek iyi olur diye düşünüyorum
Token'lar geçici bir çözüm. Çoğu zaman iyi çalışıyorlar, ama çalışmadıklarında bunu bariz biçimde gösteriyorlar
[1] https://arxiv.org/abs/2103.06874
Gerçek dünyada insanlar her gün sözlükte olmayan kelimeler üretip kullanarak iletişim kuruyor. Örneğin “notify” sözlükte var, ama “birine bildirimde bulunma aracı” anlamındaki “notifier” yok; e-posta bildirimi gönderen kod da “email notifier” oluyor. Sonra bu, kısa mesaj, sesli arama, çağrı merkezi geri araması notifier'ı gibi devam ediyor
Her sektör ve kuruluşta jargon, sözlükte olmayan özel kelimeler ve ayırt ediciliği düşük kısaltmalar var
Gerçek iletişimi ele alamayıp yalnızca laboratuvar ortamında temizlenmiş sözlük içi yanıtlar üretebiliyorsa makine öğrenimi çıktılarının nasıl işe yarayabileceğini bilmiyorum
Umarım iyi sonuç verir. Tokenizer'lar ortadan kalkmalı
Hiyerarşik bir yapı olması ama hiyerarşinin yalnızca iki katmandan oluşması ilginç. Daha fazla katman eklemek sonraki araştırmalar için doğal bir yön gibi görünüyor
Bu arada ilgili başka bir yazıya[1] da bu yorumu bırakmıştım ve yazar şöyle yanıtladı
“Yazarıyım :), incelenmeye değer iyi bir yön olduğunu düşünüyorum! Ancak tek seferde yapmak işi biraz büyütmenin ötesinde, FLOP bütçesini hiyerarşi genelinde nasıl dağıtacağınız konusunda dikkatli olmayı gerektiriyor. İki aşamada bir aşamayı (bayt/yerel encoder) FLOP açısından verimli, diğer aşamayı (patch/küresel encoder) FLOP yoğun yapabilirsiniz. Patch'leri daha büyük birimler hâlinde gruplamanın da yolunu bulmak gerekir. Yine de buradan uzanabilecek çok yön var!”
[1] https://news.ycombinator.com/item?id=42413430
Patch oluşturmak için küçük bir modelle giriş dizgesindeki bir sonraki karakterin olasılığı tahmin ediliyor
Giriş dizgesi “Lazy dog jumped over a fence.” ise model her karakterin olasılığını tahmin ediyor
Örneğin bir sonraki karakterin “a” olduğundan %100 emin olabilir ya da “a” %10, “b” %10 gibi olabilir
Ardından karakter tahminleri birlikte gruplandırılıyor. Kaç karakter mi? Her grubun toplam belirsizliği, yani entropisi benzer olacak kadar
Böylece patch veya “token” oluşuyor
Yalnızca bir sonraki baytın entropisi kullanılıyor ve bunun eşiği aşıp aşmadığına (küresel kısıt) ya da bir önceki baytın entropisinden başka bir eşik kadar büyük olup olmadığına (yaklaşık monoton kısıt) bakılıyor
Bu yüzden Ek E'de gösterildiği gibi, uzun ve tekrarlı diziler patolojik derecede uzun patch'lere yol açabiliyor
Asıl merak ettiğim, Şekil 3(f)'deki 2 bayt bağlam kullanan küçük CNN bayt düzeyi modeli; makalenin başka hiçbir yerinde ondan bahsedilmiyor
Yakın tarihli ilgili yazı:
Meta FAIR yeni araştırma, model ve veri kümelerini paylaşıyor - https://news.ycombinator.com/item?id=42412360 - Aralık 2024, 61 yorum
Modeli eğiten tek şeyin, yani loss'un, tek bayt uzayında olasılık tahmini olduğu mu söyleniyor?
Yanlış anlamadıysam bunun tek başına yeterli olduğu anlamına geliyor; oldukça umut verici görünüyor
Benim anladığım kadarıyla bu yöntem yalnızca tokenizasyonu değil, sampling'i de ortadan kaldırmıyor mu?
Sampling LLM'lerin baş belası olabilir ama modelin her zaman geçerli JSON üretmesi için gramer dayatmak, daha çeşitli dağılımlar elde etmek için sıcaklığı ayarlamak ya da XTC sampling kullanmak gibi ilginç kullanım alanları da sağlıyor
BLT'de bunun karşılığı ne olur?
Decoder'a izin verilen/yasaklanan baytları ek girdi olarak verip geçerli çıktı gelene kadar decoding'i tekrarlamak dışında bir yol aklıma gelmiyor; belki daha basit ve obvious bir yaklaşım vardır
BPE tabanlı modellerde olduğu gibi çıktı katmanında yalnızca izin verilen baytlar için softmax hesaplayıp oradan sampling yapmak yeterli
Bu, yapay zekanın binary üzerinde de ön eğitim yapabileceği anlamına mı geliyor?
Yapay zekanın bizim yerimize kod yazmasının son nokta olduğunu düşünüyoruz ama belki de çok daha basit bir yolla kontrolü ele geçirebilir
Dilbilimsel yaklaşımın ve deneyime dayalı yaklaşımın modadan ne kadar düştüğü ilginç
İnsanlar mümkün olsa da genelde tek tek karakterleri okumaz. Kökleri vardır, ek çekimlerini de anlarlar. Tokenizasyon bu deneyimi yeniden üretemez; LLM söz varlığında görünen token'lara bakınca bu özellikle açık, karakter ya da bayt kodlaması için de aynı şey geçerli
İnsanların kelimeleri ayrıştırmasının birden fazla yolu var. Tüm cümleyi bir anda anlayabilir, öbekleri okuyabilir, kelime kelime okuyabilir ya da yeni bir kelimeyi karakter karakter seslendirerek çözebilirler
Bir yöntemin, insanların bir görevi yapma ya da dünyayı algılama biçimini yeniden ürettiği için iyi olduğunu açıkça savunan çok az makale var
LLM'lere bağımlılık arttıkça modelleri kendi deneyimimize daha yakın hizalamak isteyeceğimizi düşünüyorum. O zaman model hataları da daha anlaşılır hâle gelir diye görüyorum
“Tokenizasyondan farklı olarak BLT, patch'ler için sabit bir söz varlığına sahip değildir” cümlesi, doğru anladıysam patch söz varlığının eğitimden önce bilinmediği anlamına geliyor
Eğitim patch söz varlığını oluşturduktan sonra, çıkarımda aynı sabit söz varlığını kullanacağını sanıyorum. Aksi takdirde nasıl çalışabileceğini bilmiyorum
Doğru mu?