Bemutatkozik a Tiny BPE Trainer
A legtöbb modern NLP modell, a GPT-től a RoBERTa-ig, a Byte Pair Encoding (BPE) használatával alszó-tokenizációra támaszkodik. De mi van, ha a saját szókincsedet szeretnéd tiszta C++-ban képezni?
Ismerd meg a Tiny BPE Trainert - egy villámgyors, csak fejléceket tartalmazó BPE trainert, amely modern C++17/20-ban íródott, nulla függőséggel, teljes UTF-8 támogatással és HuggingFace-kompatibilis kimenettel (vocab.txt
, merges.txt
).
Miért van szükség egy újabb BPE Trainerre?
Mivel a meglévő opciók gyakran:
- Csak Python-alapú, jelentős futásidejű függőségekkel (Rust, Protobuf, stb.)
- Nem könnyen beágyazható C++ alkalmazásokba
- Nem a sebességre, egyszerűségre vagy platformfüggetlen használatra összpontosít
A Tiny BPE Trainer:
- Csak fejlécalapú
- Platformfüggetlen (Linux, Windows, macOS)
- HuggingFace-kompatibilis
- És tökéletesen illeszkedik a másik projektemhez: Modern Text Tokenizer
Alapvető funkciók
- Teljes BPE képzés sima szövegből vagy JSONL adatkészletekből
- CLI és C++ API támogatás – ideális eszközökhöz vagy beágyazáshoz
- HuggingFace-kompatibilis kimenet (
vocab.txt
,merges.txt
) - UTF-8 biztonságos – kezeli az emojikat, többnyelvű szkripteket, speciális karakterek
- Konfigurálható – kisbetűk, írásjelek felosztása, minimális gyakoriság stb.
- Demó mód – mindent tesztelhet egysoros paranccsal
Demó
1./Tiny-BPE-Trainer --demo
Ez egy szintetikus korpuszt generál, szókincset tanít, statisztikákat nyomtat és tokenizációt futtat – mindezt másodpercek alatt. Nagyszerű CI és füsttesztekhez.
Hogyan tanítsunk be egy BPE Tokenizert
Építsd fel
1g++ -std=c++17 -O3 -o Tiny-BPE-Trainer Tiny-BPE-Trainer.cpp
Betanítás egy korpuszon
1./Tiny-BPE-Trainer -i corpus.txt -v 16000 -o my_tokenizer
Vagy JSONL-ből:
1./Tiny-BPE-Trainer -i dataset.jsonl --jsonl -v 32000
Szöveg tokenize-elése
1./Tiny-BPE-Trainer --test "Helló, világ! Ez egy teszt."
Zökkenőmentesen működik a Modern Text Tokenizerrel
A betanítás után közvetlenül használhatod az egyéni szókincset a Modern Text Tokenizeremben :
1TextTokenizer tokenizer;
2tokenizer.load_vocab("my_tokenizer_vocab.txt");
3auto ids = tokenizer.encode("Hello world!");
Ez egy teljesen C++ tokenizer folyamatot eredményez, nulla futásidejű függőséggel.
Valódi adatkészletek használata
Könnyedén generálhatsz korpuszokat HuggingFace adatkészletek segítségével:
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")
Aztán vonattal:
1./Tiny-BPE-Trainer -i corpus.txt -v 16000 -o imdb_tokenizer
Benchmark
1Feldolgozva: 33 millió karakter
2Egyedi szavak: 106 ezer
3Szókincs mérete: 32000
4Betanítási idő: ~30 perc (Ryzen 9, -O3)
A Tiny BPE Trainer még nagyméretű korpuszfájlokon (IMDB, WikiText) is hatékonyan és kiszámíthatóan működik – és olyan szókincseket generál, amelyek kompatibilisek a HuggingFace-szel, a SentencePiece-szel és a saját C++ tokenizereiddel.
Használati esetek
- Egyéni tokenizerek betanítása LLM-ekhez és transzformátorokhoz
- Eszközön belüli NLP, ahol a Python nem érhető el
- Nagy teljesítményű előfeldolgozók létrehozása
- Tartományspecifikus szókincsek betanítása (jogi, orvosi, kódolás)
Próbálja ki most
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
A teljes README fájlt a GitHubon találod a haladó beállításokért, CLI-jelzőkért és integrációs tippekért:
Készült ❤️-val az NLP és C++ közösség számára.
Ha tetszik, csillagozd meg a GitHubon , használd a projektjeidben, vagy járulj hozzá!
Hozzászólások