English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

konuk
1 / ?
derslere geri dön

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.


Tokenizer diyeti & doygunluk


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

Tokenizer-diyet kuralını bir cümleyle açıklayın. Ardından en kötü durumu tarif edin: Bir araştırmacı Harris tokenizer'ını Wikipedia üzerinde (resmi düzyazı, alıntılar) eğitiyor ama modeli Twitter üzerinde (argo, emoji, hashtag'ler) eğitiyor. Neler ters gidiyor?

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 NBulunan segment sayısıDurum
2,0482,048Doymamış (büyüme alanı var)
4,0964,096Doymamış
8,1928,192Doyma noktası
16,38413,106Korpü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

Bir araştırmacının gelecekteki bir ANDREA modeli için iki N değeri düşündüğünü varsayın: N = 6144 (doygunluğun altında) ile N = 12288 (doygunluğun üstünde, gerçek bulunan segment sayısı = 13106 hala geçerli çünkü korpus sabit). Her biri için: (a) son kelime dağarcığı boyutunu hesaplayın (256 + N + 1), & (b) her ayarın kelime dağarcığı kapasitesini israf edip etmediğini, tüm mevcut sinyali yakalayıp yakalamadığını veya yetersiz yakaladığını tek bir ifadeyle belirtin. Hesabınızı gösterin.

%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

ANDREA-120M'nin tokenizer korpusu eğitim korpusuyla eşleşiyor. Yine de 'sohbet ağırlıklı örneklemde segment kapsama oranı' %36,5'te kaldı, 12M'nin %36,4'üne benzer. Neden %36,5 120M için sorun değilken 12M için %36,4 sorun olmuştu? Hangi alt kümenin hangisi olduğu hakkında bir ifade kullan.

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


MiktarDeğer
Token bağlam penceresi1.024 token
Token başına ortalama bayt5,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.

Bir N seçin

Bir ödünleşmeyi düşünün: gelecekteki bir ANDREA modeli N = 4096 mı kullanmalı (daha hızlı eğitim, token başına daha fazla bayt = daha uzun etkili bağlam) yoksa N = 16384 mü (daha uzun-ama-nadir segmentler, metin parçası başına daha az token, ama doygunluk sonrası boşa harcanan slotlar)? Birini seçin ve tek cümlelik bir neden verin. Yanlış cevap yok.