离线模式下Hugging Face加载模型失败:缺失configuration_internvl_chat.py
问题原因
你遇到的问题是因为OpenGVLab/InternVL2_5-1B属于自定义模型,它的配置类(configuration_internvl_chat.py)和模型类代码并非内置在transformers库中,而是存储在Hugging Face模型仓库的自定义代码文件里。save_pretrained()只会保存模型权重、基础配置文件(如config.json),不会自动下载并保存这些自定义代码文件,导致服务器无网时无法找到对应的类定义。
解决步骤
在有网环境完整下载模型相关文件:
在你的笔记本上,除了用save_pretrained()保存模型权重,还要下载模型仓库中的所有自定义代码文件:huggingface-cli download OpenGVLab/InternVL2_5-1B --include "*.py" --local-dir ./local/path这条命令会把模型仓库里所有
.py格式的自定义代码(包括configuration_internvl_chat.py、modeling_internvl_chat.py等)下载到你指定的./local/path目录下,和之前save_pretrained()生成的文件放在一起。完整同步目录到服务器:
用rsync同步时,确保把./local/path目录下的所有文件和子目录都同步到服务器,不能遗漏任何文件:rsync -avz ./local/path/ user@server:/remote/path/服务器端加载模型:
在服务器上执行加载命令时,确保路径正确,且transformers版本和笔记本上的版本完全一致(版本不一致可能导致自定义代码兼容性问题):from transformers import AutoModel model = AutoModel.from_pretrained("/remote/path", local_files_only=True)
额外说明
手动添加单个configuration_internvl_chat.py无效的原因:这类自定义模型通常需要配套的modeling_xxx.py等其他代码文件,且文件版本必须和模型权重、transformers版本匹配,单独复制一个文件无法满足依赖要求。
内容的提问来源于stack exchange,提问作者LudvigH

