- LLM’lerde tokenizer oluşturma ile model eğitimi birbirinden ayrı olduğu için,
_SolidGoldMagikarpgibi belirli token’lar beklenmedik davranışlara yol açabilir - Sorunun özü, tokenizer sözlüğünde bulunmasına rağmen eğitim sırasında neredeyse hiç ya da hiç görülmeyen under-trained tokens’tır; bunlar sıklıkla ‘glitch tokens’ olarak adlandırılır
- Araştırma, tokenizer analizi, model embedding ağırlık göstergeleri ve prompting tekniklerini birleştirerek bu tür token’ları otomatik olarak bulma yöntemi öneriyor
- Bu token’lar sabit boyutlu tokenizer’ın sözlük kapasitesini boşa harcar ve girdi/çıktı uzunluğunu, çıkarım maliyetini, halüsinasyonları veya bozuk çıktıları etkileyebilir
- Harici verileri arayıp işleyen araç kullanımı ve ajan ortamlarında, under-trained token tespiti ve iyileştirmesi dağıtımdaki modellerin güvenliği ve sağlamlığıyla doğrudan bağlantılıdır
Tokenizer ile model eğitimi arasındaki uyumsuzluk
- Çoğu LLM bileşeni büyük ölçekli veriler üzerinde gözetimsiz şekilde eğitilirken, tokenizer genellikle ayrı bir algoritma ve daha küçük bir veri kümesiyle bağımsız olarak eğitilir
- GPT-2, günümüzde Transformer tabanlı dil modellemesinin birçok temelini oluşturdu ve byte-pair encoding (BPE) tabanlı tokenizasyon çerçevesi de geniş ölçüde benimsendi
- BPE tokenizasyonu, girdi metnini alt sözcük token dizilerine dönüştürür ve sabit birleştirme kurallarına göre yan yana iki token’ı tekrar tekrar birleştirir
- Birleştirme kuralları, LLM eğitim verisini temsil etmesi gereken daha küçük bir veri kümesi üzerinde açgözlü bir öğrenme algoritmasıyla öğrenilir
Glitch token’ların ortaya çıkma yapısı
- Tokenizer ile model eğitimi ayrıldığında, bazı token’ların model eğitimi sırasında neredeyse hiç ya da hiç görünmediği bir durum oluşabilir
- Bu tür token’lar girdiye dahil edildiğinde halüsinasyonlar veya bozuk çıktılar gibi beklenmedik davranışlar tetikleyebilir
- Araştırma, bu token’ları under-trained tokens veya untrained tokens olarak ayırıyor
untrained, yalnızca belirli bir token’ın model eğitim verisinde yer almadığına dair açık işaretler olduğunda kullanılır- Genel olarak bunlar ‘glitch tokens’ adıyla da anılır
- Temsili örnek olarak
_SolidGoldMagikarptoken’ından söz ediliyor
Mevcut tokenizasyon yöntemlerinin sınırları ve alternatifler
- Son araştırmalar, tokenizasyonu kaldırıp ham bayt girdisine geçme yaklaşımını da ele aldı; ancak bu tercih genellikle çıkarım hızı maliyeti yaratır
- Bu hız maliyeti, ilk ve son katmanlardaki özel mimariler veya ara katmanlardaki değişken hesaplama ile telafi edilebilir
- Bu yaklaşım henüz yaygın biçimde benimsenmiş değil ve modern modellerin çoğu hâlâ alt sözcük tokenizasyonuna dayanıyor
- BPE’nin başlıca alternatifi Unigram yöntemidir; BPE’den daha iyi olabileceğini gösteren çalışmalar olsa da genel olarak yaygın kullanılmıyor
Under-trained token’ların pratikte yarattığı sorunlar
- under-trained token’lar, sabit boyutlu tokenizer’da daha sık görülen token’ların kullanabileceği sözlük kapasitesini işgal eder
- Bu da ortalama girdi/çıktı uzunluğunu ve çıkarım maliyetini azaltma fırsatının kaçırılmasına neden olabilir
- Bu token’lar girdi verisine kasıtlı ya da tesadüfi olarak dahil edildiğinde, istenmeyen model çıktıları üretebilir ve downstream uygulamaları bozabilir
- LLM’lerin araç kullanımı ve ajanların harici verileri arayıp işlemesi yaygınlaştıkça, beklenmedik veya kötü niyetli girdilere karşı sağlamlık daha önemli hale geliyor
- Model eğitim dağılımının dışına itildiğinde, bu token’ların guardrail atlatmak için kötüye kullanılma ihtimali de var
Otomatik tespit yaklaşımı ve açık araçlar
- Daha önce de model ve tokenizer analizleriyle bu tür token’ları bulmaya yönelik çalışmalar vardı; ancak farklı modellerde tutarlı biçimde çalışan güvenilir otomatik yöntemler eksikti
- Araştırma, sorunlu token’ları belirlemek için üç yöntemi birleştiriyor
- tokenizer analizi
- model embedding ağırlıklarına dayalı göstergeler
- prompting teknikleri
- Bu yöntemler, popüler ve yakın zamanda yayımlanmış çeşitli açık ağırlıklı modeller üzerinde uygulandı; ayrıca kapalı modellere genişletme yöntemi de kısaca incelendi
- Hugging Face modelleriyle uyumlu genel analiz aracı ve modele özel ayrıntılı sonuçlar da yayımlandı
1 yorum
Hacker News yorumları
1 yıl önceki Computerphile'ın glitch token videosu iyiydi: https://www.youtube.com/watch?v=WO2X3oZEJOA
Yalnızca yetersiz eğitilmiş token'ları bulmakla kalmamalıyız; token'lar fiilen sinir ağının ilk katmanı olduğundan, diğer tüm katmanlardaki tüm ağırlıklarda da eğitim verisi dengesizliğini aramak gerekir
Böyle ağırlıkları bulursak, içinden neredeyse hiç veri akmayan ağırlıkları silmek daha iyi olabilir; bu da modeli küçültebilir veya genellemeye yardımcı olabilir
Son dönemde SparseGPT'yi referans alan ve seyreklik oranını %70-80 civarına çıkaran makaleler de gördüm; oldukça etkileyiciydi
Kanadalı bir şirketin modelinde hokeyle ilgili yetersiz eğitilmiş token'lar bulunmuş olması inanması zor bir şey, Almanca olsa bile
Şaka bir yana, oldukça hoş bir çalışma ve tokenization'ın model üzerindeki etkisine dair anlayışımızın daha da gelişmesini umuyorum. Özellikle ilk dönem açık kaynak modellerin önemli bir kısmının carriage return konusunda sorun yaşadığının ortaya çıkması dikkat çekici; veri kaynağına bağlı olarak carriage return o kadar da nadir olmayabiliyor
Ağırlık korelasyon matrisinin spektral yoğunluğunu kullanan, rastgele matris teorisine dayalı bir eğitim tanılama yöntemi var
Her katmanın spektral yoğunluğu kesilmiş bir kuvvet yasasına uyduruluyor ve kuvvet yasası üssü alfa 2'den biraz büyükse iyi eğitilmiş kabul ediliyor
https://jmlr.org/beta/papers/v22/20-410.html
Çözüm basitçe tokenizer'ı LLM ile aynı korpus üzerinde eğitmek değil mi? Tokenizer yeniden kullanımı neden bu kadar yaygın, pek anlamıyorum. Bilen var mı?
BPE yaklaşımında bazı token'lar diğerleriyle birleştikçe çok nadir token'lar ortaya çıkabilir. Diyelim ki X ve Y token'ları var ve neredeyse her X'in ardından Y geliyor; BPE süreci yeni bir XY token'ı oluşturur ama mevcut X token'ını kaldırmaz, böylece X yetersiz eğitilmiş hale gelir
Bunu çözmek için açgözlü birleştirmeden daha sofistike bir birleştirme algoritması gerekebilir
Birincisi, sıfırdan başlamak yerine modelin ön eğitimini sürdürmek istemek. Ancak bazıları, yeni bir tokenizer ile eğitim yapsanız bile model ağırlıklarını oldukça kolay şekilde yeniden kullanabileceğinizi bilmiyor olabilir. Bunun yöntemini anlatan bir yazı yazdım: https://umarbutler.com/how-to-reuse-model-weights-when-train...
İkincisi ise son kullanıcı için kolaylık. Çok büyük bir korpusu token'lara ayırıp parçalara bölmek zaman alabilir; veriyi bir kez GPT2 tokenizer ile işleyip ardından aynı veri üzerinde birden çok modeli eğitebiliyorsanız, her şeyi baştan token'lara ayırmak zorunda kalmamak güzel olur
Aksi halde korpusun istatistiksel bir örnekleminden token histogramını hesaplamak yeterli olmaz mı diye düşünüyorum
counting subreddit'te emek veren SolidGoldMagikarp'a kötü bir niyet atfetmiyorum ama bu tür şeyler daha sonraki eğitimlerden çıkarılır. Fakat o noktada tokenizer zaten API'nin bir parçası haline gelmiştir; yeni bir sürüme geçmek başka şeyleri bozacağından gereksiz token'lar sözlükte kalır
Makalenin başlığı gerçekten harika