Gigatoken: Rust BPE Tokenizer 24.53 GB/s'e Ulaştı, 989 Kat Hızlandı
Rust tabanlı Gigatoken, regex yerine SWAR ve dual-cursor teknikleriyle BPE tokenizasyonda 24.53 GB/s hıza ulaşarak HuggingFace tokenizers'ı geride bırakıyor.
Gigatoken adlı yeni Rust tabanlı BPE tokenizer, 144 çekirdekli bir AMD EPYC 9565 üzerinde 24.53 GB/s işleme hızına ulaşıyor. Aynı makinede HuggingFace tokenizers 24.8 MB/s, tiktoken ise 36.0 MB/s ölçüldü; her iki temel karşılaştırma da çok iş parçacıklı Rust uygulamaları. Fark dilden değil, işin nasıl kurgulandığından kaynaklanıyor.
Gigatoken, pretokenization aşamasını regex motoru yerine doğrudan uyguluyor: ilk byte'ı O(1) sürede sınıflandıran 256-byte arama tablosu, 8 byte'ı tek seferde u64 olarak yükleyip dallanmasız aritmetikle harf özelliğini kontrol eden SWAR tekniği ve güvenli bir bölme noktasından başlayan iki bağımsız imleç sayesinde işlemci sıra-dışı yürütme motoru komut akışlarını çakıştırabiliyor. Ayrıca daha önce görülen kelimeler yeniden BPE'den geçirilmek yerine önbellekten çekiliyor; geliştirici bu önbellek büyümesinin ve uzun kuyruklu dağılımların en zorlu kısım olduğunu belirtiyor.
11.9 GB'lık OpenWebText korpusu üzerinde GPT-2 ile yapılan ölçümlerde EPYC 9565 24.53 GB/s, Apple M4 Max 8.79 GB/s, Ryzen 7 9800X3D ise 6.27 GB/s gösterdi. Metodoloji notu olarak Gigatoken dosyanın tamamını bölmeden kendi sınırlarını bularak işlerken, karşılaştırılan araçlar dosyanın belirli bir kısmıyla ve önceden bölünmüş halde test edildi.
Bu hız artışı, karışım veya filtre her değiştiğinde korpusun yeniden tokenlaştırıldığı ön eğitim veri hazırlığı ile vLLM ve SGLang gibi sunum sistemlerinde ilk token süresini etkileyen tokenizasyon aşamaları için doğrudan önem taşıyor.