alt.freeweights.abliterated / Spark-X2.6-4B-abliterated
From: FrostWolfAI <huggingface.co/FrostWolfAI>Newsgroups: alt.freeweights.abliteratedSubject:

Spark-X2.6-4B-abliterated

Date: 2026-11-15Commit: 505257bSigned: 2DC28CC7B26A283B ✓

Text generation model with 4.1B parameters. Safetensors weights, 8.24 GB in all. Published by FrostWolfAI under Apache-2.0. Changed from the base model.

4.1B params8.24GBSpark-X2.6-4B-abliteratedsafetensorspermissive
FactsParams4.1BSize8.24 GBFormatssafetensorsTasktext generationLicenseApache-2.0From sourcepermissive
$ fw get FrostWolfAI/Spark-X2.6-4B-abliterated
# manifest sha256 4d5b3ffb2852… · 8.24 GB · 22 files
$ fw verify ./Spark-X2.6-4B-abliterated FrostWolfAI/Spark-X2.6-4B-abliterated
From sourceHosted (signed)FrostWolfAI/Spark-X2.6-4B-abliteratedLast check: 2026-11-15 05:08 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Quantized of Spark-X2.6-4B.

Works with

Overview

Size
8.24 GB
Weights
8.22 GB (safetensors)
Parameters
4.1B
Formats
safetensors
Task
text generation
License
Apache-2.0 (permissive)
Files
22, each with a sha256
Publisher
FrostWolfAI
Added
2026-11-15
Section
alt.freeweights.abliterated
Lineage

Changed from the base model. The uploader's repo is named abliterated: refusal behavior was removed from XHToken/Spark-X2.6-4B by the uploader. Read the model card at the source for the method and the layers touched.

Base model: XHToken/Spark-X2.6-4B

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 05:08 UTCpassed

Model card

From the publisher at commit 505257b. Shown as plain text with links; images open at the publisher.

Spark-X2.6-4B-abliterated#

By Vatsal Bajpai (@xblack) at FrostWolfAI.

Buy me a coffee

Everything here is released openly. If it's useful to you and you'd like to support more open-source work on AI, a coffee goes a long way — entirely optional.

A decensored variant of XHToken/Spark-X2.6-4B, produced with Heretic v2.0.0.dev0 using Arbitrary-Rank Ablation (ARA). Spark-X2.6's architecture is untouched - 36 layers in a 3:1 pattern of sliding-window (512) and global attention, head-wise sigmoid attention gates, fused QKV, tied embeddings and the 1,048,576-token context - along with its DeepSeek-style chat template, controllable thinking and <tool_call> format. Refusal behaviour is suppressed with a low-rank weight edit to the attention output projections (out_proj) and MLP down-projections of layers 9-19, not by fine-tuning.

Who this is for: local agents, coding and security research on a single consumer GPU or a laptop. Spark-X2.6-4B is XHToken's post-trained 4B on-device model, built for coding, agentic tool use and long-context work, with a configurable thinking budget (none / low / high). The abliteration removes refusals; it does not add capability.

Refusals drop from 100/100 to 2/100 at a KL divergence of 0.0177 - a tight edit with little drift in phrasing or format on harmless prompts.

Abliteration parameters#

Trial 46 of a 60-trial Heretic v2 run (seed 2026102902), modifier heretic.modifiers.ara.ARA.

ParameterValue
start_layer_index9
end_layer_index19
preserve_good_behavior_weight0.8871
steer_bad_behavior_weight0.0004
overcorrect_relative_weight0.9891
neighbor_count4

ARA settings were Heretic v2 defaults: LoRA rank 50, row magnitudes preserved (magnitude-preserving orthogonal ablation), merged into the BF16 weights at export.

Performance#

MetricThis modelOriginal model (XHToken/Spark-X2.6-4B)
KL divergence0.01770 (by definition)
Refusals2/100100/100

Heretic's numbers are measured on mlabonne/harmful_behaviors (test[:100]) for refusals and mlabonne/harmless_alpaca (test[:100]) for first-token KL divergence, with the thinking block closed. The base model refused every one of the 100 evaluation prompts; 98 of them now clear.

Thinking on vs. off#

Spark-X2.6 thinks by default, and a reasoning model can talk itself back into a refusal inside <think>. We checked both modes on the first 40 held-out harmful_behaviors test prompts with greedy decoding:

ModeRefusals
enable_thinking=False (150 new tokens)0/40
enable_thinking=True (1,200 new tokens)0/22 that finished reasoning (18 were still thinking at the token cap)

Benign coding and explanation prompts stayed coherent and on-format in both modes.

Why abliteration instead of fine-tuning#

Fine-tuning a "helpful" persona on top of RLHF'd refusals fights the base model's training and tends to degrade coherence. Abliteration instead finds and edits the specific weight directions responsible for refusal, leaving the rest of the network (and its capabilities) untouched. Heretic v2's ARA goes beyond classic single-direction ablation: it optimizes a low-rank edit that steers harmful-prompt activations toward harmless ones while explicitly preserving behaviour on harmless prompts, which handles refusal spread over several directions. See the Heretic repo and the original abliteration writeup for the mechanism.

Files#

Safetensors#
FileSize
model-00001-of-00002.safetensors4.97 GB
model-00002-of-00002.safetensors3.25 GB

BF16, 4,112,079,360 parameters (4.11B). The reproduce/ directory carries the full Heretic recipe - config.toml, requirements.txt, the Optuna study journal, reproduce.json and SHA-256 sums - so this exact model can be regenerated. See reproduce/README.md.

GGUF quantizations#

Published separately at FrostWolfAI/Spark-X2.6-4B-abliterated-GGUF: BF16 + 14 quants (Q2_K to Q8_0, IQ3_S, IQ4_XS; 44.53 GB total), each tested in llama-server for thinking on/off and tool calls. Requires a llama.cpp build with spark2_5 support.

llama-server -hf FrostWolfAI/Spark-X2.6-4B-abliterated-GGUF:Q4_K_M --jinja -ngl 99 -fa on

Quickstart#

# transformers >= 5 (the checkpoint ships custom code)
from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "FrostWolfAI/Spark-X2.6-4B-abliterated"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    model_name, device_map="auto", dtype="bfloat16", trust_remote_code=True
)

messages = [{"role": "user", "content": "Explain how a TLS 1.3 handshake works."}]
inputs = tokenizer.apply_chat_template(
    messages,
    add_generation_prompt=True,
    enable_thinking=True,
    return_dict=True,
    return_tensors="pt",
).to(model.device)
out = model.generate(
    **inputs, do_sample=True, temperature=1.0, top_p=0.95, top_k=0, max_new_tokens=4096
)
print(tokenizer.decode(out[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True))

Important. The upstream Spark-X2.6-4B code targets transformers==4.57.1. The modeling_spark.py shipped here is patched for transformers 5.x (tied-weights dict, inputs_embeds mask keyword, hidden_states output). It was tested with transformers 5.21.1. The weights are identical in layout to the original, so SGLang and vLLM recipes from the base model card apply unchanged.

Generation parameters#

XHToken's recommended settings (also in generation_config.json): temperature=1.0, top_p=0.95, top_k=0 (disabled), repetition_penalty=1.0.

Chat template and thinking#

Spark uses DeepSeek-style turn markers (<|start▁of▁sentence|><|User|>...<|Bot|>). Thinking is on by default and arrives in a <think>...</think> block. Control it per request:

  • enable_thinking=False - no reasoning, direct answer
  • reasoning_effort="low" / "high" (default) - reasoning budget

With an OpenAI-compatible server, pass them via "chat_template_kwargs", e.g. {"enable_thinking": false}.

Tool use#

Pass function schemas with tools=... to tokenizer.apply_chat_template(). Note that the template requires tool_calls[].function.arguments as a dict, not a JSON string. Calls come back as:

<tool_call>get_weather<arg_key>city</arg_key><arg_value>Paris</arg_value></tool_call>

Feed results back under a tool role; they are rendered inside <tool_response>...</tool_response>. Servers: SGLang --tool-call-parser spark25 --reasoning-parser qwen3.

Runs anywhere#

DeviceRecommended formatWeights
RTX 3090 / 4090 / 5090 (24 GB+)BF16 safetensors8.22 GB
RTX 3060 / 4060 (8-12 GB)GGUF Q6_K / Q8_03.4-4.4 GB
Laptop / Apple Silicon (16 GB)MLX 4-bit / 8-bit, or GGUF Q4_K_M2.3-2.6 GB

Weights only. Three of every four layers use a 512-token sliding window, so the KV cache grows far more slowly than in a pure global-attention 4B - but at the full 1M-token window it is still a server workload.

Model details#

ArchitectureSpark2_5ForCausalLM (model_type: spark2_5, custom code)
Parameters4.11B
Layers36: 27 sliding-window attention + 9 global attention (3:1 pattern)
Attention16 heads / 4 KV heads, head dim 256, fused QKV, head-wise sigmoid output gate
Hidden / intermediate2560 / 10240, GELU MLP
Position embeddingRoPE; global layers theta 5e6 with partial rotary 0.25, sliding layers theta 1e4 (full rotary)
Sliding window512
Context length1,048,576
Vocab131,072
EmbeddingsTied (no separate lm_head tensor)
Precisionbfloat16
LanguagesEnglish, Chinese
Base modelXHToken/Spark-X2.6-4B (commit d1b5f26)

Responsible use#

Refusal suppression is deliberate and works as intended: this model will comply with requests the base model would refuse, including some it should not. There is no safety filtering layered on top. You are responsible for how you deploy it - don't put it behind an unmoderated public-facing endpoint serving third parties. It inherits Spark-X2.6-4B's factual limitations; abliteration removes refusal directions, it does not add capability or judgment.

Made by Vatsal Bajpai · FrostWolfAI - the uncensored base behind the upcoming Frost Cyber Mini 1.1.

License#

Apache-2.0, inherited from XHToken/Spark-X2.6-4B.

Abliteration hardware#

Recorded in reproduce/reproduce.json:

  • GPU: NVIDIA GeForce RTX 4090 (23.99 GB VRAM), power-limited to 360 W
  • OS: Windows 11 Pro
  • CUDA / driver: CUDA 13.2, driver 617.42
  • Software: PyTorch 2.15.0, Transformers 5.21.1, Heretic 2.0.0.dev0 (git efb1be6)

Heretic notes that KL-divergence and refusal numbers can vary slightly with hardware and library versions.

Files

22 files · 8.24 GBWeights 8.22 GB (safetensors). Sizes and sha256 from the signed manifest.
Show all 22 files with their sha256
FileSizesha256
.gitattributes1.52 KB11ad7efa24975ee4b0c3c3a38ed18737f0658a5f75a0a96787b576a78a023361
LICENSE11.3 KB525c465ab952779d2d360a9ff36f7f49ae018a23d80302ff839a850a77784c36
README.md11.4 KB5c0a61cf65a69d36e1a6adcb6e053899965bd75ec55133c672bec874a39dcea3
chat_template.jinja5.72 KB480576bd2ef80726a0dba6406d72ca37f4f4f9ca747c7f1c8d159dbdf40f6929
config.json2.18 KB27391c2506f05512c3602fcc64ec87f8e112167ac256a3d097f068d58bdd757c
configuration_spark.py4.33 KB02218597240490f490659b184052db940b08163ff9c3af7b7e59323f6f963722
generation_config.json281 B804a5276a9d237600688267dd2bf6f9d4129ec21faf417f870d5d52b32ad9e6c
merges.txt1.57 MBb06fc88940ae6a20f71142f06304c12547f58ab52c175e56af12a38c3dc62f36
model-00001-of-00002.safetensors4.97 GB618c7df2a8fdaf923069b85e6cce9125c99a929479fafb4424f9f1c38dcc2af3
model-00002-of-00002.safetensors3.25 GB0d6674e83396f084f798f6eb630edbe8523a7815cc8b731207490637d55b561f
model.safetensors.index.json24.4 KBafda129bdbf92be8e3f8477c5928d442d3599977a3ce9f6a673f8f5cc4b919ac
modeling_spark.py20.5 KB2f87dc3ece1cab703521d15b2b5f26c62a47316fcdfa08026a758131bd5ae8ea
reproduce/README.md3.51 KB12867c5f90f423c734431332d521bd3d6ae84d8a0659dd4965a6b5eb03b27e19
reproduce/SHA256SUMS198 Bcb62491d4195dd3b20055493c600eb3e516337c23b0fd8e0a964855241be5f0f
reproduce/XHToken--Spark-X2.6-4B.jsonl166 KB40a19697f88128576a8b735e2c58506cf49c873f6a90e1a10c7251b485bae5d3
reproduce/config.toml918 Bd1f059492c10ac3b233899199501e0fe30de154e4e99e520836e8d5521bc0a46
reproduce/reproduce.json4.31 KB7d7b7e9c97b45af7dcd78dae0d93509261a957a165a6be4053c3b61f1d32826e
reproduce/requirements.txt1.79 KB29393ad8ea8203e628f35e3749d096a19d00bc7513003d61bf800a931191373c
special_tokens_map.json156 B48a257e3f5f20a004e7c30482a70ae19ae7d9cf713144f2a1394ba20af8c3cb5
tokenizer.json10.1 MBc17371a72d729ee33f335d62f8b6031c882bb28b640f29d8b9f014829a14b4b7
tokenizer_config.json5.84 KB57b385dcc2ad031aef4a3786e97cd9a832ecb839cb27ed2cd829d627c90e1bfd
vocab.json3.03 MB9f42cb7e7af5afe27cae2337d272d60b5659e10143ef4bb952f642b847916fe1
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
505257b796 pinned now2026-11-15 05:08 UTC22 files · 8.24 GB

Use it

$ fw get FrostWolfAI/Spark-X2.6-4B-abliterated
# manifest sha256 4d5b3ffb2852… · 8.24 GB · 22 files
$ fw verify ./Spark-X2.6-4B-abliterated FrostWolfAI/Spark-X2.6-4B-abliterated
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/FrostWolfAI/Spark-X2.6-4B-abliterated.json --dir ./Spark-X2.6-4B-abliterated $ python3 fw.py verify ./Spark-X2.6-4B-abliterated ./FrostWolfAI__Spark-X2.6-4B-abliterated.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download FrostWolfAI/Spark-X2.6-4B-abliterated --revision 505257b7969eb03a5a62d81f9afec6f88abd26e4 --local-dir ./Spark-X2.6-4B-abliterated
transformersLoad the weights in Python.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import AutoModelForCausalLM, AutoTokenizer tok = AutoTokenizer.from_pretrained("FrostWolfAI/Spark-X2.6-4B-abliterated", revision="505257b7969eb03a5a62d81f9afec6f88abd26e4") model = AutoModelForCausalLM.from_pretrained("FrostWolfAI/Spark-X2.6-4B-abliterated", revision="505257b7969eb03a5a62d81f9afec6f88abd26e4", device_map="auto")
vLLMServe an OpenAI-compatible API.
$ HF_ENDPOINT=https://freeweights.allternit.com vllm serve FrostWolfAI/Spark-X2.6-4B-abliterated --revision 505257b7969eb03a5a62d81f9afec6f88abd26e4

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
LICENSE
Text sha256
525c465ab952779d2d360a9ff36f7f49ae018a23d80302ff839a850a77784c36
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: FrostWolfAI <huggingface.co/FrostWolfAI>Newsgroups: alt.freeweights.abliteratedSubject: Spark-X2.6-4B-abliteratedDate: 2026-11-15Commit: 505257bSigned: 2DC28CC7B26A283B ✓
Upstream
FrostWolfAI/Spark-X2.6-4B-abliterated
Pinned commit
505257b7969eb03a5a62d81f9afec6f88abd26e4
Manifest
Spark-X2.6-4B-abliterated.json · .minisig
Manifest sha256
4d5b3ffb2852ff3383fa555d58fabcd171424d3aed51176af45d225b7641b278
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 05:08 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/FrostWolfAI/Spark-X2.6-4B-abliterated.json $ curl -O https://freeweights.allternit.com/manifests/FrostWolfAI/Spark-X2.6-4B-abliterated.json.minisig $ minisign -Vm Spark-X2.6-4B-abliterated.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

Parent

XHToken/Spark-X2.6-4B · this model is a quantization of it

1 model in the catalog name this one as their parent.

Fine-tunes
1
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download FrostWolfAI/Spark-X2.6-4B-abliterated
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. Spark-X2.6-4B-abliterated.json. Provenance. Takedown history: none.
From: xtools-at <huggingface.co/xtools-at>Subject: DeepSeek-V4-Pro-Qwen3.5-9B-UNCENSORED-heretic
From: mlx-community <huggingface.co/mlx-community>Subject: DeepSeek-V4-Pro-Qwen3.5-9B-UNCENSORED-heretic-OptiQ-4bit
From: mlx-community <huggingface.co/mlx-community>Subject: gemma-4-26B-A4B-it-heretic-msq-2.6bit
From: coder3101 <huggingface.co/coder3101>Subject: gemma-4-31B-it-heretic
From: Ilya626 <huggingface.co/Ilya626>Subject: gemma-4-31B-it-SDFT-Heretic-RP
From: llmfan46 <huggingface.co/llmfan46>Subject: gemma-4-31B-it-uncensored-heretic