Instructions to use professorsynapse/eh-qwen3-4b-seq-sft-kto-seed3-lora with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use professorsynapse/eh-qwen3-4b-seq-sft-kto-seed3-lora with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("/workspace/repo/toolset-training-artifacts/runs/local/4b/sft__4b__headline__seed3/20260615_104507/Qwen3-4B-bnb-4bit/merged-16bit") model = PeftModel.from_pretrained(base_model, "professorsynapse/eh-qwen3-4b-seq-sft-kto-seed3-lora") - Notebooks
- Google Colab
- Kaggle
Epistemic Humility: Qwen3-4B sequential SFT then KTO adapter (seed 3)
A LoRA adapter for the second stage of a two-stage abstention regimen: supervised fine-tuning first to induce refusal behavior at all, then Kahneman-Tversky optimization (KTO) on top of it to refine where the refusal boundary sits. This is seed 3 of three.
The cold-start comparison that this extends found that preference training alone does not induce abstention on this model at this scale. The question this arm answers is whether preference training helps once SFT has already installed the behavior.
Status
Pre-registered extension. This adapter belongs to the sequential extension signed off on 2026-06-14 as a prospective addition to the locked matrix, recorded in section "Amendment A / v0.4 status" of the protocol and in the amendment governance note.
Its numbers are reported separately from the headline matrix and are never pooled with it. The protocol states the rule directly: mixed-stage results must be labeled as extension results unless a later signed revision explicitly supersedes the matrix.
Training
- Foundation model:
unsloth/Qwen3-4B-bnb-4bit, loaded in 4-bit, maximum sequence length 2048. - Stage 1: the same-seed headline SFT adapter
(
professorsynapse/eh-qwen3-4b-headline-sft-seed3-lora, revisionb3efd6e7aa133c8ad17d35ec569335b6a858d423), merged into a 16-bit model. - Stage 2 (this adapter): Kahneman-Tversky optimization (KTO) trained on top of that merged 16-bit model.
- Seed: 3.
- LoRA: rank 32, alpha 64, dropout 0.05, applied to
q_proj,k_proj,v_proj,o_proj,gate_proj,up_proj,down_proj. - Optimization: learning rate 1e-6, 1 epoch, per-device batch 2, gradient accumulation 4.
The materialized recipe carries no explicit
betaoverride, so the run took the trainer default; PROTOCOL v0.3 section 3.1a registers beta 0.1 as the pre-registered default for this arm. - Training file:
kto_congruence_train.jsonl, SHA-2569cb291ee45c8dd5893b150abe033386127d0eedce9fa16faa2309e31a1a70e15as recorded in the run record.
Training data
The training files are released as a public dataset at
professorsynapse/epistemic-humility-phase1. All arms are built
from one frozen question set: a known set and an unknown set of distinct source
questions, split so that train and dev question keys are disjoint after
normalizing question text. The per-method row expansion (one row per question for
SFT, one chosen/rejected pair per question for DPO, several labeled rows per
question for KTO) follows from each format rather than from a different budget.
Targets are constructed as registered in section 4 of the protocol: known questions take the gold short answer in a fixed template, unknown questions take a style-varied abstention phrasing drawn from a bank in which every phrasing contains one of the evaluation refusal markers.
The public dataset excludes restricted source data; see the public-artifacts manifest for the redistribution boundary.
Evaluation
How to read these numbers
The behavioral surface is SelfAware (Yin et al., 2023), a question set built to separate questions that have an answer from questions that do not: 3,369 rows per seed, 1,032 unknown-labeled and 2,337 known-labeled. Four metrics carry the result, all defined in section 3.4 of the manuscript:
- Refusal recall: percentage of unknown rows the model refused. Higher is better.
- Over-refusal: percentage of known rows the model refused. Lower is better.
- Correct-on-known: among known rows the model chose to answer, the percentage answered correctly. Its denominator is the answered subset, not all known rows.
- Truthful: percentage of all rows either correctly answered (known) or correctly refused (unknown).
This adapter (seed 3)
| Metric | Value |
|---|---|
| Refusal recall | 78.88% |
| Over-refusal | 43.30% |
| Correct-on-known | 35.40% |
| Truthful | 38.08% |
Source: amendment_a_selfaware_summary.csv, row seed3_kto / sft_kto_seed3.
Across the three seeds this arm averages refusal recall 77.75%, over-refusal 45.68%, truthfulness 37.72% (section 4.2 of the manuscript).
How to load
The stage-1 model this adapter was trained on is a local 16-bit merge that is not itself published. Rebuild it from the two published pieces, then apply this adapter on top. Merging a 4-bit base with its LoRA into 16-bit reproduces the training-time construction; it is not guaranteed to be bit-identical to the local artifact.
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
FOUNDATION = "unsloth/Qwen3-4B-bnb-4bit"
STAGE1 = "professorsynapse/eh-qwen3-4b-headline-sft-seed3-lora"
STAGE1_REVISION = "b3efd6e7aa133c8ad17d35ec569335b6a858d423"
ADAPTER = "professorsynapse/eh-qwen3-4b-seq-sft-kto-seed3-lora"
REVISION = "cb6c246e0e566908f7a4e4844a892d811667cf2d"
tokenizer = AutoTokenizer.from_pretrained(FOUNDATION)
base = AutoModelForCausalLM.from_pretrained(FOUNDATION, device_map="auto")
stage1 = PeftModel.from_pretrained(base, STAGE1, revision=STAGE1_REVISION)
stage1 = stage1.merge_and_unload()
model = PeftModel.from_pretrained(stage1, ADAPTER, revision=REVISION)
Intended use and limits
This is a research artifact for studying abstention and the refusal-recall against over-refusal trade-off. It is not a deployment-ready assistant.
- One model family at one scale (Qwen3-4B), one primary evaluation surface.
- Extension evidence, reported separately from the pre-registered headline matrix and not pooled with it.
- Loading requires reconstructing the stage-1 merge described above.
Provenance
- Revision this card describes:
cb6c246e0e566908f7a4e4844a892d811667cf2d - Local source run directory:
synaptic-tuner/toolset-training-artifacts/runs/local/4b/sft_kto__4b__amendment_a__seed3/20260617_070334/final_model - Run record:
sft_kto__4b__amendment_a__seed3.json - Registered protocol and extension sign-off: PROTOCOL v0.3
- Amendment governance:
papers/common/amendment-governance.md - Staging registry:
docs/checkpoint-staging.md - Release record:
docs/public-artifacts.md - Paper: Training regimen manuscript
- Project repository: https://github.com/ProfSynapse/Epistemic-Humility-Research
License
Apache-2.0, matching the unsloth/Qwen3-4B-bnb-4bit base model license recorded in
the staging registry.
Citation
Cite the paper and the exact Hugging Face revision shown on this page.
@misc{rosenbaum2026abstention,
title = {Teaching Small Language Models to Say I Don't Know: A Controlled
Comparison of SFT, DPO, KTO, and GRPO on Model-Specific Abstention Data},
author = {Rosenbaum, Joseph},
year = {2026},
note = {Synaptic Labs},
howpublished = {\url{https://github.com/ProfSynapse/Epistemic-Humility-Research}}
}
- Downloads last month
- 6