SimpleTransformers中use_cuda=True设置无效,RTX3070Ti Windows环境下无法启用CUDA
嘿,我来帮你排查一下这个问题!RTX 3070 Ti属于安培架构,对CUDA版本和配套软件有特定要求,咱们一步步来梳理可能的原因和解决办法:
先确认PyTorch是否能识别到GPU
这是最基础的一步,毕竟SimpleTransformers是基于PyTorch运行的。你可以在代码最开头加几行测试代码验证:import torch print(torch.cuda.is_available()) print(torch.cuda.device_count()) print(torch.cuda.get_device_name(0))如果输出是
True、1和你的RTX 3070 Ti显卡名称,说明PyTorch能正常调用GPU,问题出在SimpleTransformers的配置上;如果输出False,那就是PyTorch和CUDA的适配有问题,接着往下看。检查CUDA版本与PyTorch的兼容性
RTX 3070 Ti是安培架构,必须使用CUDA 11.0及以上版本。你虽然装了CUDA Toolkit,但要确保PyTorch是用对应版本的CUDA编译的:- 先激活你的Anaconda环境,运行
nvcc --version查看当前环境的CUDA版本。 - 如果PyTorch版本不匹配,卸载现有PyTorch,重新安装对应版本。比如你用的是CUDA 11.8,就用Anaconda命令:
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
- 先激活你的Anaconda环境,运行
更新GPU驱动到适配版本
即使CUDA版本正确,GPU驱动版本也要跟上。RTX 3070 Ti至少需要450.80.02版本的驱动(对应CUDA 11.0),建议直接去NVIDIA官网下载安装最新的驱动,避免版本不兼容导致的调用失败。调整SimpleTransformers的初始化参数
如果PyTorch能识别GPU,但SimpleTransformers还是无法启用CUDA,试试手动指定CUDA设备:model = ClassificationModel( 'bert', 'bert-base-uncased', num_labels=len(labels), use_cuda=True, args={'cuda_device': 0} )有时候自动检测会出问题,手动指定设备0(单GPU环境下一般就是0)能解决这类问题。
确认Anaconda环境的配置正确性
确保你是在安装了CUDA和对应PyTorch的环境里运行代码,别不小心跑到base环境或者其他未配置的环境里了。激活目标环境后再执行代码,避免依赖混乱。
备注:内容来源于stack exchange,提问作者Stefan

