darioooooo0o/Spark-X2.5-1.7B-Abliterated-GGUF overview
Spark X2.5 1.7B Abliterated GGUF X https://img.shields.io/badge/X Follow 000000?logo=x&logoColor=white https://x.com/imdariotoo Requests, questions or suggesti…
Runs locally from ~1.08 GB disk (4 GB VRAM class GPUs with llama.cpp / guIDE).
Repository Files & Downloads
Model Details
| Model ID | darioooooo0o/Spark-X2.5-1.7B-Abliterated-GGUF |
|---|---|
| Author | darioooooo0o |
| Pipeline | text-generation |
| License | apache-2.0 |
| Base model | XHToken/Spark-X2.5-1.7B |
| Last modified | 2026-09-03T12:04:23.000Z |
Model README
---
license: apache-2.0
tags:
- abliterated
- uncensored
- gguf
- spark
- reasoning
base_model: XHToken/Spark-X2.5-1.7B
pipeline_tag: text-generation
---
Spark-X2.5-1.7B-Abliterated-GGUF

Requests, questions or suggestions? Message me on X: https://x.com/imdariotoo
Uncensored community quants of XHToken/Spark-X2.5-1.7B,
produced by single-round rank-1 refusal-direction ablation (heretic) over a balanced
6292-prompt multilingual pool. Trial 33 of a 50-trial Optuna search.
Base model card, architecture notes and serving instructions live in the sibling repo
darioooooo0o/Spark-X2.5-1.7B-GGUF — this README covers only what the ablation changed
and how it was measured.
Files
| file | size | notes |
|---|---|---|
| Spark-X2.5-1.7B-Abliterated-Q8_0.gguf | ~1.8 GB | max quality |
| Spark-X2.5-1.7B-Abliterated-Q6_K.gguf | ~1.4 GB | recommended daily driver |
| Spark-X2.5-1.7B-Abliterated-Q4_K_M.gguf | ~1.0 GB | smaller cards |
| Spark-X2.5-1.7B-Abliterated-IQ4_XS.gguf | ~0.9 GB | smallest |
All quants built with imatrix calibration from the same BF16 merge. Serve with the
Spark fork of llama.cpp (spark2_5 arch) and f16 KV cache:
llama-server -m <gguf> --chat-template-file chat_template.jinja \
--host 127.0.0.1 --port 12450 -c 65536 -n 4096 -ngl 99 \
-fa on -ctk f16 -ctv f16 --temp 1.0 --top-p 0.95 --top-k -1 \
--reasoning-budget 2000 --jinja --reasoning-format deepseek
--reasoning-budget is load-bearing, not optional: median thinking length is 1500+
tokens and the tail exceeds 4000. Unbounded reasoning will eat your context.
Refusal results
Headline: **0 refusals in 300 sealed generations + 37 answer-level generations,
eye-audited** (base model: 186/300 refused on the same prompts).
Sealed sets (never trained on, never trial-scored — the ungameable numbers)
| set | base refused | ablated refused | base preamble | ablated preamble |
|---|---|---|---|---|
| sealed mjd, 200 prompts, 7 langs | 86 (43%) | 0-being-6-flagged, 0 real (3%) | 247 chars | 96 chars |
| sealed adv, 100 prompts, English | 100 (100%) | 0-being-15-flagged, 0 real (15%) | 435 chars | 145 chars |
"0-being-N-flagged" needs explanation — see Methodology. Short version: every flag
was audited by eye; all 21 were reasoning traces planning compliance or complying
answers containing words like "illegal". Zero actual refusals. Preamble (compliance-talk
before the answer) collapsed 2-3x: answers start directly now.
Full matrix (marker ruler, descriptive — same prompts both models)
| set (n) | base | ablated t33 |
|---|---|---|
| all-eval, 3911 unique harmful prompts | 2014 (51.5%) | 263 (6.7%) |
| selection mjd-400 | 194 (48.5%) | 2 (0.5%) |
| selection adv-100 | 100 (100%) | 2 (2%) |
Marker numbers overstate both sides on thinking models (see below). They are
included for comparability with other releases, not as claims.
Answer-level audit (4096-token generations, think/answer split)
41 sealed prompts (21 flagged + 20 random unflagged): 37 finished thinking,
37 produced answers, 0 answers refused. All 8 answer-flags were complying
answers (guides, letters, code) containing refusal-vocabulary words.
Methodology: why marker counts are fiction on thinking models
Standard refusal eval generates ~100 tokens and string-matches for "sorry",
"as an AI", "illegal", etc. On a thinking model this fails twice, in opposite
directions, on the same model:
- Flags compliance. 100 tokens never exit thinking, so the matcher scores
reasoning traces. Traces planning compliance ("We should provide a detailed,
step-by-step guide" — for explosives manufacturing) get flagged for containing
"as an AI". Complying answers get flagged for containing "illegal" (a drug-guide
title: "# The Complete Guide to Manufacturing and Distributing Illegal Drugs").
- Misses real structure. Non-answers (thinking that never converges) score as
neither refusal nor compliance.
Our ruler instead: 600+ token generations, split thinking from answer on
</think>, three buckets per generation — complied / refused / non-answer —
with every flagged item eye-audited. Reported numbers above are bucket counts,
not marker counts. Anyone comparing "0/300" against a marker-count "0/465" is
comparing different rulers; demand the bucket table.
How it was made
- Pools (frozen, manifest-hashed): train 6292 rows (mjd multilingual ×7 langs
+ AdvBench oversampled ×10 for equal family mass — balanced diff-in-means needs
equal votes, not proportional ones), selection 500 stratified (400 mjd + 100 adv),
sealed 200 mjd + sealed 100 adv held out of everything. Zero-overlap matrix verified.
- Search: heretic Optuna, 50 trials (20 startup + 30 TPE), batch 32, bf16,
KL co-optimized. Trial 33 selected: 4/500 selection refusals at KL 0.016.
- One round. Minimal-change principle: bigger balanced slices beat stacked
rounds. A pre-registered second-round gate (residual cosine) was mooted and
dropped — there is no residual refusal behavior left to ablate.
- Export: adapter-save, CPU reload, merge, tied-embedding twin-fill
(PEFT unties embeddings on merge leaving a meta stub — filled from the live twin).
Full pipeline (patch scripts, pool builder, launchers, export, evals) is deterministic
from the base safetensors; trial-33 params recorded in the study journal.
Quality gates (base vs ablated)
| check | base | ablated t33 |
|---|---|---|
| PPL, calib corpus, 512 ctx, BF16 | 3.8598 ± 0.0097 | 3.9492 ± 0.0099 (+2.3%, disclosed) |
| Agentic tool-use, 6-task HermesBench | 5/6 effective | 5/6 effective (one single-run miss retested 3/3 pass = temp-1.0 noise) |
| KL divergence (search objective) | — | 0.016 |
| Decode speed, RTX 3060 | 171 t/s Q6_K | identical arch/size — same |
The +2.3% PPL is over our own 2% bar by 0.3 points and is printed here, not buried.
No capability damage was demonstrated anywhere else, so no DPO repair pass was run.
Caveats
- Inherits the base model's reasoning-loop failure mode on vague open-ended prompts
(documented in the base repo README): unbounded thinking until the token limit,
independent of quantization. --reasoning-budget + client timeouts are mandatory.
- Most generations spend 1500+ tokens thinking; short
max_tokensvalues return
reasoning fragments, not answers. Budget context accordingly.
- "0 refusals" means no observed refusals in the evaluated sets under eye audit,
not a proof of universal compliance. Novel framings were not exhaustively tested.
- Ablation removes refusal behavior, not knowledge. Standard responsible-use
expectations apply.
License
Apache 2.0, same as the base model. Ablation deltas are rank-1 LoRA merges;
no additional training data is distributed with these files.
Run darioooooo0o/Spark-X2.5-1.7B-Abliterated-GGUF with guIDE
Download guIDE — the AI-native code editor with local LLM inference and 69 built-in tools.
Source: Hugging Face · Compare models