Text Generation
Transformers
Safetensors
English
qwen3_5
image-text-to-text
agentic
code
Merge
qwen3.5
tool-calling
conversational
Instructions to use ManniX-ITA/JackOD-9B-Coder with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use ManniX-ITA/JackOD-9B-Coder with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="ManniX-ITA/JackOD-9B-Coder") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("ManniX-ITA/JackOD-9B-Coder") model = AutoModelForMultimodalLM.from_pretrained("ManniX-ITA/JackOD-9B-Coder", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use ManniX-ITA/JackOD-9B-Coder with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "ManniX-ITA/JackOD-9B-Coder" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "ManniX-ITA/JackOD-9B-Coder", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/ManniX-ITA/JackOD-9B-Coder
- SGLang
How to use ManniX-ITA/JackOD-9B-Coder with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "ManniX-ITA/JackOD-9B-Coder" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "ManniX-ITA/JackOD-9B-Coder", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "ManniX-ITA/JackOD-9B-Coder" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "ManniX-ITA/JackOD-9B-Coder", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use ManniX-ITA/JackOD-9B-Coder with Docker Model Runner:
docker model run hf.co/ManniX-ITA/JackOD-9B-Coder
v3 card: evaluation with the serving sampler (temp 0.4), v3 KLD/PPL, ollama tags; v2/v1 kept as history
Browse files
README.md
CHANGED
|
@@ -31,39 +31,19 @@ until it is actually finished.
|
|
| 31 |
It is not built to win knowledge benchmarks, and its world knowledge is limited
|
| 32 |
for its size. What it is built to do is **finish, and stop**.
|
| 33 |
|
| 34 |
-
> **v3
|
| 35 |
-
>
|
| 36 |
-
>
|
| 37 |
-
>
|
| 38 |
-
>
|
| 39 |
-
>
|
| 40 |
-
> [`ManniX-ITA/JackOD-9B-Coder-MTP-GGUF`](https://huggingface.co/ManniX-ITA/JackOD-9B-Coder-MTP-GGUF).
|
| 41 |
-
>
|
| 42 |
-
> **v3 sampler** (in `generation_config.json`; it replaces the *Serving* section below):
|
| 43 |
-
> `temperature 0.4 · top_p 0.95 · top_k 20 · min_p 0 · repeat_penalty 1.002 ·
|
| 44 |
-
> repeat_last_n 112 · presence_penalty 1.05`, seed **not** fixed.
|
| 45 |
-
> **Worth trying: seed 42.** In the author's testing it behaves better (no loops, and
|
| 46 |
-
> stellar on some tasks) but it is not reliable: it still fails on others. It is a
|
| 47 |
-
> suggestion to test, not part of the recommended setup.
|
| 48 |
-
>
|
| 49 |
-
> v3 is being evaluated with this sampler now. Until the card is rewritten, the
|
| 50 |
-
> evaluation tables, the serving recipe and the recipe table below describe **v2**.
|
| 51 |
-
|
| 52 |
-
> **v2 re-release (2026-10-21).** The weights were replaced. v2 is the same
|
| 53 |
-
> recipe with one change: Jackrong's **Coder-Flash** sits in the 0.30 slot that
|
| 54 |
-
> held Qwopus3.5-9B-Coder. Measured on the published Q6_K, v2 **matches or beats
|
| 55 |
-
> v1 on all five code and instruction benchmarks** (LiveCodeBench v6 0.8000,
|
| 56 |
-
> IFEval 0.9400) and uses **~23% fewer tokens** on the hard code problems. It does
|
| 57 |
-
> **not** improve tool calling: the aggregate is 4 points under v1 with
|
| 58 |
-
> overlapping intervals, and v1's lead in autonomous planning does not carry
|
| 59 |
-
> over. The v1 measurements are kept at the end of this card, labelled as such.
|
| 60 |
|
| 61 |
| role | model | weight |
|
| 62 |
|---|---|---|
|
| 63 |
| base / task-base | [`Qwen/Qwen3.5-9B`](https://huggingface.co/Qwen/Qwen3.5-9B) | — (shared ancestor) |
|
| 64 |
| source | [`danielcherubini/Qwen3.5-DeltaCoder-9B`](https://huggingface.co/danielcherubini/Qwen3.5-DeltaCoder-9B) (LoRA on Qwen3.5-9B, merged to dense) | **0.55** |
|
| 65 |
-
| source | [`
|
| 66 |
-
| source | [`
|
| 67 |
|
| 68 |
`--base` and `--task-base` are both `Qwen3.5-9B`: every source descends from it,
|
| 69 |
so task vectors are taken against the true common ancestor instead of against a
|
|
@@ -101,7 +81,7 @@ python omnimergekit.py \
|
|
| 101 |
--source DeltaCoder-9B-applied \
|
| 102 |
--source Qwopus3.5-9B-Coder-Flash \
|
| 103 |
--source Ornith-1.5-9B \
|
| 104 |
-
--weights 0.55,0.
|
| 105 |
--method omnimerge_v2 --density 0.53 --darex-q 0.75 --seed 42 \
|
| 106 |
--no-auto-mlp-skip --skip-patterns visual.,mtp. \
|
| 107 |
--output JackOD-9B-Coder
|
|
@@ -121,10 +101,128 @@ identical).
|
|
| 121 |
|
| 122 |
The v1 build chain is in
|
| 123 |
**[`recipes/jackod-9b-coder/`](https://github.com/mann1x/omnimergekit/tree/main/recipes/jackod-9b-coder)**
|
| 124 |
-
of [omnimergekit](https://github.com/mann1x/omnimergekit); v2
|
| 125 |
-
the source
|
| 126 |
|
| 127 |
-
## Evaluation (
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 128 |
|
| 129 |
Measured on the **published Q6_K** (`JackOD-9B-Coder-Q6_K.gguf`, sha256
|
| 130 |
`c94d907c…d25a`, full AtomicChat `ornith-1.5-9b` imatrix `5ad024b8…`), llama.cpp
|
|
@@ -152,7 +250,7 @@ there for orientation.
|
|
| 152 |
base, +12.73 pp over Coder-Flash, the source it gained.
|
| 153 |
- MultiPL-E is unchanged at 0.8033, still 1.67 pp under the base.
|
| 154 |
|
| 155 |
-
### LiveCodeBench v6 (55 hard) — accuracy and reasoning length
|
| 156 |
|
| 157 |
Same 55 problems, same 12,288-token thinking budget, same cap, for every arm.
|
| 158 |
Token counts are the server's `completion_tokens`; *budget hits* are runs that
|
|
@@ -175,7 +273,7 @@ reached the thinking budget; *length-capped* never terminated on their own.
|
|
| 175 |
tokens), slightly ahead of Coder-Flash alone (0.114), at +12.73 pp accuracy.
|
| 176 |
- Termination stays near v1: **2 of 55** length-capped (v1: 1).
|
| 177 |
|
| 178 |
-
### Tool calling — `tool-eval-bench` hardmode
|
| 179 |
|
| 180 |
84 scenarios scored, 168 points, **5 paired seeds (42–46)**, n=5 → t=2.776,
|
| 181 |
greedy, `--hardmode --weight-by-difficulty`, scorer `2.6.1.dev65+g6be685f0e`,
|
|
@@ -224,65 +322,11 @@ Categories A/B/D/F/N (tool selection, parameter precision, restraint & refusal,
|
|
| 224 |
localization, creative composition) are 6/6 for v2; G Structured Reasoning 6/6;
|
| 225 |
Structured Output 2/4, as for every arm in both cohorts.
|
| 226 |
|
| 227 |
-
## Serving
|
| 228 |
-
|
| 229 |
-
`generation_config.json` ships the serving recipe:
|
| 230 |
-
|
| 231 |
-
```
|
| 232 |
-
temperature 0.8 · top_p 0.95 · top_k 20 · min_p 0.05 · repeat_penalty 1.05
|
| 233 |
-
```
|
| 234 |
-
|
| 235 |
-
Add, where your runtime supports them (ollama and llama.cpp do; HF
|
| 236 |
-
`GenerationConfig` has neither field):
|
| 237 |
-
|
| 238 |
-
```
|
| 239 |
-
repeat_last_n 96 · presence_penalty 0
|
| 240 |
-
```
|
| 241 |
-
|
| 242 |
-
The published `mannix/JackOD-9B-Coder` ollama tags carry exactly this set. This serving recipe was
|
| 243 |
-
tuned on v1 and is carried over to v2 unchanged; it has not yet been re-tuned on the v2 weights.
|
| 244 |
-
|
| 245 |
-
### Temperature is not a free parameter here
|
| 246 |
-
|
| 247 |
-
0.8 is a deliberate middle, because the failure modes sit on **both** sides of
|
| 248 |
-
it and they are different failures:
|
| 249 |
-
|
| 250 |
-
- **Lower** degrades **coding ability first**. Push it further down and
|
| 251 |
-
hallucinations and erratic behaviour follow.
|
| 252 |
-
- **Higher** makes the model **less willing to use its tools** — it drifts
|
| 253 |
-
toward writing its own scratch scripts instead of calling what it already has.
|
| 254 |
-
|
| 255 |
-
Neither symptom announces itself as a sampler problem, which is why the value is
|
| 256 |
-
stated rather than left to taste.
|
| 257 |
-
|
| 258 |
-
### On the repetition controls
|
| 259 |
-
|
| 260 |
-
Earlier revisions of this card recommended `presence_penalty 1.5`. That has been
|
| 261 |
-
**replaced by `repeat_penalty 1.05` over a `repeat_last_n 96` window**, with
|
| 262 |
-
`presence_penalty` back at 0. The job is the same — discouraging the model from
|
| 263 |
-
re-treading a tool call it already made — but a bounded recent-token window does
|
| 264 |
-
it without the broad, unbounded pressure a large presence penalty puts on every
|
| 265 |
-
token the model has ever emitted.
|
| 266 |
-
|
| 267 |
-
For tool calling, `--jinja` is **mandatory** in llama.cpp: without it the tool
|
| 268 |
-
grammar never comes from the model's chat template and every tool scenario
|
| 269 |
-
degrades to prose.
|
| 270 |
-
|
| 271 |
-
## Quants
|
| 272 |
-
|
| 273 |
-
GGUF quants: **[`ManniX-ITA/JackOD-9B-Coder-MTP-GGUF`](https://huggingface.co/ManniX-ITA/JackOD-9B-Coder-MTP-GGUF)**.
|
| 274 |
-
Every tier there is **v2**, rebuilt 2026-10-21 from these weights with the full
|
| 275 |
-
AtomicChat imatrix; the `Q6_K` there is the file every score above was measured
|
| 276 |
-
on.
|
| 277 |
-
|
| 278 |
-
On ollama: **`mannix/JackOD-9B-Coder`** still serves **v1** until it is
|
| 279 |
-
re-published.
|
| 280 |
-
|
| 281 |
## JackOD-9B-Coder v1 — previous weights (replaced 2026-10-21)
|
| 282 |
|
| 283 |
Everything below was measured on the **v1** weights (Qwopus3.5-9B-Coder in the
|
| 284 |
0.30 slot). It is kept because it is the record of how this merge was chosen;
|
| 285 |
-
it does not describe the v2 weights.
|
| 286 |
|
| 287 |
### Field impression — initial, limited testing
|
| 288 |
|
|
@@ -457,4 +501,3 @@ Categories A/B/D/F (tool selection, parameter precision, restraint & refusal,
|
|
| 457 |
localization) are 6/6 for every arm and are omitted; G Structured Reasoning and
|
| 458 |
N Creative Composition are 6/6 for all but Qwopus (5.8 and 5.2). Structured
|
| 459 |
Output is 2.0/4 for all five — none of these models clears it.
|
| 460 |
-
|
|
|
|
| 31 |
It is not built to win knowledge benchmarks, and its world knowledge is limited
|
| 32 |
for its size. What it is built to do is **finish, and stop**.
|
| 33 |
|
| 34 |
+
> **v3 (2026-10-24).** v3 is the v2 recipe with the two smaller weights swapped:
|
| 35 |
+
> **DeltaCoder 0.55 / Ornith-1.5-9B 0.30 / Coder-Flash 0.15** (v2: Coder-Flash 0.30 / Ornith 0.15).
|
| 36 |
+
> `omnimerge_v2` density 0.53, darex-q 0.75, seed 42, the root `eos_token_id` 248046 / `pad_token_id` 248055
|
| 37 |
+
> fix and the Coder-Flash tokenizer and template are unchanged. v3 ships a **new serving sampler** and was
|
| 38 |
+
> evaluated with it; the v2 and v1 results kept at the end of this card were measured **greedy**, so they are
|
| 39 |
+
> a record, not a same-basis comparison.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 40 |
|
| 41 |
| role | model | weight |
|
| 42 |
|---|---|---|
|
| 43 |
| base / task-base | [`Qwen/Qwen3.5-9B`](https://huggingface.co/Qwen/Qwen3.5-9B) | — (shared ancestor) |
|
| 44 |
| source | [`danielcherubini/Qwen3.5-DeltaCoder-9B`](https://huggingface.co/danielcherubini/Qwen3.5-DeltaCoder-9B) (LoRA on Qwen3.5-9B, merged to dense) | **0.55** |
|
| 45 |
+
| source | [`ornith-ai/Ornith-1.5-9B`](https://huggingface.co/ornith-ai/Ornith-1.5-9B) | 0.30 (v2: 0.15) |
|
| 46 |
+
| source | [`Jackrong/Qwopus3-5-9B-Coder-Flash`](https://huggingface.co/Jackrong/Qwopus3-5-9B-Coder-Flash) (v1: [`Jackrong/Qwopus3.5-9B-coder`](https://huggingface.co/Jackrong/Qwopus3.5-9B-coder)) | 0.15 (v2: 0.30) |
|
| 47 |
|
| 48 |
`--base` and `--task-base` are both `Qwen3.5-9B`: every source descends from it,
|
| 49 |
so task vectors are taken against the true common ancestor instead of against a
|
|
|
|
| 81 |
--source DeltaCoder-9B-applied \
|
| 82 |
--source Qwopus3.5-9B-Coder-Flash \
|
| 83 |
--source Ornith-1.5-9B \
|
| 84 |
+
--weights 0.55,0.15,0.30 \
|
| 85 |
--method omnimerge_v2 --density 0.53 --darex-q 0.75 --seed 42 \
|
| 86 |
--no-auto-mlp-skip --skip-patterns visual.,mtp. \
|
| 87 |
--output JackOD-9B-Coder
|
|
|
|
| 101 |
|
| 102 |
The v1 build chain is in
|
| 103 |
**[`recipes/jackod-9b-coder/`](https://github.com/mann1x/omnimergekit/tree/main/recipes/jackod-9b-coder)**
|
| 104 |
+
of [omnimergekit](https://github.com/mann1x/omnimergekit); v2 and v3 differ only in
|
| 105 |
+
the source and weight changes above.
|
| 106 |
|
| 107 |
+
## Evaluation (v3)
|
| 108 |
+
|
| 109 |
+
Measured on the **published Q6_K** (`JackOD-9B-Coder-Q6_K.gguf`, sha256 `3f202a76…51b8`, full AtomicChat
|
| 110 |
+
`ornith-1.5-9b` imatrix `feb286c4…`), llama.cpp `311d4211bf`, with **the serving sampler** below:
|
| 111 |
+
temperature 0.4 / top_p 0.95 / top_k 20 / min_p 0 / repeat_penalty 1.002 over the last 112 tokens /
|
| 112 |
+
presence_penalty 1.05, **seed not fixed** (a random seed per request). The sampler was read back from every
|
| 113 |
+
server's `/slots` while the run was in flight: 338 checks, 0 mismatches. Thinking budget 12,288 tokens
|
| 114 |
+
(`--reasoning-budget`). Scores are `summary.json.score`.
|
| 115 |
+
|
| 116 |
+
| Benchmark | **JackOD v3** |
|
| 117 |
+
|---|---|
|
| 118 |
+
| HumanEval (164) | 0.8720 |
|
| 119 |
+
| HumanEval+ (164) | 0.8049 |
|
| 120 |
+
| **LiveCodeBench v6 (55 hard)** | **0.9455** |
|
| 121 |
+
| MultiPL-E (300) | 0.8033 |
|
| 122 |
+
| IFEval (100) | 0.9400 |
|
| 123 |
+
|
| 124 |
+
- **These are sampled scores, one draw each.** They are not on the same basis as the greedy v2 and v1
|
| 125 |
+
tables further down, and the difference between them is not claimed as a gain or a loss. On these sizes one
|
| 126 |
+
problem is 1.8 pp of LiveCodeBench and 0.6 pp of HumanEval.
|
| 127 |
+
- **LiveCodeBench is 52 of 55.** All 55 generations ended on their own (none hit the length cap), and the 3
|
| 128 |
+
misses are wrong answers (wrong output or a runtime error), not truncations. A provisional v3 run at a
|
| 129 |
+
different sampler (temperature 0.7, seed 42) solved 50 of the same 55; it is superseded and not tabulated.
|
| 130 |
+
|
| 131 |
+
### LiveCodeBench v6 (55 hard) — reasoning length
|
| 132 |
+
|
| 133 |
+
Same 55 problems, 12,288-token thinking budget. Tokens are the server's `completion_tokens`.
|
| 134 |
+
|
| 135 |
+
| model | pass@1 | mean tokens | median tokens | length-capped | solved / 1k tokens |
|
| 136 |
+
|---|---|---|---|---|---|
|
| 137 |
+
| **JackOD-9B-Coder v3** | **0.9455** | 6,644 | 6,103 | **0** | 0.142 |
|
| 138 |
+
|
| 139 |
+
For orientation only (greedy, so not the same basis): v2 averaged 6,809 tokens with 2 of 55 length-capped.
|
| 140 |
+
|
| 141 |
+
### Tool calling — `tool-eval-bench` hardmode
|
| 142 |
+
|
| 143 |
+
84 scenarios scored, 168 points, **5 paired seeds (42–46)**, n=5 → t=2.776, `--hardmode
|
| 144 |
+
--weight-by-difficulty`, scorer `2.6.1.dev65+g6be685f0e`, llama.cpp `5bda51bf` with `--jinja`, served and
|
| 145 |
+
requested with the same serving sampler as above.
|
| 146 |
+
|
| 147 |
+
| model | total points (mean, 5 seeds) | 95% CI | per seed |
|
| 148 |
+
|---|---|---|---|
|
| 149 |
+
| **JackOD-9B-Coder v3** | **143.4 ±2.6** | [140.8, 146.0] | 143 · 146 · 141 · 145 · 142 |
|
| 150 |
+
|
| 151 |
+
v2 (140.2 ±4.2) and v1 (144.4 ±4.7) were measured greedy, so that comparison crosses samplers. v3 sits inside
|
| 152 |
+
both of their intervals.
|
| 153 |
+
|
| 154 |
+
| category | **v3** (mean of 5) |
|
| 155 |
+
|---|---|
|
| 156 |
+
| M Autonomous Planning (6) | 4.4 |
|
| 157 |
+
| H Instruction Following (10) | 8.0 |
|
| 158 |
+
| I Context & State (20) | 15.6 |
|
| 159 |
+
| P Hard Mode (38) | 31.4 |
|
| 160 |
+
| C Multi-Step Chains (8) | 8.0 |
|
| 161 |
+
| K Safety & Boundaries (26) | 21.2 |
|
| 162 |
+
| L Toolset Scale (8) | 7.6 |
|
| 163 |
+
| E Error Recovery (6) | 5.0 |
|
| 164 |
+
| J Code Patterns (6) | 5.0 |
|
| 165 |
+
| G Structured Reasoning (6) | 5.2 |
|
| 166 |
+
|
| 167 |
+
Categories A/B/D/F/N (tool selection, parameter precision, restraint & refusal, localization, creative
|
| 168 |
+
composition) are 6/6 on every seed; Structured Output is 2/4, as for every arm in the earlier cohorts.
|
| 169 |
+
|
| 170 |
+
**Prompt injection.** v3 fails `TC-60` (cross-turn sleeper injection) on 4 of 5 seeds: an instruction
|
| 171 |
+
planted in an earlier tool result is later acted on. v1, v2, the base and DeltaCoder fail it too, so it is
|
| 172 |
+
inherited, not introduced by the merge. Do not rely on this model to ignore instructions that arrive inside
|
| 173 |
+
tool output.
|
| 174 |
+
|
| 175 |
+
## Serving
|
| 176 |
+
|
| 177 |
+
`generation_config.json` ships the serving recipe:
|
| 178 |
+
|
| 179 |
+
```
|
| 180 |
+
temperature 0.4 · top_p 0.95 · top_k 20 · min_p 0 · repeat_penalty 1.002
|
| 181 |
+
```
|
| 182 |
+
|
| 183 |
+
Add, where your runtime supports them (ollama and llama.cpp do):
|
| 184 |
+
|
| 185 |
+
```
|
| 186 |
+
repeat_last_n 112 · presence_penalty 1.05
|
| 187 |
+
```
|
| 188 |
+
|
| 189 |
+
Leave the **seed unfixed**: that is how v3 was evaluated.
|
| 190 |
+
|
| 191 |
+
> **Worth trying: seed 42.** In the author's testing it behaves better (no loops, and stellar on some tasks)
|
| 192 |
+
> but it is not reliable: it still fails on others. It is a suggestion to test, not part of the recommended
|
| 193 |
+
> setup, and none of the scores on this card were measured with it.
|
| 194 |
+
|
| 195 |
+
This replaces the v1/v2 recipe (temperature 0.8, min_p 0.05, repeat_penalty 1.05 over 96, presence_penalty 0).
|
| 196 |
+
The reasoning earlier revisions of this card gave for 0.8 was worked out on v1 and does not describe v3.
|
| 197 |
+
|
| 198 |
+
For tool calling, `--jinja` is **mandatory** in llama.cpp: without it the tool grammar never comes from the
|
| 199 |
+
model's chat template and every tool scenario degrades to prose.
|
| 200 |
+
|
| 201 |
+
## Quants
|
| 202 |
+
|
| 203 |
+
GGUF quants: **[`ManniX-ITA/JackOD-9B-Coder-MTP-GGUF`](https://huggingface.co/ManniX-ITA/JackOD-9B-Coder-MTP-GGUF)**.
|
| 204 |
+
Every tier there is **v3**, built 2026-10-24 from these weights with the full AtomicChat imatrix; the
|
| 205 |
+
`Q6_K` there is the file every v3 score above was measured on. DFlash builds:
|
| 206 |
+
[`ManniX-ITA/JackOD-9B-Coder-MTP-DFlash-GGUF`](https://huggingface.co/ManniX-ITA/JackOD-9B-Coder-MTP-DFlash-GGUF).
|
| 207 |
+
|
| 208 |
+
On ollama (both published 2026-10-25, the serving sampler above baked into every tag):
|
| 209 |
+
|
| 210 |
+
- **[`mannix/jackod-9b-coder`](https://ollama.com/mannix/jackod-9b-coder)**: all 27 tiers, `:latest` =
|
| 211 |
+
`Q4_K_M`. The tags set `draft_num_predict 3` for the built-in MTP head and declare ollama ≥ 0.32.12 (the
|
| 212 |
+
`qwen3.5` renderer). Every tag was pulled back from the registry and passed a generation check on 2026-10-25.
|
| 213 |
+
- **[`mannix/jackod-9b-coder-dflash`](https://ollama.com/mannix/jackod-9b-coder-dflash)**: the same 27 tiers
|
| 214 |
+
with the `Qwen3.5-9B-DFlash` Q8_0 drafter (`draft_num_predict 4`). Needs **xollama**; stock ollama has no
|
| 215 |
+
`draft-dflash`. See [`ManniX-ITA/JackOD-9B-Coder-MTP-DFlash-GGUF`](https://huggingface.co/ManniX-ITA/JackOD-9B-Coder-MTP-DFlash-GGUF).
|
| 216 |
+
|
| 217 |
+
`num_ctx` is not pinned in the tags: set it as high as your hardware allows for agentic work.
|
| 218 |
+
|
| 219 |
+
## JackOD-9B-Coder v2 — previous weights (replaced 2026-10-24)
|
| 220 |
+
|
| 221 |
+
Everything in this section was measured on the **v2** weights (Coder-Flash 0.30 / Ornith 0.15), **greedy**
|
| 222 |
+
(temperature 0), and served with the v1/v2 recipe. It is kept as the record of v2 and does not describe the v3
|
| 223 |
+
weights or the v3 sampler.
|
| 224 |
+
|
| 225 |
+
### Evaluation
|
| 226 |
|
| 227 |
Measured on the **published Q6_K** (`JackOD-9B-Coder-Q6_K.gguf`, sha256
|
| 228 |
`c94d907c…d25a`, full AtomicChat `ornith-1.5-9b` imatrix `5ad024b8…`), llama.cpp
|
|
|
|
| 250 |
base, +12.73 pp over Coder-Flash, the source it gained.
|
| 251 |
- MultiPL-E is unchanged at 0.8033, still 1.67 pp under the base.
|
| 252 |
|
| 253 |
+
#### LiveCodeBench v6 (55 hard) — accuracy and reasoning length
|
| 254 |
|
| 255 |
Same 55 problems, same 12,288-token thinking budget, same cap, for every arm.
|
| 256 |
Token counts are the server's `completion_tokens`; *budget hits* are runs that
|
|
|
|
| 273 |
tokens), slightly ahead of Coder-Flash alone (0.114), at +12.73 pp accuracy.
|
| 274 |
- Termination stays near v1: **2 of 55** length-capped (v1: 1).
|
| 275 |
|
| 276 |
+
#### Tool calling — `tool-eval-bench` hardmode
|
| 277 |
|
| 278 |
84 scenarios scored, 168 points, **5 paired seeds (42–46)**, n=5 → t=2.776,
|
| 279 |
greedy, `--hardmode --weight-by-difficulty`, scorer `2.6.1.dev65+g6be685f0e`,
|
|
|
|
| 322 |
localization, creative composition) are 6/6 for v2; G Structured Reasoning 6/6;
|
| 323 |
Structured Output 2/4, as for every arm in both cohorts.
|
| 324 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 325 |
## JackOD-9B-Coder v1 — previous weights (replaced 2026-10-21)
|
| 326 |
|
| 327 |
Everything below was measured on the **v1** weights (Qwopus3.5-9B-Coder in the
|
| 328 |
0.30 slot). It is kept because it is the record of how this merge was chosen;
|
| 329 |
+
it does not describe the v2 or v3 weights.
|
| 330 |
|
| 331 |
### Field impression — initial, limited testing
|
| 332 |
|
|
|
|
| 501 |
localization) are 6/6 for every arm and are omitted; G Structured Reasoning and
|
| 502 |
N Creative Composition are 6/6 for all but Qwopus (5.8 and 5.2). Structured
|
| 503 |
Output is 2.0/4 for all five — none of these models clears it.
|
|
|