webmp3/Sakura-Spark-X2.5-4B-GGUF

Source: 🤗text-generationapache-2.04B activated6.9 GBGGUF✓ 4 checksumsupdated 12d ago
or submit a torrent

Sakura — Spark-X2.5-4B (GGUF, three sizes)

Spark-X2.5-4B is a compact general-purpose model for conversation, writing, translation, reasoning, coding and tool use with a hybrid attention architecture and up to 1M tokens of native context (English and Chinese). This repository holds three GGUF files of different size made from the BF16 weights with our measured mixed-codec method. Pick one on the Files page; the table below says what each file is. Independent community quantization, not an official XHToken release. Part of the Sakura Mini line.

Quality at a glance

Same method, same texts, same machine for every file; lower KL divergence means closer to the BF16 original:

  • Sakura-Spark-X2.5-4B-1.71GiB.gguf vs llama.cpp default IQ3_XXS (1.68 GiB): KL divergence to the BF16 original 16 % lower on average over all 3 texts (0.03 GiB larger).
  • Sakura-Spark-X2.5-4B-2.26GiB.gguf vs llama.cpp default IQ4_XS (2.21 GiB): KL divergence to the BF16 original 3 % lower on average over all 3 texts (0.04 GiB larger).
  • Sakura-Spark-X2.5-4B-2.47GiB.gguf vs author's Q4_K_M (2.42 GiB): KL divergence to the BF16 original 38 % lower on average over all 3 texts (0.05 GiB larger).

Why: the bit budget per tensor is allocated from measured sensitivity (see How it was made), not from fixed rules. Full table below.

Which file should I take?

File For
Sakura-Spark-X2.5-4B-1.71GiB.gguf (1.70 GiB, 3.56 bpw) smallest: for tight memory budgets; expect visible quality loss
Sakura-Spark-X2.5-4B-2.26GiB.gguf (2.25 GiB, 4.70 bpw) middle: best balance of size and quality for most machines
Sakura-Spark-X2.5-4B-2.47GiB.gguf (2.46 GiB, 5.15 bpw) largest: closest to the BF16 original of the three

The files

File Size bits/weight KLD en KLD dev KLD wiki same top token (avg) Tensor types by size
Sakura-Spark-X2.5-4B-1.71GiB.gguf 1.70 GiB 3.56 0.2437 0.1258 0.3471 83.7 % IQ3_S 47%, IQ4_XS 16%, IQ3_XXS 15%, Q4_K 12%, Q3_K 8%
Sakura-Spark-X2.5-4B-2.26GiB.gguf 2.25 GiB 4.70 0.0580 0.0356 0.1045 91.4 % IQ4_XS 55%, Q5_K 44%
Sakura-Spark-X2.5-4B-2.47GiB.gguf 2.46 GiB 5.15 0.0387 0.0208 0.0578 93.1 % Q5_K 77%, IQ4_XS 20%

"Tensor types by size" lists the share of the file's bytes per ggml type (all are standard llama.cpp types, so the files run in stock llama.cpp). Quality columns: mean KL divergence of the quantized model's next-token distribution against the BF16 source on held-out text (lower is better) and how often the most likely token is unchanged (higher is better).

Comparison at similar size

Same texts, same context, same chunks, measured by us with llama-perplexity (BF16 source = reference; PPL of the BF16 model: en: 2.626, dev: 1.848, wiki: 17.760). The reference quants are: llama.cpp default recipe, same importance matrix (ours), measured the same way. Sorted by size.

Quant Source Size KLD en KLD dev KLD wiki PPL en same top token (avg)
IQ3_XXS llama.cpp default recipe, same importance matrix (ours) 1.68 GiB 0.2638 0.1614 0.4191 3.390 82.2 %
Sakura-Spark-X2.5-4B-1.71GiB.gguf this repository 1.71 GiB 0.2437 0.1258 0.3471 2.674 83.7 %
IQ4_XS llama.cpp default recipe, same importance matrix (ours) 2.21 GiB 0.0645 0.0352 0.1054 2.779 91.1 %
Sakura-Spark-X2.5-4B-2.26GiB.gguf this repository 2.26 GiB 0.0580 0.0356 0.1045 2.841 91.4 %
author's Q4_K_M XHToken (author) 2.42 GiB 0.0601 0.0366 0.0912 2.702 91.5 %
Sakura-Spark-X2.5-4B-2.47GiB.gguf this repository 2.47 GiB 0.0387 0.0208 0.0578 2.786 93.1 %
author's Q8_0 XHToken (author) 4.07 GiB 0.0017 0.0007 0.0028 2.618 99.0 %

Method: 12 chunks of 512 tokens per text; texts: English held-out text, developer-text held-out set, English encyclopedia held-out text (not used in any calibration). Single measurement on one machine; small KLD differences at similar size are not a quality ranking.

How it was made

  1. The source is the author's full-precision GGUF Spark-X2.5-4B.gguf from XHToken/Spark-X2.5-4B-GGUF (unchanged); the importance matrix was computed by us (llama-imatrix).
  2. Every large weight matrix was quantized once per candidate type (Q2_K, IQ2_S, IQ3_XXS, IQ3_S, Q3_K, IQ4_XS, Q4_K, Q5_K, Q6_K, Q8_0) with llama-quantize and the importance matrix; the error of each choice was estimated per matrix (importance-weighted) and scaled by a sensitivity factor measured with real KL divergence: every group of tensors (for example the FFN down projections, the attention value projections, the first and last layers) was moved alone to a lower-bit type, and the KL divergence it caused was compared with its quantization error.
  3. An exact budget allocation (multiple-choice knapsack over bytes) picked one type per matrix for each target size; the final model was assembled from the stored tensors without re-quantizing. We do not publish per-tensor choices. Norms, small tensors and the multi-token-prediction layers stay at high precision.

Limits

  • Measured only with KL divergence and perplexity on short held-out texts and not with downstream benchmarks; do not read it as a task-quality claim.
  • Quantization always costs some quality; the smallest file costs the most.
  • The spark2_5 architecture needs llama.cpp b10828 or newer (official builds).

Credits


中文说明 · 樱花 (Simplified Chinese)

English above. 本节为上文的中文翻译(Sakura = 樱花 yīnghuā);完整的独立中文版见 README_zh.md。

Sakura — Spark-X2.5-4B(GGUF,三种大小)

Spark-X2.5-4B 是一个紧凑的通用模型,可用于对话、写作、翻译、推理、编程和工具使用,采用混合注意力架构,原生上下文最长可达 1M token(支持英语和中文)。本仓库包含 三个不同大小的 GGUF 文件,由 BF16 权重通过我们实测得出的混合编码方法制作。请在 Files 页面选择其中一个;下表说明了每个文件的用途。 这是独立的社区量化版本,不是 XHToken 的官方发布。属于 Sakura Mini 系列。

质量概览

每个文件使用相同的方法、相同的文本、同一台机器;KL 散度越低,越接近 BF16 原始模型:

  • Sakura-Spark-X2.5-4B-1.71GiB.gguf 对比 llama.cpp 默认的 IQ3_XXS (1.68 GiB):相对于 BF16 原始模型,在全部 3 个文本上平均 KL 散度 低 16 %(大 0.03 GiB)。
  • Sakura-Spark-X2.5-4B-2.26GiB.gguf 对比 llama.cpp 默认的 IQ4_XS (2.21 GiB):相对于 BF16 原始模型,在全部 3 个文本上平均 KL 散度 低 3 %(大 0.04 GiB)。
  • Sakura-Spark-X2.5-4B-2.47GiB.gguf 对比作者的 Q4_K_M (2.42 GiB):相对于 BF16 原始模型,在全部 3 个文本上平均 KL 散度 低 38 %(大 0.05 GiB)。

原因:每个张量的比特预算是根据实测的敏感度分配的(见 制作方式),而不是按固定规则。完整表格见下文。

我该选哪个文件?

文件 适用场景
Sakura-Spark-X2.5-4B-1.71GiB.gguf(1.70 GiB,3.56 bpw) 最小:适合内存预算紧张的情况;预计质量会有明显损失
Sakura-Spark-X2.5-4B-2.26GiB.gguf(2.25 GiB,4.70 bpw) 居中:对大多数机器而言,大小与质量的最佳平衡
Sakura-Spark-X2.5-4B-2.47GiB.gguf(2.46 GiB,5.15 bpw) 最大:三者中最接近 BF16 原始模型

这些文件

文件 大小 bits/weight KLD en KLD dev KLD wiki same top token (avg) 各张量类型(按大小)
Sakura-Spark-X2.5-4B-1.71GiB.gguf 1.70 GiB 3.56 0.2437 0.1258 0.3471 83.7 % IQ3_S 47%, IQ4_XS 16%, IQ3_XXS 15%, Q4_K 12%, Q3_K 8%
Sakura-Spark-X2.5-4B-2.26GiB.gguf 2.25 GiB 4.70 0.0580 0.0356 0.1045 91.4 % IQ4_XS 55%, Q5_K 44%
Sakura-Spark-X2.5-4B-2.47GiB.gguf 2.46 GiB 5.15 0.0387 0.0208 0.0578 93.1 % Q5_K 77%, IQ4_XS 20%

“各张量类型(按大小)”列出每个 ggml 类型占文件字节数的比例(全部是标准的 llama.cpp 类型,因此这些文件可在原版 llama.cpp 中运行)。质量列:量化模型的下一个 token 分布相对于 BF16 源文件在留出文本上的平均 KL 散度(越低越好),以及最可能的 token 保持不变的频率(越高越好)。

相近大小的比较

相同的文本、相同的上下文、相同的分块,由我们使用 llama-perplexity 测量(BF16 源文件 = 参照;BF16 模型的 PPL:en: 2.626,dev: 1.848,wiki: 17.760)。参照量化为:llama.cpp 默认配方、相同的重要性矩阵(我们的)、以相同方式测量。按大小排序。

量化 来源 大小 KLD en KLD dev KLD wiki PPL en same top token (avg)
IQ3_XXS llama.cpp 默认配方,相同的重要性矩阵(我们的) 1.68 GiB 0.2638 0.1614 0.4191 3.390 82.2 %
Sakura-Spark-X2.5-4B-1.71GiB.gguf 本仓库 1.71 GiB 0.2437 0.1258 0.3471 2.674 83.7 %
IQ4_XS llama.cpp 默认配方,相同的重要性矩阵(我们的) 2.21 GiB 0.0645 0.0352 0.1054 2.779 91.1 %
Sakura-Spark-X2.5-4B-2.26GiB.gguf 本仓库 2.26 GiB 0.0580 0.0356 0.1045 2.841 91.4 %
author's Q4_K_M XHToken(作者) 2.42 GiB 0.0601 0.0366 0.0912 2.702 91.5 %
Sakura-Spark-X2.5-4B-2.47GiB.gguf 本仓库 2.47 GiB 0.0387 0.0208 0.0578 2.786 93.1 %
author's Q8_0 XHToken(作者) 4.07 GiB 0.0017 0.0007 0.0028 2.618 99.0 %

方法:每个文本取 12 个块,每块 512 个 token;文本为:英文留出文本、开发者文本留出集、英文百科留出文本(未用于任何校准)。这是在一台机器上的单次测量;相近大小下 KLD 的细小差异并不构成质量排名。

制作方式

  1. 来源是 XHToken/Spark-X2.5-4B-GGUF 中作者的全精度 GGUF Spark-X2.5-4B.gguf(未改动);重要性矩阵由我们自己(llama-imatrix)计算。
  2. 每个大型权重矩阵针对每种候选类型(Q2_K、IQ2_S、IQ3_XXS、IQ3_S、Q3_K、IQ4_XS、Q4_K、Q5_K、Q6_K、Q8_0)使用 llama-quantize 和重要性矩阵各量化一次;每种选择的误差按矩阵估计(按重要性加权),并乘以一个 用真实 KL 散度测得的敏感度系数:每组张量(例如 FFN down 投影、注意力 value 投影、首尾几层)被单独移到较低比特的类型,并将它造成的 KL 散度与其量化误差进行比较。
  3. 精确的预算分配(以字节为单位的多选背包问题)为每个目标大小为每个矩阵挑选一种类型;最终模型由已存储的张量组装而成,无需重新量化。 我们不公布逐张量的选择。归一化层、小张量和多 token 预测层保持高精度。

局限

  • 仅用短的留出文本上的 KL 散度和困惑度测量,没有使用下游基准测试;请勿将其理解为任务质量的声明。
  • 量化总会损失一些质量;最小的文件损失最大。
  • spark2_5 架构需要 llama.cpp b10828 或更新版本(官方构建)。

致谢