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:
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!
Comentarii