Ana içeriğe geç

Tiktoken Eğitimi: OpenAI'nin Metni Token'lara Ayıran Python Kütüphanesi

Tiktoken, OpenAI tarafından geliştirilen hızlı bir BPE tokenizer’dır; başlıca büyük dil modelleri için token sayımı yapmak ve metni belirli sınırlar içinde verimli şekilde işlemek için kullanılır.
· 5 dk. oku

Yapay Zeka ile Keşfedin

Tokenizasyon, NLP görevleriyle çalışırken temel bir iştir. Metni sözcükler, alt sözcükler veya karakterler olabilen daha küçük birimlere, yani token’lara bölmeyi içerir.

Verimli tokenizasyon, dil modellerinin performansı için kritik öneme sahiptir ve metin üretimi, çeviri ve özetleme gibi çeşitli NLP görevlerinde temel bir adımdır.

Tiktoken, OpenAI tarafından geliştirilen hızlı ve verimli bir tokenizasyon kütüphanesidir. Metni token’lara ve tam tersine dönüştürmek için sağlam bir çözüm sunar. Hızı ve verimliliği, büyük veri kümeleri ve karmaşık modellerle çalışan geliştiriciler ve veri bilimciler için mükemmel bir seçenektir.

Bu rehber, Tiktoken kullanmayı planlayan ve örneklerle pratik bir kılavuza ihtiyaç duyan geliştiriciler, veri bilimciler ve herkes için hazırlandı.

Tiktoken ile Başlarken

Tiktoken’ı kullanmaya başlamak için Python ortamımıza kurmamız gerekiyor (Tiktoken diğer programlama dilleri için de mevcuttur). Bunu aşağıdaki komutla yapabiliriz:

pip install tiktoken

Tiktoken’ın açık kaynaklı Python sürümünün koduna şu GitHub deposundan bakabilirsiniz.

Kütüphaneyi içe aktarmak için şunu çalıştırırız:

import tiktoken

Kodlama (Encoding) Modelleri

Tiktoken’daki kodlama modelleri, metni token’lara ayırma kurallarını belirler. Bu modeller, metnin nasıl bölünüp kodlanacağını tanımladıkları için kritik öneme sahiptir; bu da dil işleme görevlerinin verimliliğini ve doğruluğunu etkiler. Farklı OpenAI modelleri farklı kodlamalar kullanır.

Tiktoken, farklı kullanım durumları için optimize edilmiş üç kodlama modeli sunar:

  • o200k_base: En yeni GPT-4o-Mini modeli için kodlama.
  • cl100k_base: GPT-4 ve GPT-3.5-Turbo gibi daha yeni OpenAI modelleri için kodlama modeli.
  • p50k_base: Codex modelleri için kodlama; bu modeller kod uygulamalarında kullanılır.
  • r50k_base: GPT-3’ün farklı sürümleri için eski bir kodlama.

Bu modellerin tümü OpenAI’nin API’si ile kullanılabilir. API’nin burada listelediğimden çok daha fazla modele erişim verdiğine dikkat edin. Neyse ki Tiktoken kütüphanesi, hangi modelle hangi kodlamanın kullanılacağını kontrol etmek için kolay bir yol sağlar.

Örneğin, text-embedding-3-small modelinin hangi kodlama modelini kullandığını bilmem gerekirse, aşağıdaki komutu çalıştırarak çıktıda yanıtı alabilirim:

print(tiktoken.encoding_for_model('text-embedding-3-small'))

Çıktı olarak <Encoding 'cl100k_base'> alırız. Tiktoken ile doğrudan çalışmaya geçmeden önce, OpenAI’nin farklı dizelerin nasıl token’lara ayrıldığını görebileceğiniz bir tokenizasyon web uygulaması olduğunu belirtmek isterim—buradan erişebilirsiniz. OpenAI dışındaki modelleri de destekleyen üçüncü taraf bir çevrimiçi tokenizer olan Tiktokenizer da vardır.

Metni Token’lara Kodlama

Tiktoken ile metni token’lara kodlamak için önce bir kodlama (encoding) nesnesi elde etmeniz gerekir. Bunu başlatmanın iki yolu vardır. İlk olarak, tokenizer’ın adıyla yapabilirsiniz:

encoding = tiktoken.get_encoding("[name of the tokenizer]")

Ya da, belirli bir model için kodlayıcıyı almak üzere daha önce bahsedilen encoding_for_model fonksiyonunu çalıştırabilirsiniz:

encoding = tiktoken.encoding_for_model("[name of the model]")

Artık bir dizgiyi kodlamak için encoding nesnemizin encode metodunu çalıştırabiliriz. Örneğin, “I love DataCamp” dizgesini şu şekilde kodlayabiliriz—burada cl100k_base kodlayıcısını kullanıyorum:

print(encoding.encode("I love DataCamp"))

Çıktı olarak [40, 3021, 2956, 34955] alırız.

Token’ları Metne Çözme (Decoding)

Token’ları tekrar metne çözmek için, encoding nesnesi üzerinde .decode() metodunu kullanabiliriz.

Şu token’ları çözelim: [40, 4048, 264, 2763, 505, 2956, 34955]:

print(encoding.decode([40, 4048, 264, 2763, 505, 2956, 34955]))

Token’lar “I learn a lot from DataCamp.” metnine çözülür.

Pratik Kullanım Alanları ve İpuçları

Kodlama ve çözmenin dışında, aklıma gelen iki başka kullanım alanı var.

Maliyet tahmini ve yönetimi

OpenAI API’sine bir istek göndermeden önce token sayısını bilmek, maliyetleri etkin şekilde yönetmenize yardımcı olabilir. OpenAI’nin ücretlendirmesi işlenen token sayısına dayandığından, metninizi önceden token’lara ayırmanız API kullanım maliyetinizi tahmin etmenizi sağlar. Tiktoken ile metninizdeki token’ları şu şekilde sayabilirsiniz:

tokens = encoding.encode(text)
print(len(tokens))

Dizinin uzunluğunu kontrol ederek kaç token elde ettiğimizi basitçe görürüz. Token sayısını önceden bilerek, metni kısaltmaya mı yoksa bütçe dahilinde kalmak için kullanımınızı ayarlamaya mı karar verebilirsiniz.

Bu yaklaşımla ilgili daha fazla bilgiyi şu öğreticide okuyabilirsiniz: Python’da tiktoken Kütüphanesini Kullanarak GPT Maliyetini Tahmin Etme.

Girdi uzunluğu doğrulama

API üzerinden OpenAI modellerini kullanırken, girdiler ve çıktılar için azami token sayısıyla sınırlanırsınız. Bu limitlerin aşılması hatalara veya kırpılmış çıktılara yol açabilir. Tiktoken’ı kullanarak girdi uzunluğunu doğrulayabilir ve token sınırlarına uyduğundan emin olabilirsiniz.

Sonuç

Tiktoken, OpenAI’nin dil modellerine uyarlanmış hız ve verimlilik sunan açık kaynaklı bir tokenizasyon kütüphanesidir.

Tiktoken ile metni nasıl kodlayıp çözeceğinizi ve çeşitli kodlama modellerini anlamak, büyük dil modelleri ile çalışmalarınızı önemli ölçüde geliştirebilir.

Dimitri Didmanidze

Yazar

Dimitri Didmanidze

Ben Dimitri Didmanidze. Makine Öğrenmesi odaklı Matematik yüksek lisansı yapıyorum. Akademik yolculuğum, dönüştürücü tabanlı modellerin yetenekleri üzerine araştırmaları ve üniversite düzeyinde ders vermeyi de kapsadı; bu deneyimler, karmaşık kuramsal kavrayışımı güçlendirdi. Ayrıca bankacılık sektöründe çalışarak bu ilkeleri gerçek dünyadaki veri sorunlarını çözmek için uyguladım.

Konular

İlgili