Wir stellen vor: Tiny BPE Trainer

Die meisten modernen NLP-Modelle, von GPT bis RoBERTa, basieren heute auf der Tokenisierung von Teilwörtern mittels Byte Pair Encoding (BPE). Doch was, wenn Sie Ihren eigenen Wortschatz in reinem C++ trainieren möchten?

Lernen Sie den Tiny BPE Trainer kennen – einen blitzschnellen, Header-only-BPE-Trainer, geschrieben in modernem C++17/20, mit null Abhängigkeiten, voller UTF-8-Unterstützung und HuggingFace-kompatibler Ausgabe (vocab.txt, merges.txt).

Warum noch ein BPE-Trainer?

Bestehende Optionen sind oft:

  • Nur Python, mit starken Laufzeitabhängigkeiten (Rust, Protobuf usw.)
  • Nicht einfach in C++-Anwendungen integrierbar
  • Nicht auf Geschwindigkeit, Einfachheit oder plattformübergreifende Nutzung ausgerichtet

Tiny BPE Trainer ist:

  • Nur Header
  • Plattformübergreifend (Linux, Windows, macOS)
  • HuggingFace-kompatibel
  • Und es passt perfekt zu meinem anderen Projekt: Modern Text Tokenizer

Kernfunktionen

  • Umfassendes BPE-Training aus reinem Text oder JSONL-Datensätzen
  • CLI- und C++-API-Unterstützung – ideal für Tools oder Einbettungen
  • HuggingFace-kompatible Ausgabe (vocab.txt, merges.txt)
  • UTF-8-sicher – Verarbeitet Emojis, mehrsprachige Skripte und Sonderzeichen.
  • Konfigurierbar – Kleinschreibung, Zeichensetzungstrennung, Mindestfrequenz usw.
  • Demo-Modus – Testen Sie alles mit einem einzeiligen Befehl.

Demo

1./Tiny-BPE-Trainer --demo

Generiert einen synthetischen Korpus, trainiert ein Vokabular, gibt Statistiken aus und führt die Tokenisierung durch – alles in Sekundenschnelle. Ideal für CI- und Smoke-Tests.

So trainieren Sie einen BPE-Tokenizer

Erstellen Sie ihn

1g++ -std=c++17 -O3 -o Tiny-BPE-Trainer Tiny-BPE-Trainer.cpp

Trainieren Sie mit einem Korpus

1./Tiny-BPE-Trainer -i corpus.txt -v 16000 -o my_tokenizer

Oder aus JSONL:

1./Tiny-BPE-Trainer -i dataset.jsonl --jsonl -v 32000

Text tokenisieren

1./Tiny-BPE-Trainer --test "Hallo Welt! Dies ist ein Test."

Funktioniert nahtlos mit dem Modern Text Tokenizer

Nach dem Training können Sie Ihr benutzerdefiniertes Vokabular direkt in meinem Modern Text Tokenizer verwenden:

1TextTokenizer tokenizer;
2tokenizer.load_vocab("my_tokenizer_vocab.txt");
3auto ids = tokenizer.encode("Hello world!");

Dies ermöglicht Ihnen eine vollständige C++-Tokenizer-Pipeline ohne Laufzeitabhängigkeiten.

Echte Datensätze verwenden

Mit HuggingFace-Datensätzen können Sie ganz einfach Korpora generieren:

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")

Dann trainiere:

1./Tiny-BPE-Trainer -i corpus.txt -v 16000 -o imdb_tokenizer

Benchmark

1Verarbeitet: 33 Mio. Zeichen
2Eindeutige Wörter: 106.000
3Vokabulargröße: 32.000
4Trainingszeit: ca. 30 Min. (Ryzen 9, -O3)

Selbst bei großen Korpusdateien (IMDB, WikiText) arbeitet der Tiny BPE Trainer effizient und zuverlässig – und generiert Vokabulare, die mit HuggingFace, SentencePiece und Ihren eigenen C++-Tokenizern kompatibel sind.

Anwendungsfälle

– Training benutzerdefinierter Tokenizer für LLMs und Transformatoren – Gerätebasiertes NLP, wenn Python nicht verfügbar ist – Entwicklung leistungsstarker Präprozessoren – Training fachspezifischer Vokabulare (Recht, Medizin, Code)

Jetzt testen

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

Die vollständige README-Datei auf GitHub enthält erweiterte Optionen, CLI-Flags und Integrationstipps:

Tiny BPE Trainer auf GitHub

Mit ❤️ für die NLP- und C++-Community entwickelt.

Wenn es Ihnen gefällt, markieren Sie es auf GitHub , verwenden Sie es in Ihren Projekten oder tragen Sie dazu bei!