I fine-tuned two small medical LLMs to reason, then tested two contradictory 2026 calibration claims. The answer depended entirely on how I asked the model how sure it was. All on a free GPU.
A medical AI that is wrong but confident is more dangerous than one that says "I'm not sure, see a clinician." So when I set out to fine-tune a small, deployable medical model to reason better, I wanted the one thing leaderboards do not tell you: did teaching it to reason make it better calibrated, or just more sure of itself?

The Confidence Tax — internal vs. verbalized confidence in small medical LLMs.
The honest answer turned out to be a question of its own: which kind of confidence are you measuring? The two I tried moved in opposite directions.
The contradiction I set out to resolve
By early 2026 the literature openly disagreed about what reasoning does to a model's judgment. AbstentionBench (Kirichenko et al., 2025) showed that reasoning models fail on unanswerable questions, degrading their willingness to abstain by roughly 24%. Around the same time, "Thinking Out Loud" (2025) reported almost the opposite: reasoning fine-tuning improves calibration at 14B to 32B (one 32B model's calibration error dropped from 0.75 to 0.24). And in medicine specifically, "Knowing When to Abstain" (Machcha et al., EACL 2026) found that even high-accuracy medical LLMs abstain poorly under clinical uncertainty unless they are explicitly given the option.
All of this was measured on large models. Nobody had checked at the size a clinic, a startup, or a rural-health app would actually deploy: a 4B model on cheap hardware. So I ran it myself.
The setup
I QLoRA-fine-tuned two open 4B models on identical chain-of-thought medical data, then measured calibration before vs. after, with 95% paired bootstrap confidence intervals on every number:
- Qwen3–4B-Instruct (a strong generalist) and MedGemma-1.5–4B (a medical specialist).
- Data: the medical-o1-reasoning-SFT set from HuatuoGPT-o1 (Chen et al., 2024), Apache-licensed, no patient data.
- Method: QLoRA (Dettmers et al., 2023), a 4-bit base plus tiny adapters, which is how a 4B model fits in 16GB on a single free Kaggle T4.
The crucial design choice was measuring confidence two different ways:

# INTERNAL: one forward pass, softmax over the answer-letter logits
internal_conf = torch.softmax(option_letter_logits, 0).max()
# VERBALIZED: let it reason, then parse the number it claims
verbalized_conf = parse_confidence(model.generate(...)) / 100
The result
Read the model's internal probabilities, and fine-tuning is a clear win. Calibration error (ECE, lower is better) roughly quartered on Qwen and more than halved on MedGemma, and it replicated across both models. I went in looking for a "confidence tax," the over-confidence a fine-tune supposedly adds even after you control for accuracy. Internally, it was not there: the matched-accuracy gap was statistically zero, and the risk-coverage area (AURC) did not move.
But read what the model says about its confidence, and the story flips. Its written confidence sat pinned near "very sure" whether it was right or wrong, so verbalized calibration error actually rose (Qwen ECE 0.232 to 0.342, significant). Same checkpoint, opposite conclusion.

Calibration error (ECE) before and after fine-tuning. Internal calibration improves on both models; verbalized worsens. All changes significant (95% bootstrap CIs).
That gap, competent internal calibration but incompetent verbalized calibration, is likely why the 2026 papers disagree. They were measuring different "confidences."
Here is the divergence in a single case. On one MedQA question, Qwen answered C (correct) before fine-tuning and B (wrong) after, while reporting 95% confidence both times — the spoken number never flinched.

Same 95% spoken confidence, opposite correctness. The internal probabilities knew better than the words.
The honest cost (and the mistake I almost shipped)
My first run looked like fine-tuning improved accuracy (+1.7 points). It was an artifact: I was counting answers the model failed to format as wrong, and the fine-tuned model formats answers more tidily, so it looked more accurate just by being neater. Once I dropped unparsed answers on both sides and paired item by item, the sign flipped: accuracy actually drops a little (-3.6 to -6.8 points for Qwen, significant; MedGemma within noise). The bootstrap confidence intervals are what caught it.
So this is not a free lunch. In exchange for that small accuracy cost, you get much better internal calibration, and far less useless caution: MedGemma's base model abstained on 70% of questions (technically "safe," practically useless), and the fine-tune cut that to 10% while improving calibration.
What I would tell another builder
- Pin down which confidence you mean before you trust a calibration claim. Score the logits and fine-tuning "fixed" calibration; score the written confidence and it "broke" it. Both are true.
- For a deployed small medical model, threshold on the logits, not the model's self-report.
- Always check abstention. A model that abstains 70% of the time scores "safe" on naive metrics and helps no one.
- Budget confidence intervals. A single-GPU study has wide error bars; without them I would have shipped a backwards accuracy claim.
Reproduce it
The adapters are public, and the full harness (training, the internal and verbalized eval, unit-tested metric code, and the CI analysis) is open. There is a runnable Kaggle notebook that loads the public adapter and re-derives the internal-calibration result on a free GPU.
- Code and method: github.com/Mr-Neutr0n/confidence-tax-study
- Runnable notebook: kaggle.com/code/uranium53/confidence-tax-reproduction
- Adapters: Qwen3–4B (Kaggle / HuggingFace), MedGemma-4B (Kaggle / HuggingFace)
Limitations
Single free GPU, one seed, n around 800 per eval, so some effects (AURC, MedGemma's accuracy change) are not significant. 4B only. MedGemma's verbalized pass is missing because its multimodal head broke generation-time parsing, so the internal-vs-verbalized divergence is demonstrated on Qwen. Multiple-choice confidence is a proxy for real clinical reasoning, and there was no human-clinician evaluation. This is a research result, not a medical product. Not medical advice.
References
- P. Kirichenko et al. AbstentionBench: Reasoning LLMs Fail on Unanswerable Questions. arXiv 2506.09038, 2025. https://arxiv.org/abs/2506.09038
- Thinking Out Loud: Do Reasoning Models Know When They're Right? arXiv 2504.06564, 2025. https://arxiv.org/abs/2504.06564
- S. Machcha et al. Knowing When to Abstain: Medical LLMs Under Clinical Uncertainty. EACL 2026, arXiv 2601.12471. https://arxiv.org/abs/2601.12471
- A. Sellergren et al. MedGemma Technical Report. arXiv 2507.05201, 2025. https://arxiv.org/abs/2507.05201
- J. Chen et al. HuatuoGPT-o1: Towards Medical Complex Reasoning with LLMs. arXiv 2412.18925, 2024. https://arxiv.org/abs/2412.18925
- T. Dettmers et al. QLoRA: Efficient Finetuning of Quantized LLMs. arXiv 2305.14314, 2023. https://arxiv.org/abs/2305.14314
- C. Guo et al. On Calibration of Modern Neural Networks. ICML 2017, arXiv 1706.04599. https://arxiv.org/abs/1706.04599
- Y. Geifman and R. El-Yaniv. Selective Classification for Deep Neural Networks. NeurIPS 2017, arXiv 1705.08500. https://arxiv.org/abs/1705.08500
Built on a free Kaggle GPU. Figures by the author.