slicktune.eval¶
Phase-2 evaluation: holdout perplexity and judges.
Classes¶
Holdout negative-log-likelihood / perplexity summary. |
|
Score model generations for quality / correctness. |
|
Aggregate judge outcomes. |
|
Outcome of judging one generation. |
|
Ask an LLM to score a completion from 0–10, normalized to |
|
Deterministic judge: pass if |
Functions¶
|
Compute mean NLL and perplexity on a holdout SFT JSONL / dataset. |
|
Generate replies for probe prompts and score them with |
Package Contents¶
- class slicktune.eval.HoldoutEvalResult[source]¶
Holdout negative-log-likelihood / perplexity summary.
- Parameters:
eval_loss (float) – Mean token NLL on the holdout set.
perplexity (float) –
exp(eval_loss).num_examples (int) – Number of evaluated examples.
- class slicktune.eval.Judge[source]¶
Bases:
abc.ABCScore model generations for quality / correctness.
- __slots__ = ()¶
- abstract judge(*, prompt: str, generation: str, **context: Any) JudgeResult[source]¶
Score a single generation.
- Parameters:
prompt (str) – User prompt.
generation (str) – Model completion.
**context (Any) – Judge-specific extras (e.g.
must_contain).
- Returns:
JudgeResult – Score and rationale.
- class slicktune.eval.JudgeReport[source]¶
Aggregate judge outcomes.
- Parameters:
results (list[JudgeResult]) – Per-example judgments.
- property mean_score: float¶
Return mean score across judged examples.
- Returns:
float – Mean in
[0, 1], or0.0when empty.
- results: list[JudgeResult] = []¶
- class slicktune.eval.JudgeResult[source]¶
Outcome of judging one generation.
- Parameters:
prompt (str) – User prompt.
generation (str) – Model completion.
score (float) – Score in
[0, 1].rationale (str) – Short explanation from the judge.
- class slicktune.eval.LLMJudge[source]¶
Bases:
JudgeAsk an LLM to score a completion from 0–10, normalized to
[0, 1].Uses digit-constrained decoding so small models cannot wander into
Yes/Trueinstead of a numeric score.- Parameters:
model (Any) – Causal LM used as the judge (often the same trained model).
tokenizer (PreTrainedTokenizerBase) – Matching tokenizer.
max_new_tokens (int, optional) – Unused for constrained scoring (kept for API compatibility), by default 2.
- __slots__ = ()¶
- judge(*, prompt: str, generation: str, **context: Any) JudgeResult[source]¶
Score via an LLM rubric prompt.
- Parameters:
prompt (str) – User prompt.
generation (str) – Model completion.
**context (Any) – Optional
criteriastring.
- Returns:
JudgeResult – Normalized score parsed from the judge reply.
- model: Any¶
- tokenizer: transformers.PreTrainedTokenizerBase¶
- class slicktune.eval.SubstringJudge[source]¶
Bases:
JudgeDeterministic judge: pass if
must_containappears in the generation.- __slots__ = ()¶
- judge(*, prompt: str, generation: str, **context: Any) JudgeResult[source]¶
Score via substring match.
- Parameters:
prompt (str) – User prompt.
generation (str) – Model completion.
**context (Any) – Must include
must_contain.
- Returns:
JudgeResult – Score
1.0or0.0.
- slicktune.eval.compute_holdout_perplexity(*, model: Any, tokenizer: transformers.PreTrainedTokenizerBase, data: str | pathlib.Path | datasets.Dataset, max_length: int = 512) HoldoutEvalResult[source]¶
Compute mean NLL and perplexity on a holdout SFT JSONL / dataset.
- Parameters:
model (Any) – Causal LM (base or PEFT).
tokenizer (PreTrainedTokenizerBase) – Tokenizer.
data (str or Path or Dataset) – Holdout SFT data with
messages(or loadable JSONL).max_length (int, optional) – Truncation length, by default 512.
- Returns:
HoldoutEvalResult – Loss / perplexity summary.
- Raises:
ValueError – If no examples are available.
- slicktune.eval.run_judge_on_probes(*, model: Any, tokenizer: transformers.PreTrainedTokenizerBase, probe_path: str | pathlib.Path, judge: Judge, max_new_tokens: int = 128) JudgeReport[source]¶
Generate replies for probe prompts and score them with
judge.- Parameters:
model (Any) – Model under evaluation.
tokenizer (PreTrainedTokenizerBase) – Tokenizer.
probe_path (str or Path) – Probe JSONL (
prompt,must_contain).judge (Judge) – Scoring strategy.
max_new_tokens (int, optional) – Generation length, by default 128.
- Returns:
JudgeReport – Aggregate scores.