先把当时的情况摆出来。用旧版转换脚本把 Qwen2 转成 gguf,llama-cli 加载时报 llama_model_load: error loading model: unknown model architecture,文件有 4.1G。

排查方向其实有限,先把可能性排一排。转换脚本版本太老,不认识新模型的架构字段。还有一种是直接改了 config 里的 architectures 名称。

不容易想到的是,下载的 gguf 与当前二进制版本不兼容。还有一种情况,模型是多模态结构,需要额外的投影文件。

拉最新代码并重新转换

git clone https://github.com/ggerganov/llama.cpp && cd llama.cpp

再往下用仓库里的转换脚本处理原始权重

python convert_hf_to_gguf.py ./Qwen2.5-7B-Instruct --outfile qwen2.5-7b-f16.gguf

量化到常用档位

./llama-quantize qwen2.5-7b-f16.gguf qwen2.5-7b-q4.gguf Q4_K_M

剩下的就是用对应版本的二进制加载验证

./llama-cli -m qwen2.5-7b-q4.gguf -p "你好" -n 32

报错是间歇性的,我蹲守了半小时才抓到一次完整现场。

别只看报错消失,验证要多做一步。模型加载完成并打印出层数与上下文信息,能正常生成文本,不再出现 unknown architecture。

补一句。转换脚本和推理二进制必须来自同一次编译,混用不同版本的产物经常出现能转换但加载失败的情况。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189