Nassila Sanad 9B

Full-text claim grounding · FT-6 · sole Sanad tier

License Base Format App

English full-text only · ship verdicts come from the verifier, not the model


What this is

Local GGUF for Sanad in Nassila: given a manuscript passage and source excerpts, the model returns structured JSON (claims, verdicts, verbatim quotes). The app’s deterministic verifier always owns the final ship decision.

Checkpoint FT-6 · QLoRA on l3_grounding_train_v119.jsonl
Focus Atomic / multi-claim splits (FT-5 gold was nearly always 1 claim/row)
Status Active sole tier — replaces FT-5 (v117)
Language English train + eval only (Arabic L3 not claimed yet)

Retired abstract-era siblings (legacy only): 12b · e4b


Download

Start here: nassila-sanad-9b-q4_k_m.gguf — best default for LM Studio / Nassila.

Two families, same FT-6 trunk:

Family Use when Naming
Default LM Studio, broad compatibility nassila-sanad-9b-q*.gguf
MTP llama-server speculative decode (--spec-type draft-mtp) nassila-sanad-9b-mtp-q*.gguf

Default files were converted with llama.cpp --no-mtp (no phantom MTP block). MTP files keep the real Qwen3.5 draft head — prefer a recent llama.cpp; LM Studio may not load them.

Default (no MTP)

Quant File ~Size Fits in
Q2_K …-q2_k.gguf 3.6 GB 4 GB VRAM / 8 GB RAM
Q3_K_M …-q3_k_m.gguf 4.3 GB 6 GB VRAM / 8 GB RAM
Q4_K_M …-q4_k_m.gguf 5.2 GB 8 GB VRAM / 12 GB RAM
Q5_K_M …-q5_k_m.gguf 6.0 GB 8 GB VRAM / 16 GB RAM
Q6_K …-q6_k.gguf 6.9 GB 10 GB+ VRAM
Q8_0 …-q8_0.gguf 8.9 GB 12 GB+ VRAM

MTP (speculative)

Quant File ~Size
Q2_K …-mtp-q2_k.gguf 3.9 GB
Q3_K_M …-mtp-q3_k_m.gguf 4.7 GB
Q4_K_M …-mtp-q4_k_m.gguf 5.8 GB
Q5_K_M …-mtp-q5_k_m.gguf 6.6 GB
Q6_K …-mtp-q6_k.gguf 7.6 GB
Q8_0 …-mtp-q8_0.gguf 9.8 GB

Tip: Nassila / LM Studio → default Q4_K_M. llama-server + MTP → mtp-Q4_K_M or mtp-Q6_K.


Quick start

Nassila (recommended)

1.8.0+ · Settings → Passage grounding → runner (LM Studio / Ollama / vLLM / Custom) → model nassila-sanad-9b.

Qwen3.5 thinks by default. Nassila handles that via no-thinking template guidance, max_tokens: 2048, and in-app stripQwenThinkingTraces.

One-liner (llama-server)

llama-server \
  -m nassila-sanad-9b-q4_k_m.gguf \
  --host 127.0.0.1 --port 1234 \
  --ctx-size 8192 --n-gpu-layers 99 \
  --jinja \
  --chat-template-file qwen3.5-no-thinking.jinja
Chat templateqwen3.5-no-thinking.jinja (required for clean JSON)

Without this, the model emits a thinking trace first and the JSON often truncates.

{% set enable_thinking = false %}
{%- for message in messages %}
{%- if message['role'] == 'system' %}
{{- '<|im_start|>system\n' + message['content'] + '<|im_end|>\n' }}
{%- elif message['role'] == 'user' %}
{{- '<|im_start|>user\n' + message['content'] + '<|im_end|>\n' }}
{%- elif message['role'] == 'assistant' %}
{{- '<|im_start|>assistant\n' + message['content'] + '<|im_end|>\n' }}
{%- endif %}
{%- endfor %}
{%- if add_generation_prompt %}
{{- '<|im_start|>assistant\n' }}
{%- endif %}

Also documented in the Nassila Sanad setup guide (llama.cpp tab).

Ollama

Needs Ollama 0.5+ and a public Hub repo:

ollama pull huggingface.co/QinEmPeRoR93/nassila-sanad-9b:Q4_K_M

If output truncates, add a Modelfile TEMPLATE that disables thinking, or use the llama-server path above.

MTP serve (llama-server)
llama-server \
  -m nassila-sanad-9b-mtp-q4_k_m.gguf \
  --host 127.0.0.1 --port 1234 \
  --ctx-size 8192 --n-gpu-layers 99 \
  --spec-type draft-mtp \
  --jinja \
  --chat-template-file qwen3.5-no-thinking.jinja

Output shape

Single JSON object, e.g.:

{
  "claims": [
    {
      "claim": "...",
      "verdict": "supported",
      "sourceQuotes": ["..."],
      "rationale": ["..."],
      "hasNumericClaim": false
    }
  ],
  "overallVerdict": "support",
  "overallRationale": ["..."]
}

Eval (FT-6 · seeds 42 / 43 / 44)

Means across three seeds. Soft vs written ≥0.99 bars noted where relevant.

Holdout Verdict / overall Parse Quote false_supported Notes
v2 (250 rows) 0.958 0.960 0.988 0.000 false_supported ↓ vs FT-5’s 0.046
Compound (93 multi-claim) 0.903 0.996 0.970 0.104 Split / exact 0.982 · omit 0.009 · bundle 0.018
v2 detail — per-verdict accuracy
Metric Mean
Verdict accuracy 0.958
JSON parse rate 0.960
Quote validity 0.988
false_supported 0.000
Supported 0.956
Contradicted 0.985
Not-in-source 1.000
Weak 0.800
Insufficient evidence 0.933

Soft vs ≥0.99: parse 0.96, quote 0.988.

Compound detail — multi-claim structure gates
Metric Mean
Multi-claim split rate 0.982
Exact atomic claim count 0.982
Bundled claim rate 0.018
Omitted claim rate 0.009
Overall verdict accuracy 0.903
JSON parse rate 0.996
Quote validity 0.970
false_supported 0.104

Structure gates (split / exact / omit / bundle / overall ≥ 0.90) pass. Treat compound false_supported and quote as soft — validate on private manuscripts.


Related artifacts

Artifact Link
Desktop app Nassila

Limitations
  • Advisory grounding only — ship verdicts always come from the deterministic verifier.
  • v2 parse / quote sit slightly under the written ≥0.99 bars; compound false_supported ~0.10.
  • Requires thinking off (enable_thinking=false or Nassila 1.8.0+ handling).
  • Not bundled in the Nassila installer.
  • English-only train/eval; Arabic L3 is unvalidated.
Base model & license

Sanad grounds · Nassila verifies

Downloads last month
584
GGUF
Model size
9B params
Architecture
qwen35
Hardware compatibility
Log In to add your hardware

2-bit

3-bit

4-bit

5-bit

6-bit

8-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for QinEmPeRoR93/nassila-sanad-9b

Finetuned
Qwen/Qwen3.5-9B
Quantized
(472)
this model