Bir Tokenizer'ın Yediği, Bildiği Olur
Tokenizer Diyeti: Bir Tanım
Bir Harris tokenizer'ı bir korpus örneği üzerinde eğitilir. Bu örnek üzerinde dağılımsal analiz yapar, en güçlü şekilde tekrar eden N segmenti seçer ve bunları bir kelime dağarcığına yazar. Eğitimden sonra, bu N segment sabit bir alfabe haline gelir ve bir dil modeli her şey için kullanır: eğitim, çıkarım, her girdi, her çıktı.
Tokenizer diyeti = bir tokenizer'ın üzerinde eğitildiği metin örneği.
Eğitim diyeti = bir dil modelinin üzerinde eğitim aldığı bir korpus.
İki diyet farklı olduğunda, bir tokenizer modelin asla görmeyeceği metinler için ayarlanmış segmentler öğrenir. Gömme kapasitesi (kelime dağarcığı girişi başına bir yuva) eğitim sırasında ödül kazanmayan segmentlere harcanır.
ANDREA-12M'nin Hatası
ANDREA-12M, Harris tokenizer'ını ham megachat-v8.txt başlığı üzerinde eğitti. Bu başlık kod örnekleri ve araç çağırma verilerini içeriyordu. Ancak eğitim müfredatı kod ve araç çağrılarını hariç tuttu; ANDREA-12M yalnızca konuşma metnini gördü.
Sonuç: Python anahtar kelimelerinden, JSON süslü parantezlerinden, kabuk bayraklarından segmentler öğrenildi. Sözlük girişleri ve diyalog üzerinde eğitilmiş bir model. Segmentlerin yalnızca %36,4'ü müfredat ağırlıklı örnekle örtüşüyordu. Kelime dağarcığı slotlarının kalan %63,6'sı, modelin eğitim sırasında asla karşılaşmayacağı segmentlere ayrıldı.
Neden Önemli?
Her kelime dağarcığı girişi gömme parametrelerini tüketir: V × d_model şeklinde bir gömme matrisinin bir satırı (etkinlik 4'te ele alındı). V = 4353 ve d_model = 384 iken, her kelime dağarcığı slotu 384 float'a mal olur. %63,6'sını israf etmek, modelin asla görmediği verilere gömme matrisinin %63,6'sını israf etmektir.
Bir Diyet Kuralı Belirtin
N Ne Kadar Büyük Olmalı
Bir Kelime Dağarcığı Bilimi Taraması
ANDREA-120M bir kelime dağarcığı bilimi deneyi yaptı: aynı 1.25 milyar karakterlik firehose korpusunda farklı N değerlerinde (istenen segment sayısı) Harris tokenizer'larını eğitti. Bir tokenizer'ın gerçekte kaç segment bulduğunu ölçtü. Sonuçları grafikledi.
| İstenen N | Bulunan segment sayısı | Durum |
|---|---|---|
| 2,048 | 2,048 | Doymamış (büyüme alanı var) |
| 4,096 | 4,096 | Doymamış |
| 8,192 | 8,192 | Doyma noktası |
| 16,384 | 13,106 | Korpüs tükenmiş |
Doyma Ne Anlama Gelir
Küçük N'de, bir korpus bol miktarda tekrar eden kalıplara sahiptir; bir tokenizer her talep ettiği yuva için doldurur. Büyük N'de, bir tokenizer istatistiksel olarak anlamlı sınırları tükenir. 1.25B karakterlik bir korpus, frekans eşiğinin üzerinde yaklaşık 13,106 farklı morfom şekilli segment içerir. 16,384 istemek 13,106 verir; kalan 3,278 yuva doldurulur veya boş bırakılır.
Doygunluk: talep edilen N = bulunan N olan bir nokta. Doygunluğun ötesinde, bir tokenizer kaliteyi seyreltmeden (frekans eşiklerini düşürerek & gürültüyü kabul ederek) daha fazla segment keşfedemez.
8192'de Tatlı Nokta
ANDREA-120M, N = 8192'yi seçti. Bir gerekçe:
- 8192'nin altında (ör. 4096): kelime haznesi yaygın morfomları yeterince yakalayamaz; diziler daha fazla tokene parçalanır; verim düşer.
- 8192'de: her segment yuvası, bir korpustaki gerçek, tekrar eden bir kalıba eşlenir.
- 8192'nin üstünde: azalan getiriler; 13,106 < 16,384 yuva israf olur.
Son ANDREA-120M kelime dağarcığı: 256 + 8192 + 1 = 8449 token. Ortalama sıkıştırma: token başına 5.91 UTF-8 bayt, yani her token ham metnin ~5.9 baytını değiştirir. Bu oran bir modelin etkili bağlamını belirler: 1024 token × 5.91 bayt/token ile, ANDREA-120M her ileri geçişte yaklaşık 6.050 karakter bağlam okur.
Doygunluk Üstünde veya Altında
%63.6 Nereden Geldi
İsraf Edilmiş Yuvaları Sayma
ANDREA-12M'nin tokenizer'ı ham megachat-v8.txt üzerinde eğitildi (4096 segment istendi, bulundu). Bir ekip, müfredat ağırlıklı bir alt küme örnekledi: her kaynaktan bandit tarafından ne sıklıkta çekildiğine göre ağırlıklandırılmış bir korpus. Bu ağırlıklı örnek üzerinde Harris analizini yeniden çalıştırdılar ve sordular: orijinal 4096 segmentin kaçı hala müfredat ağırlığına göre görünüyor?
Sonuç: %36.4 örtüşme. 4.096 segmentin 1.491'i müfredat ağırlığına uydu. Kalan 2.605 segment, modelin hariç tuttuğu kaynaklardan geldi.
Kelime dağarcığı yuvalarının %63.6'sı modelin hiç görmediği baytlara ayrıldı.
Gömme Maliyeti
Her kelime dağarcığı girdisi, (V, d_model) şeklinde bir gömme matrisinin bir satırını kaplar. ANDREA-12M için:
- V = 4353 (256 + 4096 + 1)
- d_model = 384
- Gömme parametreleri = V × d_model = 4353 × 384 = 1,671,552 parametre
Bu parametrelerin %63.6'sı konuşma eğitimi için kullanılmadı. 1.063.107 parametre ayrıldı, 0 ödül sinyali. ANDREA-12M hayatta kalır çünkü 256 temel bayt her zaman herhangi bir karakteri kapsar; ancak parametre başına kapasite keskin bir şekilde düştü.
ANDREA-120M Bunu Nasıl Düzeltti
ANDREA-120M'nin tokenizer'ı tam bir firehose üzerinde (1.25B karakter, 21 kaynak) doygunluk N = 8192'de eğitildi. Eğitim korpusu = aynı firehose. Diyet hizalaması: %100. Sohbet ağırlıklı örnekte sonuçlanan örtüşme: %36.5. (Not: %36.5 örtüşmedir, kapsama değil; sohbet tek başına tam firehose'un bir alt kümesidir, bu yüzden bu sayı 12M'nin %36.4'ünden farklı davranır.)
Etkili sıkıştırma: token başına 5.91 UTF-8 baytı. ANDREA-120M'nin gömme matrisi: 8449 × 768 = 6.488.832 parametre. Her parametre bir ödül sinyali kazanır çünkü her segment modelin gerçekten eğitildiği metne eşlenir.
Kapsama Karşı Örtüşme
Neden 5.91 Bayt/Token Önemli
Bir Sıkıştırma Oranı
Token başına ortalama UTF-8 baytı, her kelime dağarcığı girişinin ne kadar ham metni sıkıştırdığını ölçer. ANDREA-120M ortalaması 5.91. Daha kısa parçalara sahip bir model (3 bayt/token) ileri geçişte daha az bağlam okur; daha uzun parçalara sahip bir model (8 bayt/token) daha fazla okur ama daha yavaş eğitilir (her parça iyi öğrenmek için daha fazla örneğe ihtiyaç duyar).
Etkili Bağlam
| Miktar | Değer |
|---|---|
| Token bağlam penceresi | 1.024 token |
| Token başına ortalama bayt | 5,91 |
| Etkili karakter bağlamı | 1024 × 5,91 ≈ 6.050 |
Yaklaşık 6.000 UTF-8 karakteri bir ANDREA-120M ileri geçişine sığar. Yoğun İngilizce düzyazı bir sayfa ~3.000-4.000 karakter uzunluğunda; ANDREA her geçişte yaklaşık bir buçuk sayfa okur.
Diyet Sıkılaştırması Sıkıştırmayı İyileştirir
İyi hizalanmış bir tokenizer daha iyi sıkıştırır. Bir tokenizer eğitim korpusunda tekrar eden segmentleri öğrendiğinde, token başına daha fazla metin sığar. ANDREA-12M'nin kötü hizalanmış tokenizer'ı sohbet üzerinde daha kötü sıkıştırdı (sohbet segmentleri kelime dağarcığında daha seyrek olduğu için bayt-dönüş parçalarına daha fazla bayt harcandı). ANDREA-120M'nin diyet-hizalanmış tokenizer'ı sohbet şeklinde bir parçayı hızlı yolda tutar & nadir betikleri bayt dönüşüne bırakır.
Etkinlik 4 Devam Ediyor
Etkinlik 4 (grow_a_language_model_embeddings) o 8449 kelime dağarcığı girişinin neye dönüştüğünü kapsar: V × d_model şeklinde bir gömme matrisinin satırları haline gelirler, ardından ilk transformer bloğuna akmadan önce öğrenilmiş konum gömmeleri eklenir.