关键变化
本次 b10830 预发布的核心是将此前分散的注意力 Q/K/V 张量在转换阶段融合。新增的 --fuse-qkv 标志由 convert_hf_to_gguf.py 暴露,传递至 conversion/base.py 的 ModelBase。框架会在 prepare_qkv_fusion 中扫描模型张量映射,判断每层是否同时具备 Q、K、V 权重(及对应的偏置),仅在完整时标记为可融合,避免对不完整层误操作。实际转换时,modify_tensors 会缓存三路张量,待三者齐备后执行 torch.cat 合并为单一 QKV,并以 ggml MODEL_TENSOR.ATTN_QKV 命名写入 GGUF。
该设计面向需要本地量化、频繁转换或对外分发 GGUF 的中国开发者。融合后的文件减少张量数量,降低碎片化,有利于后续量化、内存对齐与推理引擎的连续访问;在支持 QKV 的推理路径上,可减少调度开销。提交 465e49b 由 PikaPikachu 贡献,已通过 GitHub 验证签名,变更涉及 conversion/base.py、convert_hf_to_gguf.py 与 gguf-py 常量定义。
兼容性与迁移条件
该标志为可选,默认关闭,未启用时行为与旧版完全一致,无破坏性变更。启用条件为模型架构在 gguf 常量中声明了 MODEL_TENSOR.ATTN_QKV,且转换输入包含完整的 Q/K/V 权重;若某层缺失或仅有部分偏置,工具会回退为保留原始张量。已有的 GGUF 文件无需重转,推理侧对 QKV 与分离 Q/K/V 均兼容。用户可按需在转换命令中追加 --fuse-qkv 验证,例如 python convert_hf_to_gguf.py --fuse-qkv,转换日志会输出 Fused Q, K, V 提示。
安装与访问与往版一致:从 GitHub Releases 下载对应平台的预编译包(Windows CUDA 12/13、Vulkan、macOS arm64/x64、Ubuntu、Android arm64、iOS XCFramework 等),或自行编译。MIT 许可保持不变,可按许可要求保留版权声明后分发与修改。预编译包于发布时同步上传,下载地址为 releases/download/b10830 前缀。
限制与下一步
- 仅对权重与偏置完整的层生效,部分微调或裁剪模型可能不触发融合;融合过程会缓存张量,若转换异常中断会抛出 QKV fusion did not consume all buffered tensors 校验;当前实现针对 attention 层,不涉及 FFN 的 gate/up 融合;后续可在更多架构上扩展 QKV 支持,建议先在小模型上对比转换前后推理正确性与性能。
对于已在今日使用 b10829 的用户,b10830 可视为增量工具链更新,无需紧急迁移;需要统一 QKV 存储以对接特定推理优化的团队可评估启用。后续版本若补充发布说明,将以同一仓库的 Release 页面为准。