Prezentarea Tiny BPE Trainer

Majoritatea modelelor NLP moderne de astăzi, de la GPT la RoBERTa, se bazează pe tokenizarea subcuvintelor folosind Byte Pair Encoding (BPE). Dar dacă vrei să-ți antrenezi propriul vocabular în C++ pur?

Faceți cunoștință cu Tiny BPE Trainer - un trainer BPE extrem de rapid, doar pentru antet, scris în C++ 17/20 modern, cu zero dependențe, suport complet UTF-8 și ieșire compatibilă cu HuggingFace (vocab.txt, merges.txt).

De ce un alt trainer BPE?

Deoarece opțiunile existente sunt adesea:

  • Doar pentru Python, cu dependențe mari de runtime (Rust, Protobuf etc.)
  • Nu se integrează ușor în aplicații C++
  • Nu se concentrează pe viteză, simplitate sau utilizare multi-platformă

Tiny BPE Trainer este:

  • Doar pentru antet
  • Compatibil cu multi-platformă (Linux, Windows, macOS)
  • Compatibil cu HuggingFace
  • Și se potrivește perfect cu celălalt proiect al meu: Modern Text Tokenizer

Caracteristici principale

  • Antrenament BPE complet din text simplu sau seturi de date JSONL
  • Suport CLI și API C++ – ideal pentru instrumente sau integrare
  • Ieșire compatibilă cu HuggingFace (vocab.txt, merges.txt)
  • UTF-8 Safe – gestionează emoji-uri, scripturi multilingve, caractere speciale
  • Configurabil – litere mici, divizarea punctuației, frecvență minimă etc.
  • Mod Demo – testați totul cu o comandă pe o singură linie

Demo

1./Tiny-BPE-Trainer --demo

Acest lucru generează un corpus sintetic, antrenează un vocabular, afișează statistici și rulează tokenizarea — totul în câteva secunde. Excelent pentru teste CI și de fum.

Cum se antrenează un tokenizer BPE

Construiește-l

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

Antrenează pe un corpus

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

Sau din JSONL:

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

Tokenizează textul

1./Tiny-BPE-Trainer --test „Salut, lume! Acesta este un test.”

Funcționează perfect cu Modern Text Tokenizer

După ce ați fost antrenat, puteți folosi vocabularul personalizat direct în Modern Text Tokenizer :

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

Aceasta vă oferă o conductă de tokenizare complet C++, fără dependențe la momentul execuției.

Folosiți seturi de date reale

Puteți genera cu ușurință corpora folosind seturi de date 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")

Apoi antrenează-te:

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

Benchmark

1Procesat: 33M caractere
2Cuvinte unice: 106K
3Dimensiunea vocabularului: 32000
4Timp de antrenament: ~30 min (Ryzen 9, -O3)

Chiar și pe fișiere corpus mari (IMDB, WikiText), Tiny BPE Trainer funcționează eficient și previzibil - și generează vocabulare compatibile cu HuggingFace, SentencePiece și propriile tokenizere C++.

Cazuri de utilizare

  • Antrenarea tokenizere personalizate pentru LLM-uri și transformatoare
  • NLP pe dispozitiv unde Python nu este disponibil
  • Construirea de preprocesoare de înaltă performanță
  • Antrenarea vocabulare specifice domeniului (juridic, medical, cod)

Încearcă acum

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

Consultați fișierul README complet pe GitHub pentru opțiuni avansate, semnalizări CLI și sfaturi de integrare:

Tiny BPE Trainer pe GitHub

Construit cu ❤️ pentru comunitatea NLP și C++.

Dacă vă place, marcați-l cu o stea pe GitHub , folosiți-l în proiectele dvs. sau contribuiți!