Downloads · 30 days
10
25% of all-time downloads
jaslee/Ouro-1.4B-Thinking-terminal-sft
Ouro-1.4B-Thinking-terminal-sft is a machine learning model from jaslee. 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.
Full-backbone supervised finetune of ByteDance/Ouro-1.4B-Thinking on a mixture of public terminal-agent trajectory corpora, aimed at Terminal-Bench.
Downloads · 30 days
10
25% of all-time downloads
All-time downloads
40
Public
Parameters
1.4B
5.7 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors2.9 GB · 100%
From the Hugging Face model README
Full-backbone supervised finetune of ByteDance/Ouro-1.4B-Thinking on a mixture of public terminal-agent trajectory corpora, aimed at Terminal-Bench.
Evaluated with the terminus-2 agent harness, the base Thinking model scored
0/15 tasks — but the dominant failure was format, not shell knowledge: it
reasons in prose for hundreds of tokens and never emits the JSON action object
the harness parses into commands, so the agent loop cannot extract a single
action. This finetune targets that specific gap.
Same prompt, both models driven through the same decode loop:
| completion tokens | stopped cleanly | parseable action | |
|---|---|---|---|
| this checkpoint | 106 | yes | yes (1 command) |
| base Thinking | 800 | no (hit budget mid-thought) | no JSON emitted |
Streaming interleave of three corpora, all generated by driving a strong teacher
model through the same terminus-2 harness Terminal-Bench uses, so the
assistant turns already carry the target action format:
| corpus | share | note |
|---|---|---|
| nvidia/Nemotron-Terminal-Corpus | 65% | skill_based_medium + skill_based_easy (~139k rows) |
| m-a-p/TerminalTraj | 25% | long-horizon trajectories (up to 376 turns) |
| open-thoughts/OpenThoughts-Agent-v1-SFT | 10% | domain diversity |
Trajectories are truncated to their first 64 turns, and loss is masked to assistant turns only (terminal output fed back to the agent contributes no gradient).
| trainable params | 1,434,652,673 (100% — full backbone) |
| steps | 1000 |
| objective | Ouro Stage-I, L = Σ_t p(t|x)·L^(t) − β·H(p), β=0.01 |
| LR | 2e-5, 50-step warmup, cosine decay to 0.1× |
| batch / seq | 1 × 4096 (packed), grad-clip 1.0 |
| precision | bf16, full activation checkpointing |
| hardware | 1× RTX A6000, ~58 min |
Loss moved 0.6→0.4–0.7 with grad-norm falling 22→3–6. Weights shifted 1.2–3.4%
relative to the base (lm_head most, at 3.4%).
The Stage-I objective trains every one of the 4 recurrence depths, weighted by the exit distribution, rather than only the blended output — this preserves the adaptive-computation behaviour the architecture is built around.
terminus-2-style prompts; other agent harnesses with different
response schemas are out of distribution.Ouro is a custom architecture (trust_remote_code=True). This repo bakes in a
pad_token_id default the released config omits, but recent transformers
versions still need shims for Ouro's bundled modeling code (a RoPE-init
fallback and attention-mask signature adaptation) — these affect the base model
identically. See _load_hf_generate_model in torchtitan's
scripts/evaluate_humaneval_evalplus.py
for a working reference loader.
model.generate() is not a supported path: Ouro's cache expects a
cache_position tensor that generate() does not supply. Use a token-by-token
decode loop that calls model.model(...) directly (see generate_chat in
scripts/ouro_openai_server.py).