模型运行工具 llama.cpp 已合入 Xing4.0 支持,想直接运行该模型的开发者可在 CPU 和 NVIDIA GPU 上进行推理。同时新增了将模型权重转换为运行文件的功能,从准备到运行均可在同一工具内完成。
1. 从模型注册到推理的支持
2026年11月5日合并的拉取请求包括模型架构及超参数注册、多维数值数组即张量的加载、转换脚本,以及表示模型运算执行顺序的推理图实现。架构指模型的计算结构,超参数指训练前设定的模型配置值。此次变更以 16 个提交合入,合并时通过了 28 项检查。
PR 作者表示,已在 Intel Xeon Platinum 8468 上验证 CPU 推理,并在 NVIDIA H800 80GB 上验证 CUDA 推理。据其说明,两种运行环境均通过了检查基本功能是否正常的测试。
2. 组合现有算子构建计算图
按执行顺序组织模型计算的推理图采用现有计算组件组合而成,并未新增 ggml 算子。对于混合残差连接的 mHC,也复用了将多个计算合并执行的融合算子;这些残差连接会将前面多条分支的层输出加到后面的层。
用于预测额外词元的 MTP 已接入现有的推测解码体系,该体系通过验证草稿词元来加快生成。
3. GGUF 转换与 MTP 权重选择
转换脚本在将 Hugging Face 权重转换为 GGUF 的流程中注册了新模型。它基于现有转换代码,调整向模型提供词元顺序信息的位置编码配置,并采用通过 SentencePiece 将句子拆分为词元的分词器路径。
转换时可以排除负责额外预测的 MTP 模块,也可以生成单独文件,仅包含该模块及共享的嵌入、归一化和输出权重。嵌入将词元转换为数值向量,归一化用于调整数值范围。以下为根据这两种选择筛选待保存权重的原始代码。
# --no-mtp: drop the appended NextN block entirely.
if is_mtp and cls.no_mtp:
return None
# --mtp: keep ONLY NextN-block tensors plus the shared embeddings/
# norm/lm_head (so the resulting GGUF carries just the draft head).
if cls.mtp_only and not is_mtp and name not in (
"model.embed_tokens.weight", "model.norm.weight", "lm_head.weight",
):
return None4. 量化质量与基准精度一同列出
作者报告了 29B 模型在不同权重格式下的困惑度。这是衡量句子预测准确程度的指标,数值越低越好。报告同时列出了基准精度 bf16,以及通过量化降低权重存储精度的两种格式的结果。
表:29B 模型不同权重格式的困惑度
条件:29B 模型
单位:PPL
| 权重格式 | PPL |
|---|---|
| bf16 | 8.8403 |
| q8_0 | 8.8616 |
| iq4_nl | 9.1281 |
质量表中,q8_0 的数值接近基准精度,iq4_nl 则更高。
作者表示,为保护对量化敏感的权重精度,指定了 imatrix.dat,并计划近期公开该文件。
5. GPU 吞吐量提升与额外计算成本
作者在 H800 80GB 的 CUDA 环境中使用 llama-bench 测量速度,分别报告了输入处理 pp512 和词元生成 tg128 的结果。表中的误差列是原文中 ± 后面的数值。
表:H800 80GB CUDA 吞吐量
条件:NVIDIA H800 80GB,CUDA,llama-bench pp512/tg128
单位:词元/秒
| 权重格式 | pp512 | pp512 误差 | tg128 | tg128 误差 |
|---|---|---|---|---|
| bf16 | 4835.12 | 22.84 | 103.84 | 0.64 |
| q8_0 | 5639.12 | 591.29 | 136.06 | 0.81 |
| iq4_nl | 5644.56 | 609.36 | 159.29 | 0.74 |
在此次 GPU 测量中,两种量化格式的输入处理和词元生成吞吐量均高于基准精度。原文未明确说明质量表与速度表的模型规模是否相同。
开发者无需新增算子即可在现有运行基础上使用该模型。不过,除训练得到的 hc_scale 权重外,将 post 门乘以固定常数 2.0 的缩放运算,会在每层增加计算节点及执行 GPU 运算代码的内核调用成本。作者表示,直接删除该缩放运算会使 post 门减半,改变计算结果,因此将其列为后续优化对象。
此次合并的核心,是在现有运行基础上打通 Xing4.0 从权重转换到 CPU·CUDA 推理的流程,并将额外计算的优化留作后续任务。
