Mikhail/mini-jev-runs
mini-Jev run records: 27 900 schema-driven decisions with full candidate logits Every record is one decision a frozen Qwen/Qwen3-4B-Instruct-2507 made about one field of a JSON schema that arrived with the request. The field was turned into a lettered multiple-choice question (A = pay_bill, B = bill_balance, …), the model ran one forward pass, and the answer was read from its next-token logits over the option letters. No token was generated. The records keep what such a run… See the full description on the dataset page: https://huggingface.co/datasets/Mikhail/mini-jev-runs.
mini-Jev run records: 27 900 schema-driven decisions with full candidate logits
Every record is one decision a frozen Qwen/Qwen3-4B-Instruct-2507 made about one field of a JSON schema that arrived with the request. The field was turned into a lettered multiple-choice question (A = pay_bill, B = bill_balance, …), the model ran one forward pass, and the answer was read from its next-token logits over the option letters. No token was generated.
The records keep what such a run usually throws away: the candidate logits in fp32, the normalized scores, the gap between the two best options, how much of the whole next-token distribution sat on the option letters, the gold position, and the hashes of the prompt and of the schema.
Code, figures and the write-up that produced this: https://github.com/r-ms/mini-jev
What you can do with it without a GPU
- Calibration.
p_candagainstpred_pos == gold_pos: reliability diagrams, ECE, per-kand per-candidate_massstrata. The scores here are deliberately not calibrated and are never called probabilities of being right; measuring how far off they are is an open question. - Abstention rules.
gapis the logit distance between the two best letters. Pick a threshold, see what accuracy and coverage you get, compare with the out-of-scope split. - Position effects.
read_letters_rotated_optionsis the same questions with the options cyclically shifted;gold_posandpred_poslet you measure any position prior directly. - Reproduce our numbers. The report in the repository is recomputed from exactly these files.
Configs
Fields of a decision record
free_text_control records instead carry the generated raw_response, generated_tokens and finish_reason; cost_by_length records carry wall times and prefill tokens for the per-field, shared-prefix and joint-JSON ways at one input length and field count.
Headline numbers from these files
Quick start
from datasets import load_dataset
d = load_dataset("Mikhail/mini-jev-runs", "read_letters", split="train")
r = d[0]
print(r["options"], r["p_cand"], r["gap"], r["pred"], r["gold"])
# accuracy and a simple abstention rule
import statistics
acc = sum(x["pred"] == x["gold"] for x in d) / len(d)
kept = [x for x in d if x["gap"] > 5]
print(acc, len(kept) / len(d), sum(x["pred"] == x["gold"] for x in kept) / len(kept))Provenance and limits
Model Qwen/Qwen3-4B-Instruct-2507 (revision cdbee75f), bf16, greedy, eager attention, transformers 4.57.6, xgrammar 0.2.7, one RTX 4090. Texts are CLINC150 (plus / test, pinned revision), 3 texts per intent for all 150 intents plus 50 out-of-scope texts; the sample manifest with its hashes is in data/clinc_sample_manifest.json.
One model, one English dataset of short utterances, one prompt form. The normalized scores rank the options and come with a confidence gap; they are not calibrated probabilities. Generation arms of the same study are not included here.
License: MIT for these records. CLINC150 is © its authors under CC BY 3.0.
