Tools

huggingface tokenisierung performance rust

Tokenisierung als Flaschenhals

Die Tokenisierung galt lange als vernachlässigbarer Teil des ML-Stacks - bis schnellere Modelle und massiv skalierte Workloads (Training auf Riesen-Datensätzen, Serving vieler paralleler Requests, lange Kontexte) die CPU zum Begrenzer machten. HuggingFaces kommende Version 1 der tokenizers-Bibliothek soll das beheben: oft um Zehnerpotenzen schneller als v0.23, bei identischen Token-IDs, API und Vokabulär.

Die vier Kerntricks

  • Bitstreams statt Regex: Das Pre-Tokenisierungs-Muster ist fix - also wird es einmal handgeschrieben und via SIMD über Bitströme gejagt (64 Bytes pro Register-Operation, Idee wie simdjson). Modelle mit bekannten Grammatiken laufen direkt, exotische Muster fallen auf den Regex-Pfad zurück.
  • Word-Cache: Thread-lokales Memo von Pre-Token-Bytes auf IDs - wiederholte Wörter werden nur einmal gemerged.
  • Merge-Loop-Rewrite: intrusive doppelt-verkettete Liste in einem vorab allokierten Puffer statt Heap-Allokation pro Merge; Kandidaten-Paare gepackt in 64-Bit-Werte.
  • Native Parallelität: Ein Tokenizer, viele Threads, Pools statt globaler Locks.

Die Messungen laufen im tokbench-Repo (mit Befehl zum Selbst-Nachmessen), Patches kamen u.a. von IBM, NVIDIA und ExecuTorch. Ein Crate-Split (tk-encode als Runtime, tk-serialize/tk-convert/tk-train optional) macht die Bibliothek zudem leichter einbettbar.

Original: HuggingFace Blog - tokenizers v1