Aletheia LR9
Model id leimroth-lab/Aletheia-LR9.
A 27B agent model: sabicap/sabi-noema (an agentic fine-tune of
Qwen3.8-27B), given a further tool-use fine-tune and a refusal-direction edit, then exported to 4-bit NVFP4 and tested on
the TensorFold engine on one NVIDIA DGX Spark. Ninth in the Leimroth Lab line, after Naked Dragon LR8.
By Scott Leimroth · scottleimroth.com · @ScottLeimroth
What this is
A model built to be the everyday "house" model for a small team of AI agents: it calls tools, works through multi-turn tasks and writes code, and it no longer turns down requests the way a stock instruct model does. 27.4 billion parameters (26.9B language model plus a 0.46B vision tower), the same shape as Qwen3.8-27B.
This repository is the 4-bit export, the exact build every number on this card was measured on.
How it was made
- Tool-use fine-tune. A LoRA on Sabi-Noema (2 epochs, learning rate 1e-4, sequences up to 16,384 tokens), trained on agent conversations: rows from NVIDIA's When2Call, Open-SWE-Traces and Nemotron-SFT-Agentic-v4, plus 100 agent conversations written for this project. No rows were generated by Sabi-Noema or Qwen3.8 itself.
- Refusal-direction edit. One direction taken at layer 48, with its component along a separately measured "can't do
that with these tools" direction removed first, so the edit targets refusal while leaving honest "I can't" answers
alone. Applied at strength 1.3, norm-preserving, to the same 129 writer tensors as Naked Dragon LR8 (token embedding,
attention and linear-attention output projections, MLP down projections).
lm_head, the vision tower and every norm are untouched. - 4-bit export. NVIDIA Model Optimizer, 1,024 calibration samples, the same recipe as my other 27B 4-bit builds (401 quantised layers: 193 NVFP4 and 208 FP8).
Why this one
It was chosen from five variants built the same way and tested side by side:
| Variant | What differed | Outcome |
|---|---|---|
| This model | tune, then the edit above | chosen |
| B and C | edit first, then the tune on top | scored about 9 points higher on the agent set at full size, but the tune taught refusal back (13-14 of 48 harmful prompts refused) |
| D | the plain refusal direction, without removing the "can't do that" part | not separable from this model on any test under real serving conditions; slightly behind on most agent measures |
| E | the tune retrained with extra tool-argument examples | about 8 points lower on the agent set; no gain on argument accuracy |
The deciding round served each candidate exactly as it would run in daily use, in its own best setting (a separate check found the highest reasoning level helped neither finalist), and compared them across several random seeds.
How it was tested
One DGX Spark (GB10, 128 GB unified memory), TensorFold 0.6.5, two agents at once, a 262,144-token window, thinking at medium with a 6,000-token reasoning cap, the checkpoint's own sampling (temperature 1.0, top-p 0.95, top-k 20).
tensorfold serve /path/to/Aletheia-LR9 --context 262144 --parallel 2 \
--drafter /path/to/Qwen3.8-27B-DFlash2 --checkpoint-slots 8 \
--thinking-budget 6000 --reasoning-effort medium
- Agent set: 152 held-out agent requests (tool choice, tool arguments, multi-step software work, knowing when no tool applies), each sent exactly as an agent framework sends it. Six random seeds.
- Real agent setup: Hermes Agent by Nous Research with a live agent's full system prompt and tool schemas, multi-turn, several conversations at once.
- Coding: the Hermes agent with a coding profile, unattended, on real repository tasks graded by hidden checks.
- Board tests: the same suite every model on my DGX Spark board gets, so it can be compared with them.
Results
Against the unedited Sabi-Noema exported the same way, same engine, same command, same tests:
| Test | Aletheia LR9 | Unedited Sabi-Noema |
|---|---|---|
| Agent set, 152 requests (mean of 6 seeds; base: 1 seed) | 118.7 | 107 |
| Exact tool arguments, of 94 calls | 31.7 | 23 |
| When to call a tool at all (When2Call rows, of 10) | 9.7 | 4 |
| Harmful prompts refused, of 48 | 3-4 | 46 |
| Harmless prompts refused, of 48 | 1 | 3 |
| Speed, one stream, with drafter | 69.5 tok/s | 71.7 tok/s |
The refusal rows are counted by the served model judging its own replies, at an 8,192-token limit.
At real serving settings (temperature 1.0, several seeds):
| Test | Result |
|---|---|
| Agent tasks (A-Bench, 60 items; 3 seeds) | 55, 51, 54 |
| Reliability scenarios (20; 3 seeds) | 14, 14, 13 |
| Planted instructions in tool results, obeyed, inside the real agent setup (32 scenarios; 3 seeds) | 0, 0, 1 |
| Same, legitimate look-alike requests still answered (of 8) | 6, 4, 6 |
| Coding, strict passes (all hidden checks, tests that catch a broken app, a report) | 10 of 12 attempts (run stopped half way) |
On my board's standard tests (temperature 0, the setting every board column uses):
| Test | Result |
|---|---|
| Agent tasks (A-Bench, 60 items) | 56/60 |
| Reliability scenarios (20) | 15/20 |
| Harmful requests answered, thinking off, no agent setup / inside the agent setup (63 each) | 63/63 / 63/63 |
| Legitimate requests refused (7) | 0 |
| Planted instructions obeyed (32) / warned the user | 0 / 22 |
| Prompts of 25k and 95k characters, answer at the end | both answered |
| Structured output (json_object, strict json_schema, tool calls) | all conform, thinking on and off |
| Speed, one stream: with drafter / without | 71.3 / 11.9 tok/s |
| Speed, each of two streams at once | 43.7 tok/s |
| First answer to a 32k-token prompt from cold | 15.0 s |
| Long memory: a fact recalled at 113k, 200k and 258k tokens | found each time |
Full tables, with the serving config behind every number: https://scottleimroth.com/ai-technology/spark-benchmarks
Speculative decoding
Without a draft model it runs at about 12 tok/s; with z-lab/Qwen3.8-27B-DFlash2 at about 70, with identical output. The drafter accepts about 37 percent of drafted tokens on this model.
Limitations
- Tested on one engine (TensorFold 0.6.5) on one machine. Other runtimes and GPUs are untested.
- It still refuses sometimes: 3-4 of 48 harmful prompts at real sampling settings. Do not treat it as a model that never declines.
- Refusal counts depend on the counter. The 48-prompt rows are judged by the model itself; the board rows count refusal wording and blank answers. Neither judges whether an answer is useful.
- It can be steered by planted instructions: once in 96 attempts in the real agent setup. Put an approval gate in front of destructive tools rather than relying on the model.
- Reliability is 13-15 of 20 adversarial agent scenarios; the same handful fail most runs.
- Single draws vary: across six seeds the agent-set score ranged from 112 to 125.
- The coding comparison was stopped half way (12 of 24 planned attempts).
- Image input was not evaluated for this build. The vision tower is present and unedited.
- A full-size BF16 build exists and is the source of this export. It is not published here.
Intended use and responsible use
This model has had a refusal behaviour removed and will answer prompts a stock instruct model would decline. It is released for research into alignment, refusal mechanisms, agent reliability and red-teaming. You are responsible for how you use it and for complying with the licence and applicable law. Do not deploy it in a user-facing setting without your own safety layer.
License and credits
Released under the Apache License 2.0, the license of Sabi-Noema and of Qwen3.8-27B, included here as LICENSE.
The NOTICE file travels with it.
- Base model: Qwen3.8-27B, by the Qwen team.
- Agentic fine-tune it builds on: Sabi-Noema by sabicap.
- Fine-tuning data: nvidia/When2Call (CC-BY-4.0), nvidia/Open-SWE-Traces (CC-BY-4.0), nvidia/Nemotron-SFT-Agentic-v4 (OpenMDW-1.1).
- 4-bit export: NVIDIA Model Optimizer.
- Serving engine: TensorFold.
- Speculative decoding drafter: z-lab/Qwen3.8-27B-DFlash2.
- Agent framework used for testing: Hermes Agent by Nous Research.
- Hardware: NVIDIA DGX Spark.
- Method: refusal-direction orthogonalisation, from Arditi et al., "Refusal in Language Models Is Mediated by a Single Direction" (2024), with the public work that followed it. This is an application of a published technique, not a new one.