事情本身不复杂,线索都在日志里。写合并配置时执行失败,提示某个字段不是合法参数,按示例抄的写法却报错。

第一反应是「参数类型写成了字符串而非数字」,验证下来不成立。

把日志和配置对完,能解释这个现象的基本就这几处。配置里的字段名随版本变化。另一种情况是slices 与 models 结构不匹配。

不容易想到的是,yaml 缩进错位导致解析成别的结构。

第一件事是确认当前版本支持的字段

mergekit-yaml --help

然后按最小可用配置重写

models:\n  - model: ./base\n    parameters:\n      weight: 1.0

校验 yaml 结构是否正确

python -c "import yaml;print(yaml.safe_load(open('m.yml')))"

等前面都确认过,再用小模型验证流程再合并大模型

mergekit-yaml m.yml ./out --cuda

怎么算真的好了,看的是同一批现象。合并正常执行并产出完整权重,加载后模型能正常推理,输出风格介于两个来源之间。

合并大模型非常吃内存与磁盘,先用小参数模型跑通配置,能避免浪费大量时间在最后一步失败。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189