Downloads · 30 days
4
6% of all-time downloads
Kotichitturu/slm-125m-sft-raft-v2
slm-125m-sft-raft-v2 is a machine learning model from Kotichitturu. Use it for the machine learning task on the model card, and read the license before you ship it in a product. The card lists the license as apache-2.0.
Fine-tuned for grounded QA over retrieved context, with refusal on US case law, SEC filings, and FineWeb-Edu (≈40/40/20 source mix, matching the pretraining distribution).
Downloads · 30 days
4
6% of all-time downloads
All-time downloads
66
Public
Parameters
126M
252 MB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors252 MB · 100%
From the Hugging Face model README
Fine-tuned for grounded QA over retrieved context, with refusal on US case law, SEC filings, and FineWeb-Edu (≈40/40/20 source mix, matching the pretraining distribution).
eval_v2Scored on a held-out benchmark built from fresh passages (different sampling seed), decontaminated against every training set, and frozen with a sha256 receipt. Judge = claude-sonnet-5 (a different model family from both this model and the data pipeline's teacher), rubric 0–100.
| Metric | Value |
|---|---|
| Judge score | 16.3/100 (95% CI 14.7–17.9) |
| Correct (vs reference) | 10.9% |
| Grounded | 34.0% |
| Refusal recall (answer absent → refused) | 0.3% (n=296) |
| Over-refusal (answer present → refused) | 0.0% (n=366) |
| Numeric match | 50.0% (n=148) |
| Token F1 vs reference | 17.8% (n=1030) |
| Items scored | 1325 |
| Task | Judge /100 | Token F1 | n |
|---|---|---|---|
| Closed-book QA (no context — recall from weights) | 5.6 | 6.6% | 381 |
| Instruction following (no context) | 5.8 | 29.2% | 283 |
| RAFT (answer IS in the retrieved context — extraction) | 42.7 | 20.8% | 366 |
| Refusal (answer is ABSENT — must decline) | 7.2 | — | 295 |
Read the refusal row against the RAFT row. A high RAFT score with a low refusal score means the model answers well when the answer is present and fabricates when it is not — the two are the same behaviour measured twice.
Gold answers are model-authored (
gemini-3.1-pro) from a source passage. These measure agreement with the reference, not truth.
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("Kotichitturu/slm-125m-sft-raft-v2")
model = AutoModelForCausalLM.from_pretrained("Kotichitturu/slm-125m-sft-raft-v2", torch_dtype="bfloat16").eval()
# This model uses CUSTOM chat tokens — the prompt must match training byte-for-byte.
SYSTEM = 'You are a legal and financial expert. Use ONLY the provided context documents to answer the question. If the answer is not in the context, reply exactly: "The context does not contain the answer."'
prompt = "<|bos|><|system|>" + SYSTEM + "<|user|>" + "<your question>" + "<|assistant|>"
ids = tok(prompt, return_tensors="pt", add_special_tokens=False)
out = model.generate(**ids, max_new_tokens=128, do_sample=False,
eos_token_id=tok.convert_tokens_to_ids("<|eos|>"))
print(tok.decode(out[0][ids["input_ids"].shape[1]:], skip_special_tokens=True))
RAFT behaviour. Give the model retrieved documents followed by the question. If the answer is not in the context it is trained to reply "The context does not contain the answer." rather than guess — that refusal is the point of the format, not a failure.
Teacher-generated and judge-filtered, not scraped:
gpt-4o-mini, then a regex prefilter (self-containment, anchoring)
removes ~20% for free before any paid judging.gemini-3.1-flash-lite for faithfulness and correctness — a
different model family from the teacher, so it cannot reward its own idiom.