Gigatoken: Rust BPE Tokenizer สุดแรง ทำความเร็วสูงถึง 24.53 GB/s เร็วกว่าเดิมเกือบ 1,000 เท่า

การทำ Tokenization มักเป็นขั้นตอนในกระบวนการสร้างแบบจำลองภาษา (Language Modeling) ที่ไม่ค่อยได้รับการวิเคราะห์ประสิทธิภาพ (Profile) มากนัก ทว่า Gigatoken ผลงานของ Marcel Rød นักศึกษาปริญญาเอกชาก Stanford ได้พิสูจน์ให้เห็นว่านี่คือจุดที่พัฒนาได้อีกมหาศาล ไลบรารีนี้ถูกพัฒนาด้วยภาษา Rust ภายใต้สัญญาอนุญาต MIT สามารถเข้ารหัสข้อความได้ในระดับหลายกิกะไบต์ต่อวินาทีบนเครื่องเพียงเครื่องเดียว
ผลการทดสอบเกณฑ์มาตรฐาน (Benchmark) กับ GPT-2 tokenizer ให้ผลลัพธ์ที่น่าทึ่ง เมื่อประเมินด้วยคอร์ปัสข้อมูลขนาด 11.9 GB บนเครื่อง AMD EPYC 9565 ขนาด 144 คอร์ พบว่า Gigatoken ประมวลผลได้เร็วถึง 24.53 GB/s ในขณะที่ tiktoken ของ OpenAI ทำได้เพียง 36.0 MB/s และ HuggingFace tokenizers ทำได้ 24.8 MB/s แสดงให้เห็นถึงประสิทธิภาพที่เหนือกว่าถึง 681 เท่า และ 989 เท่าตามลำดับ
ประสิทธิภาพที่ก้าวกระโดดนี้ไม่ได้จำกัดอยู่แค่บนเครื่องเซิร์ฟเวอร์เท่านั้น จากการทดสอบบน Apple M4 Max (16 คอร์) พบว่าทำความเร็วได้ที่ 8.79 GB/s หรือเร็วกว่า HuggingFace ถึง 1,268 เท่า ส่วนบน AMD Ryzen 7 9800X3D สำหรับผู้บริโภคทั่วไป ก็ยังทำความเร็วได้ 6.27 GB/s ซึ่งเร็วขึ้นกว่าเดิม 68 ถึง 106 เท่า พิสูจน์ได้ว่าความแรงนี้มาจากตัวซอฟต์แวร์เอง ไม่ใช่แค่พึ่งพาฮาร์ดแวร์เฉพาะทาง
What is Gigatoken
Gigatoken คือ Byte-pair Encoding (BPE) Tokenizer ที่เขียนด้วยภาษา Rust และมีตัวเชื่อมต่อสำหรับ Python พร้อมใช้งานบน PyPI ในชื่อ gigatoken (เวอร์ชัน 0.9.0) ติดตั้งง่ายผ่านคำสั่ง pip install gigatoken ตัวไลบรารีรองรับตระกูล Tokenizer ที่หลากหลายถึง 23 ตระกูล ครอบคลุมตั้งแต่นุ่นแรกอย่าง GPT-2 ไปจนถึงโมเดลล้ำสมัยอย่าง Llama 3/4, DeepSeek V3/R1, Qwen, Gemma และ Mistral
ผู้ใช้สามารถเลือกใช้งานได้สองวิธี ได้แก่ โหมดความเข้ากันได้ (Compatibility mode) ซึ่งใช้งานครอบบน HuggingFace หรือ tiktoken เดิมเพื่อให้ได้ผลลัพธ์ที่เหมือนเป๊ะ 100% โดยจะให้ความเร็วเพิ่มขึ้นประมาณ 200–300 เท่า (เนื่องจากมี Overhead จาก Python) และโหมด Native Gigatoken API ที่ให้ภาษา Rust อ่านไฟล์โดยตรง ซึ่งเป็นวิธีที่ให้ความเร็วสูงสุดตามผลการทดสอบข้างต้น
The interactive benchmark explorer
ข้อมูลตัวเลขทั้งหมดนำมาจาก ส่วนเกณฑ์มาตรฐาน ของโปรเจกต์นี้ และ บันทึกการเพิ่มประสิทธิภาพ pretokenizer ซึ่งผู้ใช้สามารถเข้าไปเลือกสลับดูข้อมูลตามประเภท CPU หรือประเมินระยะเวลาการประมวลผลสำหรับคอร์ปัสข้อมูลของตนเองได้
How it gets there
หัวใจสำคัญของความเร็วไม่ได้มาจากลูปการรวม BPE ที่ดีขึ้นเพียงอย่างเดียว แต่เกิดจากการรีดประสิทธิภาพในสองส่วนหลักที่คนทั่วไปมักมองข้าม:
(1) Pretokenization: แทนที่จะใช้ Regex ทั่วไป Gigatoken เขียนเอนจินขึ้นเองโดยใช้เทคนิค SWAR (SIMD Within A Register) เพื่อโหลดข้อมูล 8 ไบต์มาประมวลผลพร้อมกันใน Register เดียวแบบ Branchless นอกจากนี้ยังใช้เทคนิค Dual-cursor ILP เพื่อประมวลผลสองสตรีมขนานกัน ช่วยลดปัญหาความหน่วง (Latency) ของข้อมูลที่ต้องรอกัน ส่งผลให้เร็วกว่าการใช้ Regex แบบเดิมถึง 22.3 เท่า
(2) Pretoken caching: มีการนำแคชมาใช้ดึงโทเค็นที่เคยเข้ารหัสแล้วกลับมาใช้ใหม่แทนการคำนวณซ้ำ โดยออกแบบให้จัดการหน่วยความจำได้อย่างมีประสิทธิภาพแม้ข้อมูลจะเป็นแบบ Long-tail และลดการสื่อสารระหว่างเธรดให้เหลือน้อยที่สุด เพื่อลดคอขวดระหว่างการประมวลผลขนาน
Benchmark Methodology Notes
ในการเปรียบเทียบนี้ Gigatoken ใช้วิธีประมวลผลไฟล์ดิบทั้งไฟล์และแบ่งการทำงานขนานอัตโนมัติ ในขณะที่ HuggingFace และ tiktoken ทดสอบจากข้อมูลส่วนแรกที่ถูกแยกไว้ก่อนแล้ว ซึ่งการทดสอบซ้ำอย่างอิสระโดย KrabArena บนหน่วยประมวลผล Intel Xeon ขนาด 4 คอร์ ก็ยืนยันผลลัพธ์ไปในทิศทางเดียวกันว่า Gigatoken มีความเร็วเหนือกว่าอย่างชัดเจน แม้จะเป็นการรันบนทรัพยากรที่จำกัดก็ตาม
อย่างไรก็ตาม ชุดคำศัพท์แบบ SentencePiece จะมีความเร็วเพิ่มขึ้นในระดับ 7–22 เท่า ซึ่งยังไม่สูงเท่าระดับ 1,000 เท่าเหมือนใน BPE สำหรับผู้ที่สนใจสามารถศึกษาข้อมูลเพิ่มเติมและให้เครดิตการวิจัยได้ที่ GitHub repo และกระทู้เปิดตัวของโปรเจกต์
ความคิดเห็น (0)
เข้าสู่ระบบเพื่อร่วมแสดงความเห็น
สมัครสมาชิกมาเป็นคนแรกที่แสดงความเห็นกันเลยโบร
