llama.cpp 新增了模型支持,使 Kimi-K3.1-Pro 能够在本地运行。希望运行该模型的开发者可以利用现有模型转换基础,同时也需要关注新引入的输入选择功能所需的缓存内存。

1. 在现有结构上加入输入选择功能

b12180 版本复用 K3 的执行图和转换器,支持 Kimi-K3.1-Pro 的结构,执行图用于表示运算之间的连接顺序。原本关注所有输入、计算输入间关联度的注意力层,被替换为由索引器先选出待关注键的 DSA,即仅选择部分键的注意力方式。索引器相当于检索模块,负责筛选值得关注的输入。

在此次文本检查点,即保存模型训练状态的文件中,只有部分层加入了索引器,其他现有注意力层保持不变。该版本给出的配置如下。

表:Kimi-K3.1-Pro 文本检查点的索引器配置

条件:Kimi-K3.1-Pro 文本检查点

在现有结构上加入输入选择功能
项目值
总层数93
DSA 层数24
索引器计算分支(头)数32
索引器键长度128
选择的键数2048
每个 DSA 层的索引器张量数4

这一配置表明,它并非将整个模型替换为新方式,而是让原有层与带有索引器的层共同运行。表中数值是同一检查点的结构设置,与后文验证结果的用途不同。

2. 复用计算路径,但增加缓存

实现并未单独收集选中的键,而是在整个缓存上应用掩码,标记需要排除的项目,从而复用现有稀疏闪电注意力路径,以选中部分为主进行快速计算。内存中保留 DSA 层的专用键缓存和索引器键缓存,同时维持原有层从先前计算继承的状态。

开发者获得的好处是能将索引器的选择结果接入现有稀疏计算路径。代价是需要额外管理各层索引器张量和键缓存;在稀疏路径之外,即使应用掩码,仍需承担将整个缓存的键与查询进行比对的计算成本,查询是模型针对输入生成的检索向量。

因此,引入这一变更时,除了确认模型是否受支持,还应关注实际执行是否利用了稀疏路径。只有同时考察减少选择对象的结构与运行时实际执行的计算范围,才能判断资源分配。

3. 转换和量化也兼顾选择准确性

转换器读取检查点中的索引器配置,并将其转换为内部设置。它还会检查索引器所在层的列表是否与现有全注意力层完全一致,因此模型结构转换过程包含对应关系检查。

用于选择计算的三类索引器张量被排除在量化设置覆盖范围之外,量化是通过缩减数值表示来降低精度的处理。该版本给出的理由是,排名靠前的键的选择对这些张量的精度很敏感。这一处理考虑了选择准确性,与将通用量化设置统一应用于索引器的方式不同。

另一方面,负责分担计算的专家权重,即特定计算模块的学习参数,与现有 K3 一样,在保留 MXFP4 量化格式的情况下重新打包,不执行将压缩数值表示恢复到原始精度的反量化处理。这意味着模型内部对索引器和专家权重采用了不同处理方式。

4. 验证聚焦转换一致性与选择行为

根据发布说明,对从 Hugging Face 检查点中提取的 8 个层进行比对后,38 个张量完全一致。还检查了索引器元数据,即描述配置的附加信息是否与设置相符,并通过了模型架构的测试用例及完整架构测试套件。

选择结果以关注输入所有位置的全注意力方式为基准进行比较。当选择数量大于上下文长度时,表示语言预测误差的困惑度(PPL)相同;强制将选择数量设为小于上下文长度时,结果则发生变化。这说明验证不仅检查了转换后的权重,也确认了改变选择范围时的行为。

转换器会跳过处理图像特征的视觉塔及视觉信息连接组件,因此此次支持仅限文本。该版本未给出处理速度、内存用量的测量结果或具体 PPL 数值。

b12180 的核心是将新模型的输入选择结构接入现有执行基础,决定是否采用时,应同时考察模型兼容性、稀疏计算路径和缓存成本。