Giới thiệu Tiny BPE Trainer

Hầu hết các mô hình NLP hiện đại ngày nay, từ GPT đến RoBERTa, đều dựa vào mã hóa từ phụ bằng Mã hóa cặp byte (BPE). Nhưng nếu bạn muốn tự huấn luyện vốn từ vựng của mình bằng C++ thuần túy thì sao?

Hãy làm quen với Tiny BPE Trainer - một trình huấn luyện BPE cực nhanh, chỉ tập trung vào tiêu đề, được viết bằng C++ 17/20 hiện đại, không phụ thuộc, hỗ trợ UTF-8 đầy đủ và đầu ra tương thích với HuggingFace (vocab.txt, merges.txt).

Tại sao lại là một trình huấn luyện BPE khác?

Bởi vì các tùy chọn hiện có thường:

  • Chỉ dành cho Python, với các phụ thuộc thời gian chạy lớn (Rust, Protobuf, v.v.)
  • Không dễ nhúng vào các ứng dụng C++
  • Không tập trung vào tốc độ, tính đơn giản hoặc sử dụng đa nền tảng

Tiny BPE Trainer:

  • Chỉ dành cho tiêu đề
  • Đa nền tảng (Linux, Windows, macOS)
  • Tương thích với HuggingFace
  • Và nó kết hợp hoàn hảo với dự án khác của tôi: Modern Text Tokenizer

Các tính năng cốt lõi

  • Đào tạo BPE đầy đủ từ tập dữ liệu văn bản thuần túy hoặc JSONL
  • Hỗ trợ CLI và API C++ – lý tưởng cho việc tạo công cụ hoặc nhúng
  • Đầu ra tương thích với HuggingFace (vocab.txt, merges.txt)
  • An toàn với UTF-8 – xử lý biểu tượng cảm xúc, đa ngôn ngữ tập lệnh, ký tự đặc biệt
  • Có thể cấu hình – chữ thường, tách dấu câu, tần suất tối thiểu, v.v.
  • Chế độ Demo – kiểm tra mọi thứ bằng lệnh một dòng

Demo

1./Tiny-BPE-Trainer --demo

Điều này tạo ra một kho dữ liệu tổng hợp, huấn luyện từ vựng, in số liệu thống kê và chạy mã hóa — tất cả chỉ trong vài giây. Tuyệt vời cho các bài kiểm tra CI và smoke.

Cách huấn luyện một Tokenizer BPE

Xây dựng nó

1g++ -std=c++17 -O3 -o Tiny-BPE-Trainer Tiny-BPE-Trainer.cpp

Huấn luyện trên một ngữ liệu

1./Tiny-BPE-Trainer -i corpus.txt -v 16000 -o my_tokenizer

Hoặc từ JSONL:

1./Tiny-BPE-Trainer -i dataset.jsonl --jsonl -v 32000

Mã hóa văn bản

1./Tiny-BPE-Trainer --test "Xin chào thế giới! Đây là một bài kiểm tra."

Hoạt động liền mạch với Modern Text Tokenizer

Sau khi được đào tạo, bạn có thể sử dụng từ vựng tùy chỉnh của mình trực tiếp trong [Modern Text Tokenizer] của tôi (https://github.com/Mecanik/Modern-Text-Tokenizer) :

1TextTokenizer tokenizer;
2tokenizer.load_vocab("my_tokenizer_vocab.txt");
3auto ids = tokenizer.encode("Hello world!");

Điều này cung cấp cho bạn một đường ống phân tích cú pháp hoàn toàn bằng C++, không phụ thuộc vào thời gian chạy.

Sử dụng Bộ dữ liệu Thực

Bạn có thể dễ dàng tạo tập dữ liệu bằng bộ dữ liệu HuggingFace:

1from datasets import load_dataset
2
3dataset = load_dataset("imdb", split="train")
4with open("corpus.txt", "w", encoding="utf-8") as f:
5    for x in dataset:
6        f.write(x["text"].strip().replace("\n", " ") + "\n")

Sau đó đào tạo:

1./Tiny-BPE-Trainer -i corpus.txt -v 16000 -o imdb_tokenizer

Điểm chuẩn

1Đã xử lý: 33 triệu ký tự
2Số từ duy nhất: 106 nghìn
3Kích thước từ vựng: 32000
4Thời gian đào tạo: ~30 phút (Ryzen 9, -O3)

Ngay cả trên các tệp ngữ liệu lớn (IMDB, WikiText), Tiny BPE Trainer vẫn hoạt động hiệu quả và có thể dự đoán được — và tạo ra các từ vựng tương thích với HuggingFace, SentencePiece và các bộ mã hóa C++ của riêng bạn.

Trường hợp sử dụng

  • Đào tạo bộ mã hóa tùy chỉnh cho các chương trình LLM và bộ chuyển đổi
  • NLP trên thiết bị khi Python không khả dụng
  • Xây dựng bộ tiền xử lý hiệu suất cao
  • Đào tạo các từ vựng chuyên ngành (pháp lý, y tế, mã)

Hãy thử ngay

1git clone https://github.com/Mecanik/Tiny-BPE-Trainer
2cd Tiny-BPE-Trainer
3g++ -std=c++17 -O3 -o Tiny-BPE-Trainer Tiny-BPE-Trainer.cpp
4./Tiny-BPE-Trainer --demo

Xem tệp README đầy đủ trên GitHub để biết các tùy chọn nâng cao, cờ CLI và mẹo tích hợp:

Tiny BPE Trainer trên GitHub

Được xây dựng với ❤️ dành cho cộng đồng NLP và C++.

Nếu bạn thích, hãy đánh dấu sao trên GitHub , sử dụng trong các dự án của bạn hoặc đóng góp!