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:

Tiny BPE Trainer a GitHubon

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á!