Skip to content
Meftun Akarsu
Research · 2026

gpt-oss-20b doctrine fine-tune

LoRA · gpt-oss-20b · Tinker API · LLM as judge

A LoRA adapter for gpt-oss-20b trained on public doctrine documents through the Tinker API, preferred over the base model in 82.6% of judged answers.

Bar chart of judged answer pairs: the adapter wins 83% overall, from 73% on factual to 90% on conceptual questions

Overview

A LoRA fine-tune of OpenAI’s open-weight gpt-oss-20b, a mixture-of-experts model with about 21 billion parameters of which about 3.6 billion are active, that answers questions grounded in 58 publicly released, unclassified doctrine documents. Training and serving ran entirely on the Tinker API, so no local GPU was needed at any point.

How it was built

GPT-5.4 generated 18,730 question–answer pairs from the documents, split by chunk, so no chunk appears in both the training and the test data. A rank-16 adapter trained for two epochs. A GPT-5.4 judge then compared it with the base model on 1,873 held-out pairs for accuracy, completeness and grounding, and the adapter won 82.6% of them (95% CI 80.9–84.4%). Judging 300 pairs again with randomized positions moved the result by less than two points. A Hugging Face Space puts both models side by side.

What it taught me

The largest change was behavior, not knowledge. The reasoning-tuned base model spent its whole budget on hidden reasoning and usually gave no final answer; the adapter answers directly, in about 49 tokens instead of 297. Where the base model did answer, the adapter still won 77.9% of the time. Validation loss during training sat on a different scale from loss on the inference path, and the inference-path loss did not track the judged quality, so the judge became the measure that counted.

Built with

gpt-oss-20b · Tinker API · PEFT · GPT-5.4 · Hugging Face Spaces · Python

← All projects