事情本身不复杂,线索都在日志里。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。
容易忽略的是,自转模型出问题先怀疑转换脚本版本,运行时与转换器要同源,混合版本最容易出现层名对不上。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
