Token
Token, bir modelin işlediği girdi birimidir; alt sözcük veya görüntü parçası buna örnektir. Tokenizer'ların metni nasıl böldüğünü, görsel token'ları ve token maliyetlerini ele alır.
Belirteç, bir yapay zekâ modelinin işlediği temel girdi ve çıktı birimidir: metinde bir sözcük, sözcüğün bir bölümü, karakter veya bayt; görüntüde ise piksel yaması olabilir. Bir Transformer cümleyi veya görüntüyü okuyabilmeden önce, belirteçleyici girdiyi belirteçlere ayırır ve her birini bir tamsayı kimliğine eşler; model de her kimlik için bir gömme vektörü arar. Belirteç sayısı hem modelin işleyebileceklerini hem de maliyetini belirler: bağlam penceresi belirteçlerle ölçülür, büyük dil modelleri (LLMs) metni her seferinde bir belirteç üreterek oluşturur ve ticari API'ler girdi ve çıktı belirteçleri başına ücret alır.
Belirteç, Belirteçleme ve İlişkili Terimler#
- Belirteçleme: Ham girdiyi belirteçlere ayırma işlemidir. Belirteç, bu işlemin çıktısındaki bir birimdir.
- Söz varlığı ve belirteç kimlikleri: Belirteçleyicinin söz varlığı, bildiği belirteçlerin her biri bir tamsayı kimliğiyle eşleştirilmiş sabit kümesidir. BERT 30,522, GPT-2 50,257, Llama 3 128,256 ve Gemma 3 yaklaşık 262,000 belirteç kullanır.
- Özel belirteçler: Metin başlangıcı, metin sonu ve dolgu belirteçleri gibi bir dizinin yapısını belirten işaretçilerdir; BERT'in sınıflandırma için son gömmesini kullandığı
[CLS]belirteci de bunlara örnektir. - Gömme vektörleri: Modelin ilk katmanının her belirteç kimliği için aradığı ve belirtecin anlamını ağa taşıyan öğrenilmiş vektörlerdir.
Metin Belirteçleri#
Tüm sözcüklerden oluşan bir söz varlığı her adı, yazım yanlışını ve yeni terimi kapsayamaz; tek tek karakterler kullanmaksa dizileri çok uzatır. Bu nedenle güncel belirteçleyiciler alt sözcükleri kullanır: Sık görülen sözcükler tek belirteç olur, nadir sözcüklerse yeniden kullanılabilir parçalara ayrılır. Sennrich ve çalışma arkadaşlarının 2016'da sinirsel makine çevirisine uyarladığı bayt çift kodlaması (BPE), tek tek karakterlerle başlar ve söz varlığı hedef boyutuna ulaşana kadar en sık görülen bitişik çiftleri tekrar tekrar birleştirir. GPT modelleri BPE'yi baytlara uygular; böylece kod ve emoji dâhil her metin kodlanabilir. BERT tarafından kullanılan WordPiece ve SentencePiece'in Unigram modeli de benzer alt sözcük yöntemleridir. Burada Hugging Face Hub'dan yüklenen CLIP BPE belirteçleyicisi, sözcüklerin nasıl ayrıldığını gösterir:
from transformers import AutoTokenizer
# Load CLIP's byte-pair-encoding (BPE) tokenizer from the Hugging Face Hub
tokenizer = AutoTokenizer.from_pretrained("openai/clip-vit-base-patch32")
for text in ["bus", "double-decker bus", "unhappiness", "Ultralytics"]:
tokens = tokenizer.tokenize(text)
print(f"{text!r} -> {tokens} -> {tokenizer.convert_tokens_to_ids(tokens)}")"bus" tek bir belirteçtir (kimliği 2840); "unhappiness" un ve happiness olarak ayrılır; nadir görülen "Ultralytics" sözcüğü ise ultr, aly ve tics olmak üzere üç parçaya bölünür. </w> son eki, CLIP'in 49,408 belirteçlik söz varlığında bir sözcüğün sonunu belirtir; CLIP'in metin kodlayıcısı her istemde en fazla 77 belirteç okur.
Görsel Belirteçler#
An Image Is Worth 16x16 Words makalesinde tanıtılan Vision Transformer (ViT), bir görüntüyü ViT-B/16'da 16 × 16 piksel olan sabit boyutlu yamalara ayırır ve her yamayı bir gömme vektörüne yansıtır; böylece 224 × 224 boyutlu görüntü 196 belirtece dönüşür. Konum gömmeleri her yamanın nereden geldiğini kaydeder; fazladan bir sınıf belirteci ise sınıflandırma için bilgi toplar. Bu yansıtma genellikle adım uzunluğu çekirdek boyutuna eşit olan bir evrişim olarak uygulanır:
import torch
# ViT-B/16 patch embedding: a 16x16 convolution with stride 16 turns each patch into one 768-dim token
patch_embed = torch.nn.Conv2d(3, 768, kernel_size=16, stride=16)
for size in (224, 448):
image = torch.rand(1, 3, size, size)
tokens = patch_embed(image).flatten(2).transpose(1, 2) # (batch, tokens, dims)
print(f"{size}x{size} image -> {tuple(tokens.shape)}")224 × 224 boyutundaki görüntü, her biri 768 değer içeren 196 belirteç üretir; kenar uzunluğunu 448 piksele çıkarmak belirteç sayısını 784'e, yani dört katına çıkarır. Kendine dikkat her belirteci diğer tüm belirteçlerle karşılaştırır; bu nedenle belirteç sayısının dört katına çıkması dikkat maliyetini yaklaşık on altı katına çıkarır. Yüksek çözünürlüklü modeller bu yüzden Swin Transformer gibi pencere tabanlı dikkat kullanır ya da belirteç birleştirme yoluyla benzer belirteçleri bir araya getirir.
Görsel dil modelleri, bir görüntü kodlayıcısından gelen görsel belirteçleri metin belirteçlerinin yanında bir LLM'ye aktarır; böylece tek bir Transformer ikisine birden dikkat gösterir ve yanıtını her seferinde bir metin belirteci üreterek yazar:
Token Sayıları Neden Önemlidir#
- Bağlam sınırları: İstem, alınan belgeler veya görüntüler ve oluşturulan yanıtın tamamı modelin bağlam penceresine sığmalıdır.
- Maliyet ve gecikme: API'ler girdi ve çıktı belirteçlerini ayrı ayrı fiyatlandırır. Her çıktı belirteci, modelin KV önbelleğini okuyan bir kod çözme adımı gerektirdiğinden, çıktı belirteci sayısı arttıkça üretim süresi de uzar.
- Diller ve biçimler: Çoğunlukla İngilizceyle eğitilmiş belirteçleyiciler, diğer dilleri, kodu ve uzun sayıları sözcük başına daha fazla belirtece böler; bu nedenle aynı içeriğin maliyeti artar ve bağlam penceresi daha çabuk dolar.
- Karakter düzeyindeki görevler: Model alt sözcük belirteçlerini gördüğü için, bir sözcükteki harfleri saymak veya sözcüğü tersine çevirmek gibi tek tek harflere bağlı görevler, göründüklerinden daha zordur.
Gerçek Dünya Uygulamaları#
- Metin üretimi: Bir LLM, söz varlığındaki her belirtece bir olasılık atar, birini örnekler, diziye ekler ve işlemi tekrarlar. Çekirdek örnekleme gibi örnekleme yöntemleri olası belirteçler arasından seçim yapar.
- Görüntü üretimi: Otoregresif görüntü modelleri, vektör niceleme ile oluşturulan öğrenilmiş bir kod kitabından ayrık görsel belirteçleri, bir LLM'nin sözcük tahmin etmesine benzer biçimde tahmin eder.
- Açık söz varlıklı algılama: Ultralytics paketindeki, Tsinghua Üniversitesinin YOLOE'sini temel alan YOLO26 sürümü YOLOE-26, yazılan sınıf adlarından nesneleri bulur.
set_classes()yöntemi her adı CLIP'in BPE belirteçleyicisiyle belirteçlere ayırır; Apple'ın MobileCLIP2 metin kodlayıcısı bu belirteçleri bir gömme vektörüne dönüştürür ve model, bu gömme vektörlerini görüntü bölgeleriyle eşleştirir. Böylece COCO veri kümesinde bulunmayan "double-decker bus" sınıfını yalnızca sözcüklerden algılayabilir.










