MarkTechPost
92

Sản phẩm

Gigatoken: Trình mã hóa BPE bằng Rust đạt tốc độ 24,53 GB/s, nhanh gấp 989 lần HuggingFace

(giờ Việt Nam)

Tóm tắt AI

Gigatoken là trình mã hóa BPE viết bằng Rust với hiệu suất vượt trội, đạt tốc độ xử lý 24,53 GB/s nhờ kỹ thuật tối ưu hóa SWAR và bộ nhớ đệm tiền mã hóa, bỏ xa các thư viện hiện có.

Bản dịch AI

Meet Gigatoken: A Rust BPE Tokenizer that Encodes Text at 24.53 GB/s, up to 989x Faster than HuggingFace Tokenizers

Tokenization (tách từ) là một phần trong hệ thống mô hình ngôn ngữ mà hầu như không ai thực hiện đo lường hiệu năng (profile). Gigatoken, được phát hành bởi Marcel Rød (một nghiên cứu sinh tiến sĩ tại Stanford) theo giấy phép MIT, cho rằng đây là một sai lầm. Thư viện này mã hóa văn bản với tốc độ gigabyte mỗi giây trên một máy đơn lẻ, vượt xa các tiêu chuẩn cơ sở vốn đã sử dụng Rust đa luồng.

Kết quả đo kiểm (benchmark) của bộ tách từ GPT-2 mang lại những con số đáng kinh ngạc: khi đánh giá trên tập dữ liệu owt_train.txt dung lượng 11,9 GB sử dụng hệ thống AMD EPYC 9565 144 nhân (dual-socket), Gigatoken xử lý dữ liệu với tốc độ chóng mặt là 24,53 GB/s. Để so sánh, tiktoken của OpenAI đạt 36,0 MB/s, trong khi HuggingFace tokenizers ghi nhận mức 24,8 MB/s trên cùng cấu hình phần cứng. Những con số này cho thấy lợi thế hiệu năng lần lượt là 681 lần và 989 lần.

Trên chip Apple M4 Max với 16 nhân, cùng khối lượng công việc GPT-2 chạy ở tốc độ 8,79 GB/s, gấp 1.268 lần HuggingFace tokenizers và 140 lần tiktoken. Trên bộ vi xử lý phổ thông AMD Ryzen 7 9800X3D, nó chạy ở tốc độ 6,27 GB/s, gấp 106 lần và 68 lần. Sự gia tăng tốc độ này không phải là kết quả ngẫu nhiên của một CPU hay một bộ từ vựng cụ thể nào.

Gigatoken là gì?

Gigatoken là một bộ tách từ theo phương pháp byte-pair encoding (BPE) được viết bằng Rust với các liên kết (bindings) cho Python. Nó được phân phối trên PyPI dưới tên gigatoken (phiên bản 0.9.0, phát hành ngày 21 tháng 7 năm 2026) và cài đặt bằng lệnh pip install gigatoken. Kho lưu trữ mã nguồn bao gồm 66,2% Rust và 33,3% Python. Nó hỗ trợ 23 họ bộ tách từ khác nhau trong các bài kiểm tra được công bố, bao gồm GPT-2, GPT-OSS, Llama 3 đến 4, Qwen 2 đến 3.6, DeepSeek V3/R1/V4, GLM 4 và 5, Kimi K2, Nemotron 3, Phi-4, OLMo 2/3, ModernBERT, Gemma và Mistral.

Có hai cách để sử dụng thư viện này. Chế độ tương thích (Compatibility mode) bao bọc một bộ tách từ HuggingFace hoặc tiktoken hiện có và duy trì sự đồng nhất đầu ra chính xác, nhưng phải đánh đổi bằng tốc độ xử lý. Tác giả (Marcel) chia sẻ trên Hacker News rằng chế độ tương thích mang lại hiệu suất nhanh gấp khoảng 200–300 lần tùy vào cách sử dụng, vì nó vẫn phải chịu chi phí overhead của Python cho việc tạo danh sách và chuyển đổi chuỗi sang byte. API gốc của Gigatoken cho phép Rust đọc tệp trực tiếp và đây chính là nơi tạo ra các con số hiệu năng đã công bố.

Trình khám phá benchmark tương tác

Mọi con số dưới đây đều được trích xuất từ phần benchmark của kho lưu trữ và nhật ký tối ưu hóa bộ tiền tách từ (pretokenizer). Bạn có thể chuyển đổi giữa các CPU, xem lại lịch sử tối ưu hóa hoặc ước tính thời gian xử lý cho tập dữ liệu của riêng bạn.

Cách thức đạt được hiệu năng đó

Những cải tiến không đến từ một vòng lặp gộp BPE tốt hơn. Chúng đến từ hai khía cạnh mà hầu hết các bộ tách từ khác coi là đã được giải quyết xong.

(1) Tiền tách từ (Pretokenization): Hầu hết các triển khai đều ủy thác việc này cho một công cụ regex. Gigatoken tự viết thủ công phần này. Nhật ký tối ưu hóa theo dõi thông lượng của bộ tiền tách từ GPT-2 đơn luồng trên 100 MB dữ liệu OpenWebText, và quá trình tiến triển rất đáng học hỏi:

Tác động ròng lên riêng bộ tiền tách từ: nhanh gấp 2,27 lần so với tiêu chuẩn cơ sở winnow + NEON, và gấp 22,3 lần so với triển khai bằng regex.

(2) Bộ nhớ đệm tiền tách từ (Pretoken caching): Nếu một từ đã từng xuất hiện trước đó, các token đã mã hóa của nó sẽ được tra cứu thay vì tính toán lại. Tác giả (Marcel) lưu ý rằng điều này rất khó thực hiện trong thực tế vì bộ nhớ đệm tăng trưởng rất nhanh và phân phối của các từ tiền tách từ có đuôi dài (long-tailed). Ngoài ra, các tương tác với Python được giảm thiểu và các luồng được thiết kế để tương tác với nhau ở mức tối thiểu.

Nhật ký tối ưu hóa rất thẳng thắn về những thất bại. Việc phân tách nóng/lạnh (hot/cold split) sử dụng #[cold] và #[inline(never)] đã bị giảm hiệu năng xuống còn 580 MiB/s và bị hoàn tác, vì rào cản inline đã ngăn LLVM tối ưu hóa vòng lặp kết hợp ASCII và unicode. Một bộ đệm phân loại hai lượt với kỹ thuật đếm chuyển đổi SWAR về mặt thuật toán là đúng nhưng chỉ chạy ở tốc độ 354 MiB/s, do lưu lượng bộ nhớ bổ sung đã triệt tiêu lợi ích từ việc giảm nhánh rẽ. Tối ưu hóa dựa trên hồ sơ (Profile-guided optimization) không có tác dụng đo lường được, vì vòng lặp bên trong vốn đã không có nhánh rẽ và nhánh rẽ biên từ phụ thuộc vào dữ liệu.

Ghi chú về phương pháp đo kiểm (Benchmark Methodology)

Sự so sánh này không hoàn toàn tương đương (apples-to-apples). Gigatoken mã hóa toàn bộ các tệp chưa chia nhỏ, tự tìm ranh giới tài liệu và tự động song song hóa. Ngược lại, HuggingFace (encode_batch_fast) được đánh giá trên 100 MB đầu tiên và tiktoken (encode_ordinary_batch) trên 1 GB đầu tiên, cả hai đều được chia nhỏ trước tại <|endoftext|>. Vì các tiêu chuẩn cơ sở bỏ qua việc lưu bộ nhớ đệm, thông lượng của chúng vẫn giữ nguyên. Các phép đo báo cáo kết quả tốt nhất trong ba vòng chạy xen kẽ sử dụng các tiến trình mới với tính năng song song được bật.

Các loại từ vựng cũng tạo ra những hạn chế; các bộ tách từ SentencePiece chỉ được tối ưu hóa một phần. Trên EPYC, Gemma 1 xử lý ở tốc độ 2,51 GB/s (nhanh gấp 7,3 lần), Gemma 3 ở 3,43 GB/s (9,6 lần) và CodeLlama ở 3,47 GB/s (10,0 lần). Mặc dù đáng kể, những mức tăng này vẫn thấp hơn một bậc so với hiệu năng BPE tiêu biểu.

Một bản tái hiện độc lập trên KrabArena đã xác nhận các kết quả này. Trên một máy ảo Intel Xeon 4-vCPU (2,20 GHz) với 174 MB dữ liệu OpenWebText, Gigatoken 0.9.0 đạt mức trung bình 277,8 MB/s, vượt xa tiktoken 0.13.0 (10,62 MB/s) gấp 26,2 lần và tokenizers 0.23.1 (3,33 MB/s) gấp 83,4 lần. Tất cả các thử nghiệm đã xác thực thành công 35.356 tài liệu, khẳng định xu hướng hiệu năng tăng dần theo số lượng nhân.

Những điểm chính cần lưu ý

Hãy xem kho lưu trữ GitHub và luồng thảo luận về bản phát hành. Mọi công lao cho nghiên cứu này thuộc về tác giả của dự án.

Asif Razzaq là CEO của Marktechpost Media Inc. Là một doanh nhân và kỹ sư có tầm nhìn, Asif cam kết khai thác tiềm năng của Trí tuệ nhân tạo vì lợi ích xã hội. Nỗ lực gần đây nhất của ông là ra mắt Nền tảng Truyền thông Trí tuệ nhân tạo, Marktechpost, nổi bật với việc đưa tin chuyên sâu về học máy và học sâu, vừa đảm bảo tính kỹ thuật vừa dễ hiểu đối với đông đảo khán giả. Nền tảng này tự hào với hơn 2 triệu lượt xem mỗi tháng, minh chứng cho sự phổ biến của nó đối với người xem.

GigatokenRustTokenizerTối ưu hóaLLM
Đọc bài gốc

Bài viết được AI dịch và tổng hợp tự động từ MarkTechPost. Liên kết bài gốc ở phía trên. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.