1、前言
本文参考了Pytorch的安装(Cuda+Cudnn+Anaconda)GPU版本,巨详细,安装不成功 你来打我以及深度学习——安装Anaconda、Pycharm以及CUDA和Pytorch库安装方法(2023.11最新),完成 win10 系统下pytorch的环境搭建。后续参考在 PyCharm / Spyder 进入 pytorch 环境设置了在Pycharm和Spyder中来使用搭建好的Pytorch环境。感谢各位大佬的教程。在此记录自己的搭建过程,以备不时之需。至于linux系统中的环境搭建,待需要时再实践并补充。
2、CUDA的安装
由于pytorch、CUDA以及cuDNN之间有版本对应关系,所以需要先检查一下适合的版本。
2.1 cuda版本确认
打开Nvidia控制面板,找到左下角的 系统信息,点击后找到 组件 栏,可以看到显卡支持的CUDA核心版本
2.2 检查Visual Studio的安装
通过win10任务栏中的搜索框可以检查是否安装了Visual Studio,需要注意的是Visual Studio与Visual Studio Code不是一回事。
这里我没有安装Visual Studio,所以在CUDA安装时需要注意一些细节。
2.3 Pytorch与CUDA的版本对应
在https://pytorch.org/这里可以查看pytorch版本支持的CUDA版本
图中可以注意到,首先最新的pytorch支持python3.8及以上版本,也支持CUDA 11.8和CUDA 12.1。我的3060ti支持的CUDA最高版本为12.3.99,所以这里我可以安装CUDA 12.1。
2.4 下载并安装CUDA
打开 CUDA Toolkit Archive ,选择CUDA 12.1.0:
这里我选择了windows系统,version10就是win10下载并安装。
安装时首先会让你选择extraction的位置,默认是在C盘local/tmp下,大约需要占用10G的空间,在临时存放解压缩后的安装文件,安装完成 或 取消安装 后临时文件会被删除,一般不用管它。如果C盘吃紧,可以修改到其他盘。
选择 自定义安装
如果电脑上没有安装Visual Studio,需要取消Visual Studio Integration的勾选。
建议这几栏下的安装内容都看一下,当前版本是目前电脑上已有的版本,如果发现 新版本 低于 当前版本,可以取消勾选该条目以避免重复安装。比如在Driver components下取消Display Driver的勾选。
之后是选择安装目录,可以自行修改。安装完成后,在命令提示符中输入 nvcc -V
如图,已安装成功。
3、cuDNN的安装
3.1 cuDNN下载
打开(网址),需要先注册。
在cuDNN Archive中查看适配的cuDNN,这里我选择v8.9.6 for CUDA 12.x,选择windows版本。
下载后,将文件夹解压到CUDA的安装目录下的CUDA\12.1\下,我这里CUDA安装到了G盘:
3.2、配置环境变量
在解压cuDNN到合适的位置后,需要给它添加环境变量。在win10任务栏搜索框中搜索“环境变量”
在 系统属性 的 高级 栏的最下方找到 环境变量,点击后在新窗口下方 系统变量 中找到 Path,单击选中Path然后点击下方的 编辑 按钮
点击右侧的 新建,把这两个路径加入进去(自己安装的路径)
3.3、检查cuDNN是否安装成功
打开命令提示符,输入 G: 回车切换到G盘,用cd切换到cuDNN的安装目录
输入 bandwidthTest.exe然后回车,其实输入band后按tab键就自动给出全名了
输入 deviceQuery.exe 回车
都PASS就表示没问题了。
4、Anaconda安装
在Anaconda官网Anaconda Free Download下载并安装,自己修改安装路径或者默认路径,一路next就可以了。
如果电脑上有旧版本的Anaconda,建议卸载后安装最新版,因为conda的版本可能不一样。我是卸载了21年安装的Anaconda重新安装的,当时的conda是4.10版本,目前最新的是23.7版本。
之后同样需要配置一下环境变量,根据自己的安装目录把下图三个目录加入Path中
命令提示符中输入 conda -V
5、Pytorch安装
5.1 使用conda搭建虚拟环境
由于虚拟环境以及一些包会占用磁盘空间,Anaconda安装在C盘的小伙伴可以去搜索一下如何修改conda虚拟环境搭建位置。我这里Anaconda是安装在G盘。它在搭建环境时,会把相关文件放在Anaconda安装目录下的envs和pkgs中
win+R输入cmd打开命令提示符,输入 conda create -n pytorch python=3.11 创建名为pytorch,python版本为3.11的虚拟环境,可以根据需要自行设定python版本
创建后输入conda env list来查看已有的虚拟环境
5.2 安装Pytorch并检查
输入 conda activate pytorch 来进入创建的pytorch环境。还记得在Pytorch官网查看其与CUDA版本对应关系的步骤吗?我们还需要进入该网站https://pytorch.org/,根据自己的选择来获得Pytorch的安装命令
这里我选择使用pip来安装,复制图中Run this Command中的安装命令,在pytorch环境中单击右键粘贴,回车
需要按y就按y确认。安装好之后,在该环境中输入 pip list 来查看安装情况
可以看到 torch torchaudio 和torchvision都安装好了。为了确定它们是否是GPU版本,在pytorch环境下输入 python 并回车
输入 import torch 并回车,然后输入 torch.cuda.is_available() 并回车
返回True表示安装的是GPU版本,False则是CPU版本
另外,可以在import torch后输入 print(torch.__version__)来查看Pytorch的版本,注意这里version左右是两条下划线__不是单条下划线_
在import torch后,也可以使用 print(torch.cuda.device_count()) 来查看可用的CUDA数量
这里得到的 1 表示连接了一块显卡,而不是显卡中CUDA核型的数量,要分清楚,CUDA核心数量可以去Nvidia控制面板查看
至此,Pytorch就搭建成功了。我按照流程顺利安装完成,如有问题,可以参照本文开头的参考文章或自行搜索解决。
祝各位环境搭建顺利。
6、在Pycharm和Spyder中使用搭建的pytorch环境
在命令提示符中进入pytorch环境,固然可以直接使用,但很显然不方便。那么该如何在pycharm和spyder中来使用搭建好的pytorch环境呢?
6.1 在Pycharm中使用pytorch
打开Pycharm,打开File->Settings,找到Python Interpreter,选择show all
点击左上角的+号,在Conda Environment,选择右侧Existing environment,在Interpreter中选择上文创建的Pytorch环境下的python.exe。创建的环境一般是在Anaconda安装目录下的envs目录中
之后就可以直接import torch来使用了
6.2 在Spyder中使用pytorch
首先,打开Anaconda自带的Spyder,打开 工具 - 偏好
选中 Python解释器(Python interpreter),选择上文搭建的pytorch环境下的python.exe。上文提到,搭建的环境是放在anaconda目录下的env目录中
点击OK/Apply后,在spyder界面右下方的控制台中,进行kernel重启
一般情况下,此时控制台会提示需要在pytorch环境中安装spyder,并给出安装的命令,如 conda install spyder=2.4。但是实际上spyder=2.4的版本可能并不适用于搭建pytorch环境,所以我们就不用指定版本了
win+r 接 cmd,conda acitvate pytorch进入搭建的pytorch环境。再提一嘴,这里conda activate 后跟的是你所搭建的环境的名称。在该环境下使用 conda install spyder 来安装spyder
需要按y就按y回车。安装完成后会提示done,接下来可以在spyder中的控制台内点击 重启IPython内核
当然,也可以像正常使用python那样,在代码中import torch
至此,可以在spyder中来使用搭建好的pytorch环境啦
6.3 在Jupyter中使用pytorch
使用jupyter就像使用R一样,可以逐行查看执行结果,在处理数据时非常方便
6.3.1 在jupyter中添加pytorch环境
这里建议先参考Jupyter nootbook 中添加虚拟环境来尝试将搭建的pytorch环境直接加入到jupyter中。
管理员身份打开命令提示符,切换到pytorch环境,输入 python -m ipykernel install --user --name pytorch --display-name pytorch
然后打开jupyter notebook,能看到new下有pytorch环境,进入后impotr torch也成功了。至此可以在jupyter中使用pytorch
6.3.2 安装Nbextensions
另外,据jupyter notebook 的Nbextensions安装所述,如果安装Anaconda时自定义了安装目录,可能会导致jupyter中没有Nbextensions,无法使用诸如自动补齐代码的插件。
所以我需要安装一下。管理员身份打开Anaconda promt,
参照jupyter notebook 的Nbextensions安装,先在环境pytorch下执行 pip install jupyter_contrib_nbextensions ,然后执行 jupyter contrib nbextension install --user ,此时我遇到报错说没有找到模块notebook。pip list发现确实没有该模块,根据https://blog.csdn.net/jingmenghai/article/details/131870625使用 pip install jupyter notebook==6.0.1 安装该模块。
重新执行 jupyter contrib nbextension install --user 报错说缺少模块 markupsafe 。pip install markupsafe 显示已安装其2.1.3版本,pip list也看到有该模块。pip uninstall markupsafe卸载后重新pip install markupsafe,然后重新执行 jupyter contrib nbextension install --user 就通过了。然后执行 pip install jupyter_nbextensions_configurator 顺利通过。
此时打开Anaconda的jupyter会报错说没有找到 jupyter_nbextensions_configurator,而 pip list 中是有它的。根据https://zhuanlan.zhihu.com/p/610874603 在当前环境中执行 python -m pip install jupyter_nbextensions_configurator ,顺利执行完成。重新打开jupyter 就没有报错了,且 Nbextensions出现了
至此,没有多余需要补充的了。
下文仅为记录,可以无视:
下面是我在尝试不同方法试图在jupyter中使用pytorch的些许记录,可以无视。
一些教程提到需要在pytorch环境下conda install nb_conda才能够在jupyter中使用pytorch。但是我的py3.11环境无法安装nb_conda,会提示:
nb_conda应该只能在py3.9以下才能顺利安装。如果执行conda install jupyter,尽管能在pytorch环境下安装jupyter,依旧无法在Anaconda的jupyter中使用pytorch环境。网上有看到同样无法安装nb_conda的情况,我这里只能重新创建一个py3.8的环境来进行pytorch的安装。
win+r 接cmd,conda create -n pytorch38 python=3.8新建环境,conda activate pytorch38进入环境
在该环境下重新安装pytorch。安装完成后,在当前环境下执行 conda install nb_conda。咦,我遇到了报错
在pytorch38/Scripts目录下会发现并不存在jupyter-nbextension.exe和jupyter-serverextension.exe。据https://www.bilibili.com/read/cv24005020/所述应当是安装Anaconda时自定义了安装目录,导致该安装目录下没有nbextension。打开jupyter确实会发现没有NBextension:
所以我需要安装一下。
参照这个BILI文章,先在环境pytorch38下安装pip install jupyter_contrib_nbextensions,然后执行jupyter contrib nbextension install --user时报错说没有找到模块notebook。pip list发现确实没有该模块,根据https://blog.csdn.net/jingmenghai/article/details/131870625使用pip install jupyter notebook==6.0.1安装该模块(不指定6.0.1的版本的话我py3.8依然报错)。重新执行jupyter contrib nbextension install --user报错说缺少模块markupsafe。pip install markupsafe显示已安装其2.1.3版本,pip list也看到有该模块。pip uninstall markupsafe卸载后重新pip install markupsafe,然后执行jupyter contrib nbextension install --user就通过了。然后执行pip install jupyter_nbextensions_configurator顺利通过。
但是此时打开Anaconda的jupyter会报错说没有找到 jupyter_nbextensions_configurator,而pip list中是有它的。根据https://zhuanlan.zhihu.com/p/610874603在当前环境中执行python -m pip install jupyter_nbextensions_configurator,顺利执行完成。重新打开jupyter就没有报错了,且Nbextensions出现了。
此时虽然pip list中没有jupyter_serverextensions,但是conda install nb_conda并不会在这里报错了,并出现了其他错误:
当前的anaconda prompt是以管理员身份运行的,且winpty.dll存在,那为何会拒绝请求呢?会不会是同时打开的jupyter占用了该文件?
我关掉jupyter后重新conda install nb_conda,顺利done。但此时打开jupyter notebook,依然无法在new下找到我想要使用的环境pytorch38.
参考了Jupyter nootbook 中添加虚拟环境,将pytorch38成功加入到jupyter notebook中,但是这个环境中没有torch....很奇怪
OK,既然这种方法似乎跟nb_conda没关系,就直接用上文中py3.11搭建的pytorch环境来直接放到jupyter中。
管理员身份打开命令提示符,切换到pytorch环境,输入 python -m ipykernel install --user --name pytorch --display-name pytorch
然后打开jupyter notebook,能看到new下有pytorch环境,进入后impotr torch也成功了。