alt.freeweights.text / Spark-X2.6-4B-OptiQ-4bit
From: mlx-community <huggingface.co/mlx-community>Newsgroups: alt.freeweights.textSubject:

Spark-X2.6-4B-OptiQ-4bit

Date: 2026-11-15Commit: 6d83e91Signed: 2DC28CC7B26A283B ✓

Text generation model with 4.1B parameters. Safetensors weights, 3.05 GB in all. Published by mlx-community under Apache-2.0.

4.1B params3.05GBSpark-X2.6-4B-OptiQ-4bitsafetensorspermissive
FactsParams4.1BSize3.05 GBFormatssafetensorsTasktext generationLicenseApache-2.0From sourcepermissive
$ fw get mlx-community/Spark-X2.6-4B-OptiQ-4bit
# manifest sha256 9db1a1787de6… · 3.05 GB · 13 files
$ fw verify ./Spark-X2.6-4B-OptiQ-4bit mlx-community/Spark-X2.6-4B-OptiQ-4bit
From sourceHosted (signed)mlx-community/Spark-X2.6-4B-OptiQ-4bitLast check: 2026-11-15 05:04 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
3.05 GB
Weights
3.04 GB (safetensors)
Parameters
4.1B
Formats
safetensors
Task
text generation
License
Apache-2.0 (permissive)
Files
13, each with a sha256
Publisher
mlx-community
Added
2026-11-15
Section
alt.freeweights.text
Lineage

Original release from the publisher.

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:04 UTCpassed

Model card

From the publisher at commit 6d83e91. Shown as plain text with links; images open at the publisher.

mlx-community/Spark-X2.6-4B-OptiQ-4bit#

Built with mlx-optiq, the MLX-native toolkit to quantize, fine-tune, and serve LLMs locally on Apple Silicon, no PyTorch and no cloud. Try the Lab · All OptiQ quants · Docs

A mixed-precision MLX quant of XHToken/Spark-X2.6-4B, the on-device agent model that follows Spark-X2.5 with improved post-training for coding, tool use, long context and reasoning. 2.8 GB on disk, down from 7.7 GB bf16. See the original card for what the model is trained to do and how XHToken evaluates it.

Spark is a new architecture for MLX, and mlx-optiq adds support for it, so import optiq before mlx_lm.load: stock mlx-lm does not know the spark2_5 model type.

What it is#

PropertyValue
BaseXHToken/Spark-X2.6-4B (same spark2_5 architecture as Spark-X2.5-4B)
Layers108 at 8-bit, 109 at 4-bit (217 total)
Group size64
KV cachekv_config.json included (mixed-precision KV for optiq serve --kv-config)
On disk2.8 GB

Following llama.cpp's naming for mixed quants, the "4bit" label denotes the predominant precision, not the weighted average.

How the bit-widths were chosen#

The per-layer allocation was not measured on this model. It was transferred from mlx-community/Spark-X2.5-4B-OptiQ-4bit, whose allocation came from a KL-divergence sensitivity sweep over a six-domain calibration mix. Spark-X2.6 keeps exactly the same architecture and modeling code as X2.5, and all 217 tensors matched with none unmatched.

Checked after conversion#

Run through this quant and its bf16 parent on Apple Silicon with greedy decoding:

PromptThis quantbf16 parent
240 km in 3 h, average speed with steps80 km/h, same three steps80 km/h
Capital of Australia, and why not SydneyCanberra, a planned federal capitalCanberra, a planned federal capital
is_palindrome(s) ignoring case and non-alphanumericscorrect functioncorrect function
Author and year of Pride and PrejudiceJane Austen, 1813Jane Austen, 1813
Call get_weather for Paris, JSON only{"tool_name": "get_weather", "params": {"location": "Paris"}}same call, city as the key
240 km in 3 h, thinking onshort think, then 80 km/hsame think and answer
17 × 23, number onlythinking off: 491 (wrong); thinking on: 391391 both ways

The one miss is bare mental arithmetic with thinking off, where the quant answers in a single token with no working; the Spark-X2.5 quant makes the same slip. With thinking on, the default, it gets it right.

Usage#

pip install mlx-optiq   # brings mlx-lm and the spark2_5 architecture
import optiq  # registers spark2_5 with mlx-lm
from mlx_lm import load, generate

model, tokenizer = load("mlx-community/Spark-X2.6-4B-OptiQ-4bit")
prompt = tokenizer.apply_chat_template(
    [{"role": "user", "content": "Explain quantum computing in simple terms."}],
    tokenize=False, add_generation_prompt=True, enable_thinking=False)
print(generate(model, tokenizer, prompt=prompt, max_tokens=300))

Serving, with the mixed-precision KV cache, tool calling and the OpenAI, Responses and Anthropic Messages APIs:

optiq serve --model mlx-community/Spark-X2.6-4B-OptiQ-4bit --kv-config kv_config.json
Thinking and sampling#

Thinking is on by default. The chat template takes reasoning_effort of high (the default) or low to set how much it thinks, or enable_thinking: false to turn it off; pass them as chat_template_kwargs at the endpoint or as keywords to apply_chat_template. Through optiq serve, the standard reasoning_effort: "none" also turns it off. XHToken's sampling defaults, temperature 1.0 and top_p 0.95, are bundled in generation_config.json.

See the Spark family guide for serving flags and family caveats.

Files

13 files · 3.05 GBWeights 3.04 GB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 13 files with their sha256
FileSizesha256
.gitattributes1.52 KB11ad7efa24975ee4b0c3c3a38ed18737f0658a5f75a0a96787b576a78a023361
README.md4.85 KBc3fcecd647028315c8c40a27a733b206204de7e24d39aa79d89cd01ff21f0942
chat_template.jinja5.72 KB480576bd2ef80726a0dba6406d72ca37f4f4f9ca747c7f1c8d159dbdf40f6929
config.json49.3 KBf4fb6e0b5245fbc60f640b0145e831cd29840c77cfffd697d5fc5ca88d43a60e
configuration_spark.py4.33 KB02218597240490f490659b184052db940b08163ff9c3af7b7e59323f6f963722
generation_config.json281 B804a5276a9d237600688267dd2bf6f9d4129ec21faf417f870d5d52b32ad9e6c
kv_config.json2.37 KBce6997f86a0c7f042e1c87ba54729d37f28a28364d410f805ed145f29e644030
model.safetensors3.04 GB9481508a55a973e663c4dcd60927d45edd681c0bb2cef3fc1ea482cc62b2a5b1
model.safetensors.index.json51.7 KBe04380911a1ef18a4bead540889327ada79e998743b708e79922ee5d9f278293
modeling_spark.py19.4 KB9cf0d1ad2b54b9f7088792779ddd8b5cb4d4fe63bfea054da7f2dd16362bcaf4
optiq/metadata.json19.6 KB6e690f9321beb57af1b08d5ca3c3fb0feb57846ec628696156a1615867230642
tokenizer.json10.1 MBf71f91ee1b2ac0b27e47bf49ee4859d322ab3d191217ec9964d0189b02454c49
tokenizer_config.json420 Bdc8640f34ad87fb04d17448183a7303d6fb10629fe8a8a2bc81937183617b77f
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
6d83e911ab pinned now2026-11-15 05:04 UTC13 files · 3.05 GB

Use it

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

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
README.md
Text sha256
c3fcecd647028315c8c40a27a733b206204de7e24d39aa79d89cd01ff21f0942
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: mlx-community <huggingface.co/mlx-community>Newsgroups: alt.freeweights.textSubject: Spark-X2.6-4B-OptiQ-4bitDate: 2026-11-15Commit: 6d83e91Signed: 2DC28CC7B26A283B ✓
Upstream
mlx-community/Spark-X2.6-4B-OptiQ-4bit
Pinned commit
6d83e911abefcbbb9c7c595e6517264f36db03dd
Manifest
Spark-X2.6-4B-OptiQ-4bit.json · .minisig
Manifest sha256
9db1a1787de638271c184f9d83d4e2d96398da5d818b7484bc16004f1641ef1f
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 05:04 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/mlx-community/Spark-X2.6-4B-OptiQ-4bit.json $ curl -O https://freeweights.allternit.com/manifests/mlx-community/Spark-X2.6-4B-OptiQ-4bit.json.minisig $ minisign -Vm Spark-X2.6-4B-OptiQ-4bit.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

No model in the catalog names this one as its parent.

Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download mlx-community/Spark-X2.6-4B-OptiQ-4bit
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-OptiQ-4bit.json. Provenance. Takedown history: none.
From: laion <huggingface.co/laion>Subject: a2-rl-e2egit_large-50-32B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_e2egit-large-15-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_e2egit-v2-10-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_pymethods2test-large-80-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_unitsyn-python-large-10-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_mix_h2_language_proportional-65-8B