You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Rework Model Guide to reflect eval findings; fix README model reference
- Lead with Ministral-8B Reasoning as the honest top recommendation
- Reframe 8B > 14B as a core finding, not an exception
- Add backend comparison using Mistral Nemo (7%–83% swing from paper)
- Align key findings with ACM paper (5 findings)
- Note model availability differences across backends (GGUF > Ollama > Llamafile)
- README llama-server snippet now uses Reasoning instead of Instruct
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Add venv activation step to README install instructions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix smoke test CLI flags in BACKEND_SETUP (--scenario, add --model)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Add IEEE preprint PDF to docs for timestamp provenance
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/MODEL_GUIDE.md
+54-34Lines changed: 54 additions & 34 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,17 @@
2
2
3
3
Which model and backend to use with forge, based on your hardware and goals.
4
4
5
-
All numbers from forge's eval harness: 29 scenarios × 50 runs per config, measured 2026-03-12. Full guardrail stack ("reforged") unless noted. See [EVAL_GUIDE.md](EVAL_GUIDE.md) for methodology.
5
+
All numbers from forge's eval harness: 9 scenarios × 50 runs per config, measured 2026-03-12. Full guardrail stack ("reforged") unless noted. See [EVAL_GUIDE.md](EVAL_GUIDE.md) for methodology and the [paper](https://doi.org/XXXXXXX.XXXXXXX) for full analysis.
6
+
7
+
---
8
+
9
+
## The Short Answer
10
+
11
+
**Ministral-8B Reasoning Q4_K_M on llama-server (native FC)** — 99.3% score, 3.7s per workflow, 4.8 GB weights, runs on any 8GB+ GPU.
12
+
13
+
This is an 8-billion-parameter model running on consumer hardware, scoring within 1 percentage point of frontier APIs (Claude Sonnet/Opus at 100%). It outperforms every 14B model tested, and it outperforms frontier APIs *without* forge guardrails (the best a consumer can achieve through API alone).
14
+
15
+
If you want the simplest possible setup and don't need the absolute best score, **Ministral-8B Instruct Q4_K_M on Ollama** gets you 91–95% with zero server management.
6
16
7
17
---
8
18
@@ -12,50 +22,45 @@ All numbers from forge's eval harness: 29 scenarios × 50 runs per config, measu
12
22
|------|-------|---------|-------|-------|
13
23
|**Maximum reliability**| Claude Sonnet 4.6 | Anthropic API | 100.0% | 6.5s |
You can run 8B-class models at Q4_K_M, or 8B at Q8_0 if VRAM is fully available.
35
+
8B-class models at Q4_K_M are the sweet spot — they fit comfortably in 8GB VRAM and deliver the best scores in the eval suite. Having more VRAM doesn't mean you should use a bigger model (see [Key Findings](#key-findings)).
27
36
28
37
| Model | Backend | Mode | Score | Notes |
29
38
|-------|---------|------|-------|-------|
30
-
| Ministral-8B Reasoning Q4_K_M | llama-server | Native | 99.3% | Best overall value |
**Recommendation:** Ministral-8B Reasoning on llama-server native. At 99.3% it rivals frontier models.
37
44
38
45
### 12–16GB VRAM
39
46
40
-
Room for 14B-class models at Q4_K_M (~8.2GB weights + KV cache headroom).
47
+
You *can* run 14B models, but the data shows 8B Reasoning outperforms 14B variants of the same family. The extra VRAM is better spent on larger context windows (via `-c` flag) than bigger models.
**Recommendation:**Haiku for cost-sensitive workloads (99.6% at 4.0s). Sonnet or Opus if you need the last 0.4%.
63
+
Haiku for cost-sensitive workloads. Sonnet or Opus if you need the last 0.4%.
59
64
60
65
---
61
66
@@ -70,30 +75,45 @@ These models work but fail too often for production-grade agentic workflows.
70
75
71
76
---
72
77
73
-
## Backend Comparison
78
+
## The Backend Matters More Than You Think
79
+
80
+
The same model weights can produce dramatically different results depending on the serving backend. This is a hidden variable that no published benchmark we are aware of controls for.
74
81
75
-
Same model, different backends — how much does the backend matter?
82
+
| Model | Backend/Mode | Score | Notes |
83
+
|-------|-------------|-------|-------|
84
+
| Mistral Nemo 12B | Llamafile (prompt) | 82.6% | Best result for this model |
85
+
| Mistral Nemo 12B | llama-server (prompt) | 75.0% | Same weights, different backend |
-**llama-server vs Ollama:** 2–4% gap on the same model. llama-server wins on raw performance; Ollama wins on ease of use.
85
-
-**Native vs prompt-injected FC:**~1–2% gap. Smaller than expected — forge's prompt-injection fallback is effective.
86
-
-**Llamafile:** Viable for portability but limited to prompt-injected mode. Best with Mistral Nemo.
97
+
-**llama-server native is the best backend for most models** — but not all. Qwen3 and Nemo perform *worse* with native FC on llama-server than with prompt-injected or Ollama.
98
+
-**Always test your specific model/backend combination.** Don't assume native FC is better than prompt-injected — it depends on the model's training and the backend's template handling.
99
+
-**Forge's prompt-injection fallback is effective.** The gap between native and prompt-injected is often small (1–2%), and sometimes prompt wins.
100
+
-**Model availability varies by backend.** llama-server (via GGUF files from HuggingFace) has the widest model selection — any model with a GGUF release works, at any quantization. Ollama's registry is convenient but lags behind and is missing key models (including Ministral-8B Reasoning, the top self-hosted pick). Llamafile has the most limited selection and tends to trail further behind new releases. If you want access to the latest models, start with llama-server + GGUF.
87
101
88
102
---
89
103
90
104
## Key Findings
91
105
92
-
1.**Forge guardrails matter.** The full guardrail stack adds 10–55% accuracy depending on the model. Claude Haiku drops from 99.6% → 43.8% without them.
93
-
2.**Ministral is the sweet spot.** The 8B Reasoning variant at 99.3% rivals frontier API models while running on consumer hardware.
94
-
3.**Backend choice is secondary.** The model matters far more than the backend — the same model scores within 2–4% across backends.
95
-
4.**Speed varies widely.** Ministral models cluster at 2.5–4.6s per workflow. Qwen3 is 4–5× slower (14–20s) despite competitive accuracy.
96
-
5.**Quantization impact is minimal.** Q4_K_M vs Q8_0 on the same model: <1% score difference in most cases.
106
+
1.**Guardrails matter more than model size.** Forge's guardrail stack adds 10–55% accuracy depending on the model. Claude Haiku drops from 99.6% → 43.8% without them. An 8B model *with* forge outperforms frontier APIs *without* forge.
107
+
108
+
2.**Bigger is not better.** Ministral-8B Reasoning (99.3%) outperforms Ministral-14B Reasoning (95.7%) and Ministral-14B Instruct (98.8%). Qwen3-8B outperforms Qwen3-14B by up to 5.5% depending on backend. Reasoning-oriented fine-tuning at 8B produces better tool-calling discipline than scale alone at 14B.
109
+
110
+
3.**The serving backend is a hidden variable.** The same weights produce 7% on one backend and 83% on another. Backend choice can swing accuracy more than model choice. Any evaluation that doesn't specify the backend may be producing misleading results.
111
+
112
+
4.**Error recovery is an architectural gap, not a capability gap.** Error recovery scores 0% for *every* model tested — local and frontier — without forge's retry mechanism. No model can self-correct from tool errors without a framework feeding errors back.
113
+
114
+
5.**Quantization impact is minimal.** Q4_K_M vs Q8_0 on the same model: <1% score difference in most cases. Use Q4_K_M.
115
+
116
+
6.**Speed varies widely.** Ministral models cluster at 2.5–4.6s per workflow. Qwen3 is 4–5× slower (14–20s) despite competitive accuracy.
0 commit comments