首先,题主有一张显卡,偶尔会在自己的电脑上跑跑数据,练练丹什么的。几年前搭建过环境,最近想用下pytorch的nn.TransformerEncoderLayer库,跑下Transformer在一些任务上的效果。但由于之前的torch版本是1.0,cuda是9.0,所以跑不了。于是想升级一下,结果到处都是坑,花了我差不多两天时间才终于搞定。现在记录一下,希望看到的小伙伴少踩一点坑。
步骤1,卸载旧cuda。首先要卸载cuda9.0,装上新的版本。至于要装什么版本,可以自己选择。通过右键-nvidia控制面板-帮助-系统信息,就可以看到。比如我的电脑是cuda11.1,安装之下的就可以了。
如果有的同学不知道自己现在的cuda版本,很多方法都可以看,但是百度出来有的命令有误。最保险的方法是查看控制面板-卸载。比如我现在是10.2了,更新之前是9.0。卸载时,卸载掉含有cuda,也就是红框里面的几个就好,别的可以之后再解决。
步骤2,安装Visual Studio。因为cuda依赖于Visual Studio,所以得安装。去微软Visual Studio官方网站下载一个就好。安装的时候记得点击相应选项。
步骤3,安装新的cuda。新的cuda下载地址,选择合适的版本。至于安装cuda的过程,基本就是一路点,但是要注意不要勾选visual studio,否则会安装失败。
cuda安装好之后,可以通过nvcc -V验证,或者直接去控制面板-卸载去看版本型号。下载cudnn,替换文件。下载对应pytorch和cuda版本的cudnn,或者去nvidia官网下载。将文件中的bin,include,lib下的文件去除,打开C:Program FilesNVIDIA GPU Computing Toolkit,复制到对应目录下。
步骤4,创建一个conda虚拟环境。为了防止弄乱电脑上的环境,保险起见,创建一个虚拟环境。命令很简单,conda env list查看已有的环境,如果没有就只有一个base。创建新的虚拟环境,激活环境,关闭环境。
步骤5,安装新版本的pytorch,以及cudnn等库。我用的conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cudatoolkit=10.2。相应的版本根据官网指示最好。在安装的时候可能会卡住,建议换成国内的清华镜像。
但是我遇到了新问题,在solving environment的时候依旧卡住,发现虚拟环境很多包没有安装,只有空的python。所以可以去克隆一个base环境过来,然后安装新版本的torch。
但是,系统总是给我装成cpu版本,不知道为什么,无语。重新建了一个新虚拟环境,手动安装了numpy和pandas,然后用pip安装。
解决新问题,出现ImportError: cannot import name ‘NoReturn’。查了下,发现是python版本的问题,需要3.6.2以上。升级版本后,记得退出虚拟环境,重新激活进入,就可以使用了。
在pycharm里面控制虚拟环境。
channels:
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/win-64/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/win-64/
ssl_verify: true
show_channel_urls: true
onda install pytorch==1.8.1 torchvision==0.9.1 torchaudio==0.8.1 cudatoolkit=10.2
pip install torch==1.8.1+cu102 torchvision==0.9.1+cu102 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html