事情本身不复杂,线索都在日志里。Windows 11 上装 Ollama 0.5.4,把自己用 convert_hf_to_gguf 转出的 qwen2 模型导进去,ollama run 直接报 error: failed to load model: tensor ‘blk.0.attn_norm.weight’ not found,同目录的官方向量版本却能跑。

第一反应是「量化时用的是 q4_0 老格式,新版本运行时不再兼容」,验证下来不成立。

原因不止一个,得分开看。转换脚本与运行时对架构命名不一致,层名对不上。还有一种是GGUF 里少了 metadata 里的架构字段,加载器猜错类型。

不容易想到的是,内存不足时先报张量缺失,掩盖了真正的 OOM。

先看 GGUF 的头信息字段

python -c "import gguf;r=gguf.GGUFReader('m.gguf');print([k for k in r.fields if 'arch' in k])"

随后按当前运行时的脚本重新转换并量化为 q4_K_M

python convert_hf_to_gguf.py ./hf --outfile m.gguf --outtype q8_0

接着用 Modelfile 导入再单独跑一次

ollama create qwen-test -f Modelfile

末了查看服务端日志里的真实原因

Get-Content "$env:LOCALAPPDATA\Ollama\server.log" -Tail 50

改完先别撤,确认这几项。ollama run 能正常输出中文回答,ollama list 里模型大小合理,日志不再出现 tensor not found。

容易忽略的是,自转模型出问题先怀疑转换脚本版本,运行时与转换器要同源,混合版本最容易出现层名对不上。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189