diff options
| author | Jonas Knobloch <jonas.knobloch@t-online.de> | 2026-09-11 18:39:02 +0200 |
|---|---|---|
| committer | Jonas Knobloch <jonas.knobloch@t-online.de> | 2026-09-11 18:39:02 +0200 |
| commit | 9e1b8c4bde9b0263a4c4d2278e3c283ca0eb07f1 (patch) | |
| tree | bf6b604a150a196490b92f89ca40a335aca83d31 /research/knobloch/cmd/plot/main.go | |
| parent | 75e581b3bc19a73d0c1f48b32f2e58121c9741c1 (diff) | |
Diffstat (limited to 'research/knobloch/cmd/plot/main.go')
| -rw-r--r-- | research/knobloch/cmd/plot/main.go | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/research/knobloch/cmd/plot/main.go b/research/knobloch/cmd/plot/main.go new file mode 100644 index 0000000..e754f6f --- /dev/null +++ b/research/knobloch/cmd/plot/main.go @@ -0,0 +1,58 @@ +package main + +import ( + "fmt" + "log" + + "go.jknobloc.com/x/research/knobloch" + "go.jknobloc.com/x/shelf" + "go.jknobloc.com/x/tokenizer/bpe" +) + +const modelDir = "models/mbpe/minipile" + +// the two families are swept separately, so a model is only ever compared +// against its own kind and the shared/unshared split never mixes m with mi +var families = []string{"m", "mi"} + +func models(family string) []string { + var r []string + + for alpha := 0; alpha <= 100; alpha += 10 { + r = append(r, fmt.Sprintf("gpt2_50256_%s%03d_minipile", family, alpha)) + } + + return r +} + +func main() { + dict := shelf.Abs("results/knobloch/minipile/dict.txt") + + cfg := bpe.Config{ + Recover: false, + } + + for _, family := range families { + names := models(family) + + knobloch.SharedVocabs = nil + + for _, model := range names { + knobloch.SharedVocabs = append(knobloch.SharedVocabs, shelf.Item(modelDir+"/"+model+"/vocab.json")) + } + + for _, model := range names { + dir := shelf.Item(modelDir + "/" + model) + + t, err := bpe.NewTokenizerFromFiles(shelf.Abs(dir+"/vocab.json"), shelf.Abs(dir+"/merges.txt"), cfg) + + if err != nil { + log.Fatal(err) + } + + if err := knobloch.TokenFrequencies(t, dict, model); err != nil { + log.Fatal(err) + } + } + } +} |
