Model reference · open weights
Spark-X2.6 is an open-weight language model from XHToken. Spark-X2.6-4B-FP8 (FP8) weighs 4.5 GB; the smallest configuration that runs it is RTX 3060 12 GB.
For self-hosting, compare this build's requirements below with the GPU you plan to rent.
Summary of the XHToken/Spark-X2.6-4B model card, 2026-10-24. The estimate below is for another build of the family.
What it is
| Released by | XHToken |
|---|---|
| Released | 2026-10-19 |
| Parameters | 4.1B |
| VRAM | 4.5 GB for the weights |
What it runs on
| Card | Requests at once | Context max | Memory | |
|---|---|---|---|---|
| 8K each | 32K each | |||
| RTX 3060 12 GB FP8 without its speed-up here | 7 | 3 | 158K | 11.6 GB |
| RTX 4060 Ti 16 GB | 12 | 5 | 258K | 15.4 GB |
| RTX 3090 24 GB FP8 without its speed-up here | 22 | 10 | 470K | 23.4 GB |
| RTX 4090 24 GB | 22 | 10 | 468K | 23.4 GB |
| RTX 5090 32 GB | 31 | 15 | 672K | 31.0 GB |
| L40S 48 GB | 47 | 22 | 1014K | 44.0 GB |
| A100 80 GB FP8 without its speed-up here | 90 | 42 | all 1024K | 78.2 GB |
| H100 80 GB | 57 | 22 | all 1024K | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | 70 | 27 | all 1024K | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | 81 | 31 | all 1024K | 107 GB |
| H200 141 GB | 106 | 41 | all 1024K | 138 GB |
| B200 180 GB | 137 | 34 | all 1024K | 176 GB |
| 2× RTX 3060 12 GB tensor parallel · FP8 without its speed-up here | 21 | 10 | 447K | 11.6 GB a card |
| Requests at once | 8K tokens each | 32K tokens each |
|---|---|---|
| 1 | 6.0 GB | 6.9 GB |
| 5 | 9.2 GB | 13.7 GB |
| 8 | 11.6 GB | 18.9 GB |
| 16 | 18.1 GB | 32.6 GB |
| 32 | 31.1 GB | 60.1 GB |
| 64 | 57.1 GB | 115 GB |
One card, with vLLM's small-card settings.
Builds
| Build | Params | Precision | Weights | Smallest setup |
|---|---|---|---|---|
| Spark-X2.6-4B ↗ | 4.1B | BF16 | 8.2 GB | RTX 3060 12 GB |
| Spark-X2.6-4B-FP8 (above) ↗ | 4.1B | FP8 | 4.5 GB | RTX 3060 12 GB |
| Spark-X2.6-1.7B ↗ | 1.7B | BF16 | 3.4 GB | RTX 3060 12 GB |
From the model card
[!Note] This repository contains model weights and configuration files for the post-trained model in the Hugging Face Transformers format.
A little over a month has passed since Spark-X2.5. In the rapidly evolving world of AI agents, that is enough time to rethink, refine, and move the frontier forward. Building on the Spark-X2.5-4B, we introduce Spark-X2.6-4B, the latest generation of our compact, general-purpose language models for on-device deployment.
Spark-X2.6-4B retains exactly the same architecture as Spark-X2.5-4B, achieving its capability gains through improved post-training. It delivers substantial improvements in coding, agent, long-context, multilingual, reasoning, etc. These advances enable more capable and practical on-device AI for developers and users tackling real-world tasks.
Technical Highlights:
We evaluate our models and compare them with leading on-device models of similar size across a broad range of tasks, including agent, code, math, general and knowledge. Spark-X2.6-4B achieves best-in-class performance among models of comparable size, while matching or exceeding the performance of larger 9B models on several benchmarks.
Spark-X2.6-4B delivers inference efficiency on par with or better than comparable on-device models, including Qwen3.5-4B and Gemma-E4B. It combines this efficiency with stronger capabilities, making it a practical choice for responsive, resource-conscious on-device AI.
Install the required version with pip install transformers==4.57.1.
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "XHToken/Spark-X2.6-4B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
trust_remote_code=True,
torch_dtype="auto",
device_map="auto",
)
messages = [{"role": "user", "content": "What is the capital of Anhui Province?"}]
inputs = tokenizer.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
enable_thinking=True,
return_dict=True,
return_tensors="pt",
).to(model.device)
outputs = model.generate(
**inputs,
max_new_tokens=131072,
do_sample=True,
temperature=1.0,
top_p=0.95,
top_k=0,
)
print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True))
The examples below serve a local Spark-X2.6-4B checkpoint. Set MODEL_PATH to its absolute path before starting a container:
export MODEL_PATH=/absolute/path/to/Spark-X2.6-4B
Use the pre-built image that tracks the Spark-X2.6 runtime:
docker pull lmsysorg/sglang:nightly-dev-cu13-20260827-20621aa1
# A3 daily build
export SGLANG_IMAGE=quay.io/ascend/sglang:main-cann9.0.0-a3
# A2 daily build (use this instead on A2 hardware)
export SGLANG_IMAGE=quay.io/ascend/sglang:main-cann9.0.0-910b
docker pull "$SGLANG_IMAGE"
The following commands start an OpenAI-compatible API server configured for a maximum context length of 1,048,576 tokens. This setting requires sufficient device memory; reduce --context-length when necessary.
docker run --rm -it \
--gpus '"device=0"' \
--ipc=host \
-p 30000:30000 \
-v "$MODEL_PATH:/root/Spark-X2.6-4B:ro" \
lmsysorg/sglang:nightly-dev-cu13-20260827-20621aa1 \
python -m sglang.launch_server \
--model-path /root/Spark-X2.6-4B \
--served-model-name spark2.6 \
--tool-call-parser spark25 \
--reasoning-parser qwen3 \
--tp-size 1 \
--mem-fraction-static 0.8 \
--context-length 1048576 \
--chat-template /root/Spark-X2.6-4B/chat_template.jinja \
--host 0.0.0.0 \
--port 30000
docker run -it --rm -e ASCEND_USE_FIA=1 --network=host --ipc=host --shm-size=16g \
--device=/dev/davinci0 --device=/dev/davinci1 --device=/dev/davinci2 --device=/dev/davinci3 \
--device=/dev/davinci4 --device=/dev/davinci5 --device=/dev/davinci6 --device=/dev/davinci7 \
--device=/dev/davinci8 --device=/dev/davinci9 --device=/dev/davinci10 --device=/dev/davinci11 \
--device=/dev/davinci12 --device=/dev/davinci13 --device=/dev/davinci14 --device=/dev/davinci15 \
--device=/dev/davinci_manager \
--device=/dev/devmm_svm \
--device=/dev/hisi_hdc \
--volume /usr/local/sbin:/usr/local/sbin \
--volume /usr/local/Ascend/driver:/usr/local/Ascend/driver \
--volume /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \
--volume /etc/ascend_install.info:/etc/ascend_install.info \
--volume /var/queue_schedule:/var/queue_schedule \
--volume ~/.cache/:/root/.cache/ \
--volume "$MODEL_PATH:/root/Spark-X2.6-4B:ro" \
--entrypoint=python \
"$SGLANG_IMAGE" \
-m sglang.launch_server \
--model-path /root/Spark-X2.6-4B \
--served-model-name spark2.6 \
--tool-call-parser spark25 \
--reasoning-parser qwen3 \
--tp-sQuoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.