tag Tokenizasyon
Byte Pair Encoding (Byte Pair Encoding)
Bu sayfada Tokenizasyon (Byte Pair Encoding (Byte Pair Encoding)) etiketi ile işaretlenmiş 4 yapay zeka kavramını bulabilirsiniz.
Byte Pair Encoding (BPE), doğal dil işleme ve büyük dil modellerinde kullanılan bir alt kelime tokenizasyon algoritmasıdır. Orijinal olarak 1994 yılında Philip Gage tarafından veri sıkıştırma amacıyla tasarlanan bu algoritma, Sennrich ve ekibinin 2016 tarihli çalışmasıyla sinir ağı tabanlı makine çevirisine uyarlanmış; ardından GPT, LLaMA ve benzeri büyük dil modellerinin standart tokenizasyon yöntemi hâline gelmiştir. BPE'nin temel amacı, tam kelime tokenizasyon ile karakter tokenizasyon arasındaki dengeyi kurmaktır. Tam kelime tokenizasyon büyük bir sözlük gerektirirken eğitim sırasında hiç görülmemiş kelimeleri (OOV — Out-of-Vocabulary) işleyemez. Karakter tokenizasyon ise aşırı uzun diziler üretir ve modelin anlam ilişkilerini öğrenmesini güçleştirir. BPE bu iki yaklaşımın güçlü yanlarını birleştirir: sözlük boyutunu yönetilebilir düzeyde tutarken OOV problemini de çözer. Algoritma şu adımları izler: Başlangıçta sözlük, eğitim metinlerindeki tüm bireysel karakterlerden oluşur. Ardından en sık yan yana gelen iki token çifti belirlenerek yeni bir birim olarak birleştirilip sözlüğe eklenir. Örneğin "l", "o", "w" karakterleri önce "lo" ardından "low" birimine dönüşebilir. Bu birleştirme adımı hedef sözlük boyutuna ulaşıncaya kadar tekrarlanır. Tipik sözlük boyutları 32.000 ile 100.000 token arasında değişmektedir. GPT-2'den itibaren OpenAI, BPE'yi standart tokenizasyon yöntemi olarak benimsemiştir. GPT-4'te kullanılan tiktoken kütüphanesinin cl100k_base kodlayıcısı yaklaşık 100.000 token içerir. BERT, BPE'ye alternatif olan WordPiece algoritmasını kullanırken LLaMA ve Mistral gibi açık kaynaklı modeller SentencePiece kütüphanesiyle BPE'yi uygular. Tokenizasyon kalitesi modelin performansını doğrudan etkiler. Verimliliği ölçmek için fertilite metriği kullanılır: kelime başına ortalama token sayısı. İngilizce için bu değer yaklaşık 1,2–1,5 iken Türkçe gibi eklemeli dillerde 2,5–4 aralığına çıkabilir; bu durum aynı bağlam penceresi içine sığan bilgi miktarını azaltır ve API maliyetlerini artırır. Çok dilli sözlük desteği ve OOV dayanıklılığı sayesinde BPE, günümüz LLM geliştirme pratiklerinde vazgeçilmez bir araç olmayı sürdürmektedir.
Byte Pair Encoding (Byte Pair Encoding)
Byte Pair Encoding (BPE), doğal dil işleme ve büyük dil modellerinde kullanılan bir alt kelime tokenizasyon algoritmasıdır. Orijinal olarak 1994 yılında Philip Gage tarafından veri sıkıştırma amacıyla tasarlanan bu algoritma, Sennrich ve ekibinin 2016 tarihli çalışmasıyla sinir ağı tabanlı makine çevirisine uyarlanmış; ardından GPT, LLaMA ve benzeri büyük dil modellerinin standart tokenizasyon yöntemi hâline gelmiştir. BPE'nin temel amacı, tam kelime tokenizasyon ile karakter tokenizasyon arasındaki dengeyi kurmaktır. Tam kelime tokenizasyon büyük bir sözlük gerektirirken eğitim sırasında hiç görülmemiş kelimeleri (OOV — Out-of-Vocabulary) işleyemez. Karakter tokenizasyon ise aşırı uzun diziler üretir ve modelin anlam ilişkilerini öğrenmesini güçleştirir. BPE bu iki yaklaşımın güçlü yanlarını birleştirir: sözlük boyutunu yönetilebilir düzeyde tutarken OOV problemini de çözer. Algoritma şu adımları izler: Başlangıçta sözlük, eğitim metinlerindeki tüm bireysel karakterlerden oluşur. Ardından en sık yan yana gelen iki token çifti belirlenerek yeni bir birim olarak birleştirilip sözlüğe eklenir. Örneğin "l", "o", "w" karakterleri önce "lo" ardından "low" birimine dönüşebilir. Bu birleştirme adımı hedef sözlük boyutuna ulaşıncaya kadar tekrarlanır. Tipik sözlük boyutları 32.000 ile 100.000 token arasında değişmektedir. GPT-2'den itibaren OpenAI, BPE'yi standart tokenizasyon yöntemi olarak benimsemiştir. GPT-4'te kullanılan tiktoken kütüphanesinin cl100k_base kodlayıcısı yaklaşık 100.000 token içerir. BERT, BPE'ye alternatif olan WordPiece algoritmasını kullanırken LLaMA ve Mistral gibi açık kaynaklı modeller SentencePiece kütüphanesiyle BPE'yi uygular. Tokenizasyon kalitesi modelin performansını doğrudan etkiler. Verimliliği ölçmek için fertilite metriği kullanılır: kelime başına ortalama token sayısı. İngilizce için bu değer yaklaşık 1,2–1,5 iken Türkçe gibi eklemeli dillerde 2,5–4 aralığına çıkabilir; bu durum aynı bağlam penceresi içine sığan bilgi miktarını azaltır ve API maliyetlerini artırır. Çok dilli sözlük desteği ve OOV dayanıklılığı sayesinde BPE, günümüz LLM geliştirme pratiklerinde vazgeçilmez bir araç olmayı sürdürmektedir.
Token (Dil Modeli Birimi)
Token, büyük dil modelleri (LLM) ve doğal dil işleme (NLP) sistemlerinde metnin işlenebilir en küçük birimidir. LLM'ler ham metni doğrudan okuyamaz; önce metni token adı verilen parçacıklara böler, ardından her tokena sayısal bir kimlik (token ID) atar ve bu sayısal diziler üzerinde matematiksel işlemler gerçekleştirir. Bir token; tam bir kelime, kelimenin bir parçası (alt-kelime/subword), tek bir karakter ya da noktalama işareti olabilir. Bu dönüşüm sürecine tokenizasyon (tokenization) denir. GPT serisi modellerde kullanılan BPE (Byte Pair Encoding), eğitim verisi üzerinde en sık birlikte geçen karakter çiftlerini yinelemeli olarak birleştirerek bir vocabulary oluşturur. Google'ın geliştirdiği WordPiece de benzer bir mantıkla çalışırken seçim kriterinde maksimum olasılığı kullanır. SentencePiece ise dil bağımsız çalışan ve doğrudan ham karakterlerden token üreten bir yöntemdir. Token kavramı üç kritik boyutu doğrudan etkiler. Birinci boyut bağlam penceresidir (context window): bir modelin aynı anda işleyebildiği maksimum token sayısı o modelin 'hafıza kapasitesini' tanımlar. GPT-4o 128.000 token, Claude 3.5 Sonnet 200.000 token, Gemini 1.5 Pro ise 1.000.000 token bağlam kapasitesiyle öne çıkar. Bu limit aşıldığında model eski bağlamı unutur. İkinci boyut API maliyetidir: OpenAI, Anthropic ve Google gibi sağlayıcılar hizmetlerini giriş (input) ve çıkış (output) token sayısına göre faturalandırır. GPT-4o için 1 milyon giriş tokenu yaklaşık 5 USD, 1 milyon çıkış tokenu ise 15 USD'dir. Aynı görevi daha az tokenla çözen prompt tasarımı maliyeti kayda değer ölçüde azaltır; bu nedenle token ekonomisi LLM uygulama mühendisliğinin temel konularından biri haline gelmiştir. Üçüncü boyut dikkat hesaplamasıdır: Transformer mimarisinde her token diğer tüm tokenlarla dikkat skoru hesaplar. Bu O(n²) karmaşıklık nedeniyle bağlam uzadıkça hesaplama maliyeti hızla büyür; Flash Attention ve diğer verimlilik teknikleri bu soruna çözüm arayışından doğmuştur. Türkçe gibi eklemeli dillerde token kullanımı İngilizce'ye kıyasla daha yüksektir. 'Gidebileceklerinden' gibi tek bir Türkçe kelime birden fazla tokena bölünebilirken, aynı anlam İngilizce'de daha az token harcar. Bu durum Türkçe içerikli API çağrılarında maliyeti ve bağlam penceresi verimliliğini olumsuz etkileyebilir.
Tokenization (Tokenizasyon (Parçalara Ayırma))
Tokenizasyon, metin verisini büyük dil modelleri (LLM) ve doğal dil işleme (NLP) sistemlerinin işleyebileceği temel birimlere —"token"lara— dönüştürme sürecidir. Yapay zeka modelleri metni insan gibi harf harf değil, token kimlik numaraları (ID) cinsinden işler; tokenizasyon bu dönüşümün ilk ve belirleyici adımıdır. Bir token; tam kelime, kelime kökü, hece veya bayt grubu olabilir. Modern LLM'lerin büyük çoğunluğu Byte Pair Encoding (BPE) ya da SentencePiece gibi alt-kelime (subword) algoritmalarını tercih eder. Bu yöntemler yaygın kelimeleri tek token'a sıkıştırırken nadir kelimeleri birden fazla parçaya böler; böylece sözlük boyutu sınırlı tutulurken bilinmeyen kelime (OOV) sorunu ortadan kalkar. WordPiece (BERT), Tiktoken (GPT-4) ve SentencePiece (LLaMA, T5) gibi tokenizer'lar aynı metni farklı parça sayısına bölebilir. Tokenizasyon hem modelin tahmin kalitesini hem de kullanıcının API maliyetini doğrudan etkiler. OpenAI, Anthropic ve Google gibi sağlayıcılar ücretlendirmeyi kelime değil token başına yapar; bu nedenle token sayısını önceden tahmin etmek maliyet yönetiminin temelidir. Tiktoken kütüphanesi veya Hugging Face tokenizers ile prompt'lar göndermeden önce sayılabilir. Türkçe'nin eklemeli (agglutinative) yapısı tokenizasyon açısından ciddi bir dezavantaj yaratır: aynı içeriğin Türkçe versiyonu İngilizce'ye kıyasla genellikle 1,5–2 kat daha fazla token tüketir. Bu durum hem API maliyetini artırır hem de bağlam penceresi (context window) kapasitesini daha hızlı doldurur. Gemma, Qwen ve DeepSeek gibi çok dilli modeller Türkçe içerli eğitim verileriyle bu açığı kısmen kapatmıştır. Son olarak, tokenizasyon modelin bazı basit sorulardaki başarısızlığını da açıklar. Bir LLM'e "Strawberry kelimesinde kaç R var?" diye sorulduğunda alınan yanlış yanıt, modelin harfleri değil token ID'lerini gördüğünden kaynaklanır. Bu temel kısıt, LLM ile çalışan geliştiricilerin anlaması gereken en kritik altyapı konseptlerinden biridir.
Tokenizör (Tokenizör)
Tokenizör (tokenizer), ham metni bir yapay zeka modelinin işleyebileceği en küçük birimlere — token'lara — bölen bir ön işleme aracıdır. Modern büyük dil modellerinde metin önce token dizisine dönüştürülür, ardından bu token'lar sayısal kimlik (token ID) listesine çevrilir ve modele beslenir. Tokenizörün seçimi modelin hem performansını hem de Türkçe gibi eklemeli dillerdeki doğruluğunu doğrudan etkiler. Günümüzde en yaygın tokenizasyon yöntemi Byte Pair Encoding'dir (BPE). BPE, eğitim verisindeki en sık geçen karakter çiftlerini tekrarlı olarak birleştirerek bir alt kelime sözlüğü oluşturur. GPT ailesi bu yöntemi kullanır. WordPiece ise Google tarafından BERT için geliştirilmiştir; SentencePiece, dil bağımsız çalışarak boşluk içeren diller dahil her dili aynı pipeline ile işleyebilir ve LLaMA, Mistral gibi modellerde tercih edilir. Unigram dil modeli ise olasılıksal bir yaklaşım benimseyerek token seçimini entropi minimize ederek yapar. Tokenizörün kritik bir özelliği bağlam penceresidir: bir LLM'in tek seferde işleyebildiği maksimum token sayısı. GPT-4o 128K token penceresiyle 300 sayfalık bir belgeyi aynı anda değerlendirebilirken, bazı modeller 4K ile sınırlıdır. Türkçe açısından önemli bir nokta şudur: eklemeli yapı nedeniyle Türkçe bir metin İngilizceye kıyasla 2-3 kat daha fazla token tüketir. "Yapamayabileceğim" gibi tek bir Türkçe kelime, İngilizce karşılığının birkaç token'ına karşı 5-7 token olarak temsil edilebilir. Özel tokenlar (special tokens) modelin davranışını yönlendirmek için kullanılır. `<|endoftext|>`, `<|system|>`, `<|user|>`, `<|assistant|>` gibi kontrol token'ları chat şablonlarının temelini oluşturur. `[CLS]` ve `[SEP]` BERT ailesi modellerde cümle sınırlarını işaretler. Bu token'lar olmadan model giriş yapısını anlayamaz. Bir tokenizörü keşfetmek için Hugging Face'in `transformers` kütüphanesindeki `AutoTokenizer.from_pretrained()` kullanılabilir. Token sayısını önceden hesaplamak, API maliyetini kontrol etmek ve bağlam penceresi aşımını önlemek açısından üretim sistemlerinde zorunlu bir adımdır. OpenAI'nin tiktoken kütüphanesi, GPT modellerinin token kullanımını yerel olarak saymak için yaygın bir araçtır.