Gigatoken؛ توکنایزری تا هزار برابر سریعتر
خلاصهٔ کاملتر
Gigatoken یه کتابخونهٔ متنبازه که ادعا میکنه سریعترین توکنایزر برای مدلهای زبانیه. نویسندهش، Marcel Rød، میگه سرعتش تا حدود ۱۰۰۰ برابر بیشتر از tokenizers هاگینگفیسه و تأکید میکنه که این مقایسه با نسخهٔ چندنخی و نوشتهشده با Rust همون کتابخونهست، نه با یه پیادهسازی کند پایتونی.
توکنایز کردن یعنی تبدیل متن خام به عددهایی که مدل زبانی میفهمه؛ کاری که قبل از هر آموزش یا پردازش انبوه باید روی کل دیتاست انجام بشه و روی دیتاستهای چند ترابایتی میتونه ساعتها وقت ببره. Gigatoken با یه pip install gigatoken نصب میشه و به گفتهٔ نویسنده روی CPUهای مدرن x86 و ARM جواب میده.
سادهترین راه استفاده، حالت سازگاریه: توکنایزر فعلی هاگینگفیس یا tiktoken رو بهش میدی و چیزی که برمیگرده دقیقاً جای قبلی میشینه.
import gigatoken as gt
# Minimum change from existing HuggingFace tokenizers usage (compatibility mode)
tokenizer = gt.Tokenizer(hf_tokenizer).as_hf()
tokens = tokenizer.encode_batch(["This is a test string", "And here is another"])نویسنده میگه توی این حالت خروجیها مو به مو با هاگینگفیس یکی درمیاد، ولی همین تطابق هزینهٔ سرعت داره و به اون رکورد هزار برابری نمیرسی. برای سرعت کامل باید سراغ API خود Gigatoken بری؛ اونجا پیادهسازی Rust مستقیم فایل رو میخونه و رفتوبرگشت با پایتون به کمترین حد میرسه.
tokenizer = gt.Tokenizer("Qwen/Qwen3-8B") # Accepts HF model names
file_source = gt.TextFileSource(["owt_train.txt"], separator=b"<|endoftext|>")
tokens = tokenizer.encode_files(file_source)سؤال اصلی اینه که این سرعت از کجا میاد. نویسنده میگه کار اصلی روی pretokenization انجام شده؛ همون مرحلهای که معمولاً به یه موتور Regex سپرده میشه و اینجا با SIMD دستی بازنویسی شده. کنارش کش کردن نگاشت پیشتوکنها (اگه یه کلمه قبلاً دیده شده، توکنهاش سریع پیدا میشن)، کم کردن تعامل با پایتون و کم کردن هماهنگی بین نخها بقیهٔ کار رو انجام دادن.
توی بنچمارک روی یه فایل ۱۱٫۹ گیگابایتی از OpenWebText و روی پردازندهٔ AMD EPYC 9565 با ۱۴۴ هسته، توکنایزر GPT-2 با Gigatoken به ۲۴٫۵ گیگابایت بر ثانیه میرسه، در برابر ۲۴٫۸ مگابایت بر ثانیهٔ هاگینگفیس و ۳۶ مگابایت بر ثانیهٔ tiktoken. روی Apple M4 Max هم نسبتش حدود ۱۲۶۸ برابر ثبت شده. با این سرعت، به گفتهٔ نویسنده کل Common Crawl با حدود ۱۳۰ تریلیون توکن کمتر از ۶٫۵ ساعت توکنایز میشه.
همهچیز هم گل و بلبل نیست. توکنایزرهای مبتنی بر SentencePiece (مثل خانوادهٔ Gemma و Mistral) خیلی کمتر بهینه شدن و سودشون حدود ۱۰ تا ۲۰ برابره، WordPiece هنوز پشتیبانی نمیشه، نوشتن مستقیم خروجی روی فایل هنوز پیاده نشده و ویندوز هم کم تست شده و نویسنده فعلاً بهجاش WSL رو پیشنهاد میده. یه بخش شفافیت هم اضافه کرده: بیشتر کدبیس دستی نوشته شده و AI فقط توی مراحل پایانی مثل پورت کردن SIMD بین AVX512 و AVX2 و NEON و پروفایلینگ کمک کرده.
نکات کلیدی:
- توکنایزر متنباز نوشتهشده با Rust و SIMD، نصب با pip
- تا حدود ۱۰۰۰ برابر سریعتر از tokenizers هاگینگفیس و صدها برابر سریعتر از tiktoken
- ۲۴٫۵ گیگابایت بر ثانیه روی AMD EPYC با ۱۴۴ هسته با توکنایزر GPT-2
- حالت سازگاری برای جایگزینی بدون تغییر کد، و یه API بومی برای بیشترین سرعت
- سرعت از بازنویسی pretokenization با SIMD و کش پیشتوکنها میاد
- SentencePiece کمتر بهینه شده، WordPiece پشتیبانی نمیشه و ویندوز کم تست شده




