现场是这样的。加载自己转的 gguf 时报 tensor 数量与预期不符,提示 expected 291 tensors but got 289,文件能打开但推理直接失败。
中间走过弯路,把「量化过程被中断,输出文件不完整」当成主因,改完现象没变。
真正麻烦的地方在于,几个原因的现象几乎一样。转换时权重下载不全,缺了两个分片文件;合并 LoRA 时跳过了部分层;模型结构与转换脚本假设的不一致。
第一件事是核对原始目录里的分片是否齐全
python -c "import glob;print(sorted(glob.glob('./model/*.safetensors')))"
接着重新完整下载后再转换一次
huggingface-cli download Qwen/Qwen2.5-7B-Instruct --local-dir ./model
然后检查转换日志里的张量统计
python convert_hf_to_gguf.py ./model --outfile out.gguf 2>&1 | Select-String tensor
末了用官方提供的 gguf 做对照验证
./llama-cli -m official-q4.gguf -p "hi" -n 8
这次没动代码,只在配置和运行环境上找原因。
恢复的判定其实很直接。重新转换后张量数量与日志声明一致,模型能正常加载并生成连贯文本。
提醒一点。分片下载中断不会报错,只会少文件,转换脚本往往也能跑完,所以下载后一定要核对文件数量与总大小。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。