加载大模型时报找不到 index.json,目录里确实有一堆分片文件,可就是拼不起来。

一开始怀疑是「下载时只勾选了部分分片」,查了一圈,方向不对。

把日志和配置对完,能解释这个现象的基本就这几处。分片文件是从别处复制来的,索引没带上。还有一种是索引里的文件名与实际不一致。

另外,模型本身是单文件格式,被误当成多分片。

动手时先列出目录里的全部文件

python -c "import os;print(sorted(os.listdir('./model')))"

再往下确认索引里的键与实际文件对应

python -c "import json;print(list(json.load(open('model/model.safetensors.index.json'))['weight_map'].values())[:3])"

缺少索引时从官方仓库补齐

huggingface-cli download Qwen/Qwen2.5-7B-Instruct --include '*.json' --local-dir ./model

剩下的就是加载验证参数是否完整

python -c "from transformers import AutoModelForCausalLM as M;print(M.from_pretrained('./model').config.model_type)"

同样的操作我在测试机上先走了一遍,线上只做验证过的部分。

恢复的判定其实很直接。模型能完整加载并打印结构信息,分片被正确拼合,推理输出正常。

容易忽略的是,分片文件名是哈希命名,随便改名会让索引对不上,复制模型时一定要连索引文件一起带走。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189