diff options
| author | Jonas Knobloch <jonas.knobloch@t-online.de> | 2026-09-11 18:38:13 +0200 |
|---|---|---|
| committer | Jonas Knobloch <jonas.knobloch@t-online.de> | 2026-09-11 18:38:13 +0200 |
| commit | 75e581b3bc19a73d0c1f48b32f2e58121c9741c1 (patch) | |
| tree | 897e2f24db3374d58ba36dcee67879cc7cd4956c /research/entropy/context.go | |
| parent | 330c6387962b197c5ca7a8051d4864feaecc0f25 (diff) | |
| parent | f998fee7427403698f9262d1e92d1a307c652094 (diff) | |
Merge remote-tracking branch 'origin/wip-entropy' into wip-frequency
Diffstat (limited to 'research/entropy/context.go')
| -rw-r--r-- | research/entropy/context.go | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/research/entropy/context.go b/research/entropy/context.go new file mode 100644 index 0000000..3993c03 --- /dev/null +++ b/research/entropy/context.go @@ -0,0 +1,53 @@ +package entropy + +import ( + "fmt" + + "go.jknobloc.com/x/dataset" + "go.jknobloc.com/x/llm" +) + +type logProb struct { + document int + token int + value float32 + offset int +} + +func Context(model llm.Causal, tokenizer llm.Tokenizer, data dataset.Reader) error { + evaluatorConfig := llm.EvaluatorConfig{ + BatchSize: 32, + NumWorkers: 16, + } + + tokenBufferConfig := llm.TokenBufferConfig{ + Window: 1024, + Stride: 512, + PadLeft: false, + PadRight: false, + PadTokenID: 256, + } + + eval := llm.NewEvaluator(model, tokenizer, func(job llm.Job, logProbs []float32, tokens []int) []logProb { + r := make([]logProb, len(tokens)) + + for i, token := range tokens { + r[i] = logProb{ + document: job.Document, + token: token, + value: logProbs[i], + offset: job.Position*tokenBufferConfig.Stride + job.Seen + i, + } + } + + return r + }, evaluatorConfig) + + return eval.RunAndCollect("Context", data, tokenBufferConfig, func(r []logProb) error { + for _, l := range r { + fmt.Println(l) // TODO implement + } + + return nil + }) +} |
