导入transformers的BertForQuestionAnswering时报SAVE_STATE_WARNING导入错误
问题根因
这个导入错误是由PyTorch版本与transformers库版本不兼容导致的:SAVE_STATE_WARNING 是PyTorch 1.11及更早版本中存在的内部常量,在PyTorch 1.12及以上版本中已被官方移除,你当前安装的transformers版本适配的是旧版PyTorch,因此会抛出导入失败错误。
解决方案
方案1(最推荐):升级transformers到适配高版本PyTorch的最新版本
执行对应包管理命令即可:
pip环境:pip install --upgrade transformers
conda环境:conda update -c huggingface transformers
升级后即可直接兼容当前PyTorch版本,不会产生其他隐藏兼容性问题。方案2:降级PyTorch到1.11.x版本
如果当前项目有固定transformers版本的要求,无法升级transformers,可以将PyTorch降级到包含该常量的版本:pip install torch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0
如需适配特定CUDA版本,可查找对应1.11版本的PyTorch安装命令调整即可。方案3(临时快速修复):运行代码前手动补全缺失常量
不需要修改已安装的库版本,只需在导入transformers相关模块前,手动给torch.optim.lr_scheduler添加缺失的常量即可:import torch.optim.lr_scheduler torch.optim.lr_scheduler.SAVE_STATE_WARNING = "" from transformers import BertForQuestionAnswering该方案仅适合临时测试使用,不建议在正式生产环境中使用。
内容的提问来源于stack exchange,提问作者Scott Bing

