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