Byte Pair Encoding

Byte Pair Encoding (BPE), büyük dil modellerinde ham metni sayısal token'lara dönüştürmek için kullanılan alt kelime (subword) tokenizasyon algoritmasıdır.

Byte Pair Encoding (BPE), büyük dil modellerinde ham metni sayısal token'lara dönüştürmek için kullanılan alt kelime (subword) tokenizasyon algoritmasıdır. Sıkça birlikte görülen karakter çiftlerini tekrarlayan birleştirmelerle yeni birimler oluşturarak kelime dağarcığını sınırlı tutar ve bilinmeyen kelimeleri alt parçalara bölerek ele alır.

merge BPE Nasıl Çalışır?

Algoritma karakterlerle başlar. Eğitim corpus'unda en sık birlikte görülen karakter çifti (örn. "e" ve "r") birleştirilir; "er" yeni bir birim olur. Bu işlem, hedef kelime dağarcığı boyutuna ulaşılana kadar tekrarlanır. Sonuçta "tokenization" kelimesi "token", "ization" gibi parçalara ayrılabilir; model hiç görmediği kelimeleri de mantıklı biçimde işleyebilir.

BPE'nin Önemi

spellcheck Bilinmeyen Kelime Sorunu Çözülür

Kelime düzeyinde tokenizasyonda yeni kelimeler [UNK] token'ı ile geçilir. BPE bu sorunu ortadan kaldırır.

compress Dağarcık Boyutu Kontrolü

50 000-100 000 token ile milyonlarca kelimeyi temsil edebilir; model boyutunu yönetilebilir tutar.

translate Çok Dilli Destek

Farklı dillerdeki metinler aynı BPE dağarcığıyla işlenebilir; çok dilli modeller için kritik.

BPE Algoritması: Adım Adım

  • check_circle Başlangıç: Karakter Düzeyi Sözlük: Her kelime karakterlere bölünür ve bitiş sembolü eklenir (</w>). 'low' → ['l', 'o', 'w', '</w>']. Başlangıç sözlüğü tüm karakterlerden oluşur. Her eğitim verisi çiftinin frekansı sayılır.
  • check_circle Birleştirme: En Sık Çift Seçimi: En sık görülen bitişik çift bulunur ve tek token olarak birleştirilir. 'l o' çifti en sıksa 'lo' token'ı oluşturulur ve sözlüğe eklenir. Bu işlem belirlenen sözlük büyüklüğüne ulaşana kadar tekrarlanır.
  • check_circle Sonuç: Alt Kelime Sözlüğü: Nadir kelimeler alt parçalara bölünür; sık kelimeler tek token olarak kalır. 'unhappiness' → ['un', 'happiness'] veya ['un', 'happy', 'ness']. Eğitim sırasında görülmeyen kelimeler bile temsil edilebilir — sözlük dışı (OOV) sorunu büyük ölçüde çözülür.

BPE ve Modern LLM Tokenizasyonu

BPE, GPT serisi modellerde kullanılan tokenizasyon yöntemidir. GPT-2 tokenizer'ı 50.257 token'lık BPE sözlüğü kullanır. Byte-Level BPE: ham baytlar üzerinde çalışır; herhangi bir Unicode karakteri veya dizi işlenebilir. GPT-3 ve GPT-4'ün cl100k_base tokenizer'ı 100.277 token içerir. Türkçe gibi eklemeli diller için BPE zorlu olabilir: kelimeler çok sayıda eke bölünür — gidilebileceklerden kelimesi ondan fazla token'a ayrılabilir. SentencePiece (Google): BPE ve Unigram modelini uygulayan kütüphane; T5, LLaMA ve Gemini'de kullanılır. tiktoken (OpenAI): Rust tabanlı hızlı BPE uygulaması.

quiz Sık Sorulan Sorular

  • check_circle GPT modelleri BPE kullanır mı?: Evet. GPT-2 ve GPT-4 serisi cl100k_base gibi BPE tabanlı tokenizer kullanır. Llama modelleri de SentencePiece ile BPE kullanır.
  • check_circle BPE Türkçe için uygun mu?: Türkçe'nin eklemeli yapısı BPE için iyidir; ekler ayrı token'lar olarak öğrenilir. Ancak dil özelindeki tokenizer'lar daha verimli olabilir.
  • check_circle BPE nedir?: Byte Pair Encoding: metni alt kelime (subword) birimlerine bölen tokenizasyon algoritmasıdır. Sık görülen karakter dizileri birleştirilerek yeni token'lar oluşturulur. GPT, LLaMA ve pek çok modern LLM'de kullanılan standart tokenizasyon yöntemidir.
  • check_circle BPE neden WordPiece'den farklıdır?: BPE: en sık görülen çifti birleştirir. WordPiece (BERT): birleştirme puanını maksimize eden çifti seçer — dil modeli olasılığını artıran kombinasyon tercih edilir. Unigram: olasılıksal model; en düşük bilgi kaybına yol açan tokenizasyonu arar.
  • check_circle BPE sözlük boyutu nasıl belirlenir?: Küçük sözlük (10K-30K): daha az bellek, daha uzun dizi; Türkçe gibi eklemeli diller zorlanır. Büyük sözlük (50K-200K): daha hızlı işlem, daha kısa dizi; bellek ve embedding boyutu artar. Modern LLM'ler 32K-100K token arası tercih eder; dil çeşitliliği arttıkça büyük sözlük avantajlı hale gelir.
  • check_circle Token sayısı neden önemlidir?: LLM API'leri token başına ücretlendirilir ve bağlam penceresi token cinsinden sınırlıdır. Türkçe metin genellikle İngilizce'den 1.5-2× daha fazla token üretir — bu hem maliyet hem hız açısından önemlidir. Verimli tokenizasyon = daha az token = daha ucuz ve hızlı çıkarım.