Dies ist eine reine Go-Implementierung zum Kodieren und Dekodieren von Text mit dem SentencePiece-Tokenizer.
„Kodierung“ ist die Operation, mit der Text mithilfe eines trainierten Tokenizer-Modells in Token aufgeteilt wird. „Dekodierung“ ist der umgekehrte Vorgang – das Konvertieren einer Liste von Tokens in den Originaltext.
SentencePiece ist eine allgemeine Familie von Tokenizern, die durch eine Protobuf-Konfigurationsdatei konfiguriert wird. Dieses Repository konzentriert sich derzeit auf die Implementierung genau der Funktionalität, die zum Reproduzieren der Tokenisierung von Gemma-Modellen erforderlich ist (derselbe Tokenizer wird für Googles proprietäre Gemini-Modellfamilie verwendet). Konkret wird nur die BPE-Tokenisierung implementiert, da diese von Gemma verwendet wird.
Dieses Paket sollte zum Codieren von Text in Token mithilfe des Gemma-Tokenizers einsatzbereit sein. Es wurde einigermaßen optimiert und ausführlich im Vergleich zu den SentencePiece-Python-Bindungen getestet (siehe system_test.go
in diesem Repository).
Wenn Sie Probleme oder Unstimmigkeiten feststellen, eröffnen Sie bitte ein Problem.
Die Konfigurationsdatei für den Tokenizer ist ein Protobuf (strukturierte Daten, serialisiert im Protokollpufferformat), das ein trainiertes Tokenizer-Modell beschreibt; Es enthält das vollständige erlernte Vokabular, das für die Tokenisierung verwendet wird, sowie andere Konfigurationsinformationen.
Es ist nicht Teil dieses Repositorys. Bitte laden Sie es aus dem offiziellen Gemma-Implementierungs-Repository herunter. NewProcessor*
-Konstruktoren erwarten, diese Datei zu lesen.
Zur Konfiguration des Tokenizers wird ein Protobuf verwendet. Die Struktur des Protobuf wird durch die Datei internal/model/sentencepiece_model.proto
beschrieben, die von https://github.com/google/sentencepiece bereitgestellt wird
So generieren Sie die *.pb.go
Datei daraus neu:
$ cd internal/model
$ ./gen.sh
Das Konfigurations-Protobuf selbst wird wie im Abschnitt „Tokenizer-Konfiguration“ beschrieben abgerufen. Bei allen Tests muss die Umgebungsvariable MODELPATH
auf eine lokale Kopie der Tokenizer-Konfigurationsdatei verweisen.
Um eine In-Browser-Demo dieses Tokenizers in Aktion zu sehen, besuchen Sie https://eliben.github.io/go-sentencepiece/
Der Go-Code wird zu WebAssembly kompiliert und aus einem kleinen JS-Programm geladen, um eine interaktive Kodierung von Text zu ermöglichen.