事情本身不复杂,线索都在日志里。写合并配置时执行失败,提示某个字段不是合法参数,按示例抄的写法却报错。
第一反应是「参数类型写成了字符串而非数字」,验证下来不成立。
把日志和配置对完,能解释这个现象的基本就这几处。配置里的字段名随版本变化。另一种情况是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
怎么算真的好了,看的是同一批现象。合并正常执行并产出完整权重,加载后模型能正常推理,输出风格介于两个来源之间。
合并大模型非常吃内存与磁盘,先用小参数模型跑通配置,能避免浪费大量时间在最后一步失败。报错文案容易误导,真正的原因往往在相邻那一层的日志里。