运行WSTQ项目遇报错求助:ModuleNotFoundError与RuntimeError
解决WSTQ项目测试阶段的两个运行错误
1. 处理 ModuleNotFoundError: No module named 'transformers.modeling_roberta'
新版transformers重构了模块结构,modeling_roberta 被移到了 transformers.models.roberta.modeling_roberta 路径下,两种解决方式:
- 要是想用最新版依赖,直接修改项目代码里的导入语句:把所有
from transformers.modeling_roberta import ...替换成from transformers.models.roberta.modeling_roberta import ... - 优先用项目指定的依赖版本,但得注意CUDA和PyTorch的兼容性(对应第二个错误)
2. 处理 RuntimeError: cublas runtime error : the GPU program failed to execute at
这个错误和CUDA/PyTorch匹配、GPU环境直接相关,试试下面的方案:
- 核对CUDA与PyTorch版本:项目指定的PyTorch 1.5.0只兼容CUDA 10.1/10.2,要是你系统装的是CUDA 11.x,肯定出问题。要么装对应PyTorch 1.5.0的CUDA版本,要么升级PyTorch到兼容当前CUDA的版本(比如CUDA 11.1对应PyTorch 1.8.0+),同时把transformers换成适配该PyTorch的版本(比如4.18.0+),再按第一个问题的方法改导入路径
- 减小测试batch size:测试时batch太大容易爆显存触发cublas错误,调小测试代码里的
batch_size参数,或者在测试前加一行torch.cuda.empty_cache()释放显存 - 保证设备一致性:训练用GPU的话,测试别切CPU;非要用CPU测试,加载checkpoint时加
map_location=torch.device('cpu'):model.load_state_dict(torch.load('你的checkpoint路径', map_location=torch.device('cpu'))) - 更新CUDA驱动:驱动太旧也会导致GPU程序执行失败,更新到对应CUDA版本的最新驱动试试
内容的提问来源于stack exchange,提问作者H_88
相关产品推荐
相关产品推荐

