Spark-X2.6-4B — CMF

Spark-X2.6-4B (4.11 B dense, hybrid attention: 9 full layers + 27 sliding-window layers of 512 tokens, 1M-token context, thinking mode, tool calling) packaged as single CMF files. They run with cortiq, a Rust inference engine with no Python and no ML framework: NVIDIA, AMD and Intel GPUs through Vulkan/DX12, Apple silicon through Metal, and the CPU.

X2.6 keeps the Spark-X2.5-4B architecture and improves post-training (coding, agentic, long-context, multilingual, reasoning).

English · Русский · 中文

Quick start

cargo install cortiq-cli
hf download infosave/Spark-X2.6-4B-cmf spark-x2.6-4b-q8_2f.cmf --local-dir .
cortiq run spark-x2.6-4b-q8_2f.cmf --prompt "Explain quicksort in three sentences." --no-think

Use cortiq 0.8.31 or later; prebuilt binaries for Linux, macOS and Windows are on the releases page. The engine picks the GPU and its settings itself. --no-think asks for a direct answer; without it the model reasons in a <think> block first, so raise --max-tokens (default 256).

Files

file quantization size wikitext-2 ppl recommended for
spark-x2.6-4b-q8_2f.cmf 8-bit projections (q8_2f), f16 embeddings/norms 4,135,951,050 B (4.14 GB) 10.71 default: highest fidelity
spark-x2.6-4b-q4tp.cmf 4-bit projections (q4tp), f16 embeddings/norms 2,161,419,978 B (2.16 GB) 11.88 half the memory, faster decode (+10.9 % ppl)

Both files carry 362 tensors: 253 quantized projections + 109 f16 (embeddings, norms, rotary buffers), quantized from the bf16 checkpoint.

Perplexity: first 4096 tokens of wikitext-2 test with the model's BOS token in front, cortiq ppl --tokens 4096, exact attention, measured on the RTX 2000 Ada. Cross-check with the identical command on Spark-X2.5-4B-q8_2f.cmf gives 10.94 (that card lists 10.68; the text file here is rebuilt from the parquet, so a small protocol difference remains).

Performance

cortiq bench --core --ignore-eos --tokens 120, decode tok/s, one stream:

hardware backend q8_2f q4tp
RTX 2000 Ada (16 GB) Vulkan 41.5 67.2
Xeon E5-2699 v4, 6 cores CPU 4.5 4.8

Prompt processing and decode at depth (--ctx, synthetic prompt of N tokens, RTX 2000 Ada, Vulkan):

prompt q8_2f prefill q4tp prefill q8_2f decode q4tp decode
1 000 tokens 370.3 350.6 38.0 58.7
16 000 tokens 400.2 325.8 20.3 36.9

Time to first token on the same GPU at the bench's 41-token prompt: 0.91 s (q8_2f), 0.42 s (q4tp). The graph capture takes 119 of the 120 bench tokens.

Resident weights on the GPU: 4.11 GB (q8_2f), 2.14 GB (q4tp), against a reported VRAM budget of 14.49 GB — both profiles fit a 16 GB card at long context.

Quality checks

Greedy cortiq run --no-think battery, run on both files on the CPU and on the GPU (Vulkan); the answers agree across files and backends unless noted:

check expected result
17 * 23 391 pass
1234 + 5678 6912 pass
capital of France, one word Paris pass
start of WWII (Russian) 1939 pass
one-line Python printing 2+3 print(2 + 3) pass
syllogism: all cats / some mammals swim invalid pass
syllogism: all roses / some flowers fade invalid fails — answers "valid"/"yes" on both files, CPU and GPU
exactly two sentences about a robot gardener 2 sentences pass
one sentence on photosynthesis 1 sentence pass

The roses/flowers item tests the undistributed middle; the model misses it consistently, while the structurally identical cats/mammals item passes. Treat it as a known reasoning miss, not a quantization artifact — both quant profiles and both backends behave the same.

Usage

cortiq run spark-x2.6-4b-q8_2f.cmf                             # interactive chat
cortiq run spark-x2.6-4b-q8_2f.cmf --prompt "..."              # one answer, with reasoning
cortiq run spark-x2.6-4b-q8_2f.cmf --prompt "..." --no-think   # answer without the thinking block
cortiq run spark-x2.6-4b-q8_2f.cmf --prompt "..." --greedy     # deterministic output

XHToken recommends temperature 1.0 and top-p 0.95 (the upstream generation example uses temperature=1.0, top_p=0.95, top_k=0):

cortiq run spark-x2.6-4b-q8_2f.cmf --temperature 1.0 --top-p 0.95 --top-k 0 --min-p 0 --rep-penalty 1.0 --max-tokens 4096 --prompt "..."

Without flags the CLI uses temperature 0.7, top-p 0.9, top-k 40, min-p 0.05, repetition penalty 1.1 and at most 256 new tokens. --top-k 0 and --rep-penalty 1.0 switch those filters off.

OpenAI-compatible server

cortiq serve spark-x2.6-4b-q8_2f.cmf --port 8080

curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model": "spark-x2.6-4b-q8_2f", "temperature": 1.0, "top_p": 0.95,
       "messages": [{"role": "user", "content": "Hi!"}]}'

Endpoints: /v1/chat/completions, /v1/completions, /v1/models, plus a web dashboard on the same port. --host 127.0.0.1 keeps the server local. The reply reads <think>…</think> answer; "enable_thinking": false in the request gives a direct answer, and temperature: 0 means greedy decoding. tools are accepted in the usual OpenAI format and go through the embedded chat template.

Hardware

Apple silicon (Metal). Runs on the GPU out of the box.

Choosing a GPU (Vulkan). cortiq gpu lists the adapters; CMF_GPU_ADAPTER=1 (index or name substring) picks one. If the list is empty on Linux, install libvulkan1 libglvnd0 libegl1 libgl1 libglx0; on headless machines set XDG_RUNTIME_DIR=/tmp.

CPU only. CMF_GPU=0 keeps everything on the CPU. The CPU rows above come from a 6-core Xeon E5-2699 v4 at 2.2 GHz; CMF_THREADS=6 was the best of the 6/12 sweep.

Long context

The model supports 1 048 576 tokens (max_position_embeddings), with a 512-token sliding window on 27 of the 36 layers and full attention on the other 9. The KV state measured by bench --ctx: 294,912,000 B at 1 000 tokens and 1,335,361,536 B (1.24 GiB) at 16 000 tokens — about 72 KB per token for the 9 full-attention layers (4 KV heads × 256 dims × K+V × f32); sliding layers keep only the rows their window reads. Raise the context limit with CMF_MAX_SEQ:

CMF_MAX_SEQ=131072 cortiq run spark-x2.6-4b-q8_2f.cmf --prompt "..." --max-tokens 4096

Verify the download

sha256sum -c spark-x2.6-4b-q8_2f.cmf.sha256
sha256sum -c spark-x2.6-4b-q4tp.cmf.sha256
cortiq verify spark-x2.6-4b-q8_2f.cmf
cortiq info   spark-x2.6-4b-q8_2f.cmf

SHA-256:

  • spark-x2.6-4b-q8_2f.cmf — e9331f8f1c620fee81c7f673bdcf702dcd4c81458111f10d258c425cf330494f
  • spark-x2.6-4b-q4tp.cmf — 76fcaafe19e8c7119838bd2c1343751c2fdbcb37282417eb2838357ffd57937d

Weights derive from XHToken's release and remain under its Apache-2.0 terms.


Документация на русском

Spark-X2.6-4B (4.11 B dense, гибридное внимание: 9 полных слоёв + 27 слоёв со скользящим окном 512 токенов, контекст до 1M токенов, режим рассуждений, вызов инструментов) в виде отдельных файлов CMF. Запускается движком cortiq на Rust без Python и ML-фреймворков: GPU NVIDIA, AMD и Intel через Vulkan/DX12, Apple silicon через Metal, а также CPU.

X2.6 сохраняет архитектуру Spark-X2.5-4B и улучшен постобучение (код, агентные сценарии, длинный контекст, многоязычие, рассуждения).

Быстрый старт

cargo install cortiq-cli
hf download infosave/Spark-X2.6-4B-cmf spark-x2.6-4b-q8_2f.cmf --local-dir .
cortiq run spark-x2.6-4b-q8_2f.cmf --prompt "Объясни квиксорт в трёх предложениях." --no-think

Используйте cortiq 0.8.31 или новее; готовые сборки для Linux, macOS и Windows — на странице релизов. --no-think даёт прямой ответ; без него модель сначала рассуждает в блоке […], поэтому увеличьте --max-tokens (по умолчанию 256).

Файлы

файл квантизация размер ppl wikitext-2 назначение
spark-x2.6-4b-q8_2f.cmf 8 бит (q8_2f), эмбеддинги/нормы f16 4 135 951 050 Б (4.14 ГБ) 10.71 по умолчанию: максимальная точность
spark-x2.6-4b-q4tp.cmf 4 бита (q4tp), эмбеддинги/нормы f16 2 161 419 978 Б (2.16 ГБ) 11.88 вдвое меньше памяти, быстрее декодирование (+10.9 % ppl)

Оба файла содержат 362 тензора: 253 квантованных проекции + 109 f16 (эмбеддинги, нормы, ротационные буферы), квантованы из bf16-чекпойнта.

Перплексия: первые 4096 токенов wikitext-2 test с BOS-токеном модели в начале, cortiq ppl --tokens 4096, точное внимание, замер на RTX 2000 Ada. Контроль тем же командой на Spark-X2.5-4B-q8_2f.cmf — 10.94 (в карточке X2.5 указано 10.68; текстовый файл здесь пересобран из parquet, поэтому остаётся небольшая разница протокола).

Скорость

cortiq bench --core --ignore-eos --tokens 120, декодирование, ток/с, один поток:

железо бэкенд q8_2f q4tp
RTX 2000 Ada (16 ГБ) Vulkan 41.5 67.2
Xeon E5-2699 v4, 6 ядер CPU 4.5 4.8

Обработка промпта и декодирование на глубине (--ctx, синтетический промпт из N токенов, RTX 2000 Ada, Vulkan):

промпт q8_2f префилл q4tp префилл q8_2f декод q4tp декод
1 000 токенов 370.3 350.6 38.0 58.7
16 000 токенов 400.2 325.8 20.3 36.9

Время до первого токена на том же GPU при промпте бенча в 41 токен: 0.91 с (q8_2f), 0.42 с (q4tp). Граф захватывает 119 из 120 токенов бенча.

Веса, резидентные на GPU: 4.11 ГБ (q8_2f), 2.14 ГБ (q4tp) при заявленном бюджете VRAM 14.49 ГБ — оба профиля помещаются на карте с 16 ГБ и при длинном контексте.

Проверки качества

Батарея cortiq run --no-think на greedy: оба файла, CPU и GPU (Vulkan); ответы совпадают между файлами и бэкендами, кроме отмеченного случая:

проверка ожидание результат
17 * 23 391 ✓
1234 + 5678 6912 ✓
столица Франции, одно слово Paris ✓
начало Второй мировой войны (рус.) 1939 ✓
однострочный Python: сумма 2 и 3 print(2 + 3) ✓
силлогизм: все кошки / некоторые млекопитающие плавают invalid ✓
силлогизм: все розы / некоторые цветы быстро вянут invalid ошибка — «valid»/«да» на обоих файлах, CPU и GPU
ровно два предложения о роботе-садовнике 2 предложения ✓
одно предложение о фотосинтезе 1 предложение ✓

Силлогизм про розы проверяет недоспределённую посылку; модель стабильно его промахивает, при этом структурно тот же случай про кошек проходит. Это известная ошибка рассуждения, а не артефакт квантизации — оба профиля и оба бэкенда ведут себя одинаково.

Использование

cortiq run spark-x2.6-4b-q8_2f.cmf                             # интерактивный чат
cortiq run spark-x2.6-4b-q8_2f.cmf --prompt "..."              # один ответ с рассуждением
cortiq run spark-x2.6-4b-q8_2f.cmf --prompt "..." --no-think   # ответ без блока рассуждений
cortiq run spark-x2.6-4b-q8_2f.cmf --prompt "..." --greedy     # детерминированный вывод

XHToken рекомендует temperature 1.0 и top-p 0.95 (пример генерации upstream: temperature=1.0, top_p=0.95, top_k=0):

cortiq run spark-x2.6-4b-q8_2f.cmf --temperature 1.0 --top-p 0.95 --top-k 0 --min-p 0 --rep-penalty 1.0 --max-tokens 4096 --prompt "..."

Без флагов CLI использует temperature 0.7, top-p 0.9, top-k 40, min-p 0.05, repetition penalty 1.1 и не более 256 новых токенов. --top-k 0 и --rep-penalty 1.0 отключают эти фильтры.

Сервер с OpenAI-совместимым API:

cortiq serve spark-x2.6-4b-q8_2f.cmf --port 8080

curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model": "spark-x2.6-4b-q8_2f", "temperature": 1.0, "top_p": 0.95,
       "messages": [{"role": "user", "content": "Привет!"}]}'

Эндпоинты /v1/chat/completions, /v1/completions, /v1/models и веб-панель на том же порту. --host 127.0.0.1 оставляет сервер локальным. Ответ имеет вид <think>…[…] ответ; "enable_thinking": false даёт прямой ответ, temperature: 0 — greedy. tools передаются в обычном формате OpenAI и проходят через встроенный шаблон чата.

Железо

Apple silicon (Metal). Работает на GPU без настройки.

Выбор GPU (Vulkan). cortiq gpu показывает адаптеры; CMF_GPU_ADAPTER=1 закрепляет нужный. Если на Linux список пуст, установите libvulkan1 libglvnd0 libegl1 libgl1 libglx0; на машинах без дисплея задайте XDG_RUNTIME_DIR=/tmp.

Только CPU. CMF_GPU=0 оставляет всё на процессоре. Строки CPU выше — 6-ядерный Xeon E5-2699 v4 на 2.2 ГГц; CMF_THREADS=6 оказался лучшим из свипа 6/12.

Длинный контекст

Модель поддерживает 1 048 576 токенов, окно 512 токенов на 27 слоях из 36, полное внимание на остальных 9. Измеренный KV-стейт (bench --ctx): 294 912 000 Б на 1 000 токенов и 1 335 361 536 Б (1.24 ГиБ) на 16 000 токенов — около 72 КБ на токен для 9 полных слоёв (4 KV-головы × 256 измерений × K+V × f32); скользящие слои хранят только строки своего окна. Лимит контекста поднимается через CMF_MAX_SEQ:

CMF_MAX_SEQ=131072 cortiq run spark-x2.6-4b-q8_2f.cmf --prompt "..." --max-tokens 4096

Проверка загрузки

sha256sum -c spark-x2.6-4b-q8_2f.cmf.sha256
sha256sum -c spark-x2.6-4b-q4tp.cmf.sha256
cortiq verify spark-x2.6-4b-q8_2f.cmf
cortiq info   spark-x2.6-4b-q8_2f.cmf

SHA-256:

  • spark-x2.6-4b-q8_2f.cmf — e9331f8f1c620fee81c7f673bdcf702dcd4c81458111f10d258c425cf330494f
  • spark-x2.6-4b-q4tp.cmf — 76fcaafe19e8c7119838bd2c1343751c2fdbcb37282417eb2838357ffd57937d

Веса получены из релиза XHToken и распространяются на условиях Apache-2.0.


中文文档

Spark-X2.6-4B(4.11 B dense, 混合注意力:9 层全注意力 + 27 层 512 token 滑动窗口,最长 1M token 上下文, 支持思考模式与工具调用)打包为独立的 CMF 文件,由 cortiq 运行——一个不依赖 Python 和机器学习框架的 Rust 推理引擎: NVIDIA、AMD、Intel 显卡走 Vulkan/DX12,Apple silicon 走 Metal,也可在 CPU 上运行。

X2.6 保持 Spark-X2.5-4B 的架构,改进了后训练(代码、智能体、长上下文、 多语言、推理)。

快速开始

cargo install cortiq-cli
hf download infosave/Spark-X2.6-4B-cmf spark-x2.6-4b-q8_2f.cmf --local-dir .
cortiq run spark-x2.6-4b-q8_2f.cmf --prompt "用三句话解释快速排序。" --no-think

建议使用 cortiq 0.8.31 或更新版本;Linux、macOS、Windows 预编译二进制见 发布页面。--no-think 直接 给出回答;不加该参数时模型会先在 […] 块中思考,请调高 --max-tokens(默认 256)。

文件

文件 量化 大小 wikitext-2 困惑度 适用场景
spark-x2.6-4b-q8_2f.cmf 8 位投影(q8_2f),嵌入/归一化 f16 4 135 951 050 B(4.14 GB) 10.71 默认:最高保真度
spark-x2.6-4b-q4tp.cmf 4 位投影(q4tp),嵌入/归一化 f16 2 161 419 978 B(2.16 GB) 11.88 内存减半、解码更快(困惑度 +10.9%)

两个文件均含 362 个张量:253 个量化投影 + 109 个 f16(嵌入、归一化、 旋转缓冲),由 bf16 检查点量化而来。

困惑度:wikitext-2 test 的前 4096 个 token,开头加模型的 BOS token, cortiq ppl --tokens 4096,精确注意力,测于 RTX 2000 Ada。用同一命令在 Spark-X2.5-4B-q8_2f.cmf 上交叉验证为 10.94(该卡标注 10.68;此处文本 从 parquet 重建,仍存在微小的协议差异)。

性能

cortiq bench --core --ignore-eos --tokens 120,解码速度,tok/s,单流:

硬件 后端 q8_2f q4tp
RTX 2000 Ada(16 GB) Vulkan 41.5 67.2
Xeon E5-2699 v4,6 核 CPU 4.5 4.8

提示词处理与深度解码(--ctx,N token 合成提示词,RTX 2000 Ada,Vulkan):

提示词 q8_2f 预填充 q4tp 预填充 q8_2f 解码 q4tp 解码
1 000 token 370.3 350.6 38.0 58.7
16 000 token 400.2 325.8 20.3 36.9

同一 GPU 上 41 token 提示词的首 token 延迟:0.91 s(q8_2f)、0.42 s (q4tp)。图捕获了 120 个 bench token 中的 119 个。

GPU 常驻权重:4.11 GB(q8_2f)、2.14 GB(q4tp),VRAM 预算为 14.49 GB—— 两个配置在长上下文下都能放进 16 GB 显卡。

质量检查

greedy cortiq run --no-think 测试组,两个文件、CPU 与 GPU(Vulkan)均 已运行;除标注项外答案一致:

检查项 期望 结果
17 * 23 391 通过
1234 + 5678 6912 通过
法国首都(单词) Paris 通过
二战开始年份(俄语) 1939 通过
打印 2+3 的单行 Python print(2 + 3) 通过
三段论:所有猫 / 有些哺乳动物会游泳 invalid 通过
三段论:所有玫瑰 / 有些花凋谢快 invalid 失败——两个文件、CPU 和 GPU 都答“valid/是”
恰好两句关于园艺机器人 2 句 通过
一句话解释光合作用 1 句 通过

玫瑰/花的题目考查中项不周延,模型稳定地答错;结构相同的猫/哺乳动物题 则通过。这是已知的推理失误,而非量化伪影——两种量化配置和两个后端表现 一致。

使用

cortiq run spark-x2.6-4b-q8_2f.cmf                             # 交互式对话
cortiq run spark-x2.6-4b-q8_2f.cmf --prompt "..."              # 单次回答(含思考)
cortiq run spark-x2.6-4b-q8_2f.cmf --prompt "..." --no-think   # 不输出思考块
cortiq run spark-x2.6-4b-q8_2f.cmf --prompt "..." --greedy     # 确定性输出

XHToken 推荐 temperature 1.0、top-p 0.95(上游生成示例: temperature=1.0, top_p=0.95, top_k=0):

cortiq run spark-x2.6-4b-q8_2f.cmf --temperature 1.0 --top-p 0.95 --top-k 0 --min-p 0 --rep-penalty 1.0 --max-tokens 4096 --prompt "..."

不加参数时 CLI 使用 temperature 0.7、top-p 0.9、top-k 40、min-p 0.05、 repetition penalty 1.1,最多生成 256 个新 token。--top-k 0 和 --rep-penalty 1.0 关闭这两项过滤。

OpenAI 兼容 API 服务器:

cortiq serve spark-x2.6-4b-q8_2f.cmf --port 8080

curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model": "spark-x2.6-4b-q8_2f", "temperature": 1.0, "top_p": 0.95,
       "messages": [{"role": "user", "content": "你好!"}]}'

提供 /v1/chat/completions、/v1/completions、/v1/models 端点,同一端口 还有网页控制台。--host 127.0.0.1 仅限本机访问。回答形式为 […] […] 回答;请求中 "enable_thinking": false 直接给出回答, temperature: 0 表示贪心解码。tools 按常规 OpenAI 格式传入,经内置聊天 模板处理。

硬件

Apple silicon(Metal)。 开箱即用 GPU 加速。

选择显卡(Vulkan)。 cortiq gpu 列出所有适配器;CMF_GPU_ADAPTER=1 指定使用哪一块。若 Linux 上列表为空,请安装 libvulkan1 libglvnd0 libegl1 libgl1 libglx0;无显示器的机器需设置 XDG_RUNTIME_DIR=/tmp。

仅用 CPU。 CMF_GPU=0 让所有计算留在 CPU 上。表中 CPU 数据来自 2.2 GHz 的 6 核 Xeon E5-2699 v4;CMF_THREADS=6 是 6/12 线程扫描中最优的。

长上下文

模型支持 1 048 576 个 token,36 层中 27 层为 512 token 滑动窗口,其余 9 层 全注意力。实测 KV 状态(bench --ctx):1 000 token 时 294 912 000 B, 16 000 token 时 1 335 361 536 B(1.24 GiB)——9 个全注意力层每 token 约 72 KB(4 个 KV 头 × 256 维 × K+V × f32);滑动层只保留窗口读取的行。 用 CMF_MAX_SEQ 提高上下文限制:

CMF_MAX_SEQ=131072 cortiq run spark-x2.6-4b-q8_2f.cmf --prompt "..." --max-tokens 4096

校验下载

sha256sum -c spark-x2.6-4b-q8_2f.cmf.sha256
sha256sum -c spark-x2.6-4b-q4tp.cmf.sha256
cortiq verify spark-x2.6-4b-q8_2f.cmf
cortiq info   spark-x2.6-4b-q8_2f.cmf

SHA-256:

  • spark-x2.6-4b-q8_2f.cmf — e9331f8f1c620fee81c7f673bdcf702dcd4c81458111f10d258c425cf330494f
  • spark-x2.6-4b-q4tp.cmf — 76fcaafe19e8c7119838bd2c1343751c2fdbcb37282417eb2838357ffd57937d

权重来自 XHToken 的发布,受其 Apache-2.0 条款约束。

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

Model tree for infosave/Spark-X2.6-4B-cmf

Quantized
(30)
this model