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:
5for x in dataset:
6f.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!