目录
前言
Hi,这里介绍windows10+Nvidia GTX 1050配置下的一种《动手学深度学习》中的d2l兼gpu_pytorch环境安装方案。在《动手学深度学习》实践教程中作者团队已经详细介绍了虚拟环境配置流程,大部分安装工作可参考书中内容,本文仅对gpu版本的pytorch正常安装提供一种特定硬件配置下的参考。默认读者已经安装好python(不必要)、miniconda(或者anaconda),并且电脑有足够内存且希望能在本地(local)试运行深度学习(或RL)代码,miniconda的安装教程可参考这里。安装好conda之后要记得初始化终端shell,在命令提示符输入
conda init cmd.exe
这样就可以在命令提示符(cmd窗口)中直接执行conda命令啦~
之后就直接创建并激活新环境,继续在命令提示符窗口输入
conda create --name d2l python=3.8 -y
conda activate d2l
注意!上述代码第一行中的“d2l”是环境名,可以按照你的喜好设定,但一定要记住你设置的环境名称!第一行中的“python=3.8”是新环境中python的版本号,也可以使用python3.7,但是不建议使用python3.6,3.6中的工具包版本过于老旧会影响后续工具包的安装!同时也不建议使用python3.10及更高版本,因为d2l指定安装的pandas(1.2.4)所能兼容的python版本最高为3.9!
安装cuda
首先需要在“我的电脑(右键)-属性-设备管理器-显示适配器”下确认你的显卡是否为独显,如果是集显就需要另寻GPU服务器用于跑深度学习或强化学习代码,这里不过多赘述。
先查阅驱动版本,在命令提示符窗口输入
nvidia-smi
查看英伟达驱动版本
在官网查询驱动版本对应的cuda,例如本文的驱动版本为516.94,那么可以安装的最新的cuda版本是cuda11.7Update1(如下图)
当然,你也可以通过“NVIDIA控制面板-帮助-系统信息-组件”查看3D设置中的cuda版本,去官网下载对应的cuda就行了。(注:如果没有安装英伟达驱动程序,则自行查阅安装教程;如果在打开NVIDIA控制面板时出现“Windows无法访问指定设备、路径或文件...”的情况,建议直接打开C:\Program Files\WindowsApps\NVIDIACorp.NVIDIAControlPanel_8.1.962.0_x64__56jybvy8sckqj\nvcplui.exe,也能打开NVIDIA控制面板)
在官网寻找适合你的cuda版本下载安装就可以了
至于安装教程,可参考https://blog.csdn.net/m0_45447650/article/details/123704930,“安装选项”笔者选择了精简安装,并未影响最终结果。
安装d2l包与pytorch
由于d2l包与pytorch的安装全部要在我们刚才新建的d2l环境下进行,所以接下来的所有步骤,你都需要保证激活d2l运行环境,激活方法就是在命令提示符窗口下输入
conda activate d2l
关闭cmd窗口或者输入
conda deactivate
都会退出环境。
安装torch、torchvision、d2l包
在d2l环境下输入
pip install torch==1.11.0
pip install torchvision==0.12.0
pip install d2l==0.17.5
喝口水,听会歌,然后就Success了。
安装pytorch
《动手学深度学习》中会介绍如何安装pytorch,但是技术发展飞快,版本不断更迭,建议直接前往官网寻找与你安装的cuda版本对应的pytorch
文章写作时间(2022.12已有与cuda11.7对应的pytorch版本,同时cuda12.0也已发布),还没有与cuda11.7对应的pytorch版本,但问题不大,小改动几乎不影响兼容性,直接选择conda安装cuda11.6对应的pytorch版本就可以了,复制上图划红线的代码,在命令提示符中输入即可开始安装pytorch啦~
Is it available?
ok,下面我们在d2l环境下的cmd窗口依次输入
python
import torch
torch.cuda.is_available()
如果得到如下结果
恭喜你!下载d2l notebook,打开jupyter notebook,开始动手学吧
万一输出是“False”呢?不要着急。
在cmd窗口输入
conda list
列出当前环境下的所有包,首先观察你的pytorch版本是否是gpu版本,
gpu版本pytorch会在“Build Channel”列显示python版本、cuda版本和cudnn版本
如果pytorch是cpu版本那么是就需要重新安装pytorch,如果pytorch是gpu版本但“torch.cuda.is_available()”的结果仍然为“False”,后文"正确地安装正确的版本"会提到解决办法。
cpu_pytorch ——> gpu_pytorch
在重新安装pytorch时,你需要观察conda list中是否有名为“cpuonly”的包,这个包的出现可能源于你之前安装过的cpu版本pytorch。在向着名为“gpu_pytorch”的目标前进时,优先卸载cpuonly。在cmd窗口输入
conda uninstall cpuonly
conda会在卸载包的同时更换其他package的版本,以满足兼容性。喝杯水,听会歌,然后就Success了。
重新输入“conda list”查看package列表,cpuonly消失,pytorch变为gpu版本,依次输入
python
import torch
torch.cuda.is_available()
输出为“True”,恭喜你,你完成了一件微小的工作,keep on striving.
正确地安装正确的版本
pytorch如果已经是gpu版本,却仍然无法使用,有可能是pytorch安装的版本不正确,并没有对应到正确的cuda版本,或者是在你当前安装的pytorch包中存在cpuonly的功能(这是源自其他贴子的说法,笔者无法考证)。这里提供两种方法:
法一:
重新确认你的pytorch版本,是否与你安装的cuda版本对应,如果pytorch与cuda不兼容那么注定是not available,通过官网或者其他渠道寻找正确的与你cuda匹配的版本。
法二:
使用pip安装pytorch,注意同样都是在我们新建的d2l环境下,在官网上“package”选择“pip”,复制划线处代码输入cmd窗口即可。
cuda版本正确,pytorch版本正确,不存在cpuonly包,基本就能保障gpu版本pytorch的正常使用。
附
1.上文提到的几乎所有软件和工具包的安装,都不存在下载速度问题,《动手学深度学习》实践教程中的部分代码,在第一次运行时可能出现数据下载的需求,科学上网会使下载速度提升;
2.在安装和运行代码时遇到缺少package的情况是很正常的,及时用pip或conda安装即可, 安装问题有时候很难找到对口的解决方案,尽量理解系统的报错很关键;
3.使用mxnet的同学更需要注意与cuda版本的兼容问题,甚至还需要考虑python版本,可参考官网信息;
4.笔者在安装时遇到的问题是,尝试在py3.6环境下配置d2l和gpu_pytorch,3.6的pip工具包版本较低且无法更新,笔者没有找到合适的cuda、torch、pytorch版本;
5.部分深度学习代码运行时会出现内核挂掉的情况,大概率是之前运行的内核没有完全关闭导致的,出现这种情况时可以在代码整段前加
import os
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"
如果还是存在内核挂掉的问题,则很有可能是虚拟环境内工具包冲突导致的,例如回退numpy版本,更新scipy版本等,具体问题具体分析;
6.2022年10月17日,教程配套的d2l包的最新版本仍然是0.17.5,但其实里面的很多子包都不是最新版本了(比如numpy),在安装pytorch所配套的子包会覆盖d2l里部分子包的版本,但还未出现版本相互冲突或代码无法运行的问题,考虑到未来软件更新,建议日后优先安装python环境和pytorch,最后安装d2l包。当然,也希望届时有更优秀的深度学习教程;
7.对于需要spyder开发环境辅助学习代码的同学,不建议安装jupyter的nbextensions插件,如果有成功配置nbextensions插件并且与spyder兼容的同学,望分享经验;
8.在conda安装pytorch时,如果出现类似无法连接到某个清华源的url的报错,很有可能是环境下channels未配置完备,不用担心,你只需要一直重复运行安装pytorch的命令,直到所有必须的清华源channel都配置完毕,安装就能成功进行了;或者,检查你的网络;
9.于2022.12喜提新装备,3070Ti+16G,NVIDIA驱动程序已经升级到527,cuda升级至12.0,甚至python也已经更新到了3.11,仅仅是三年的时间,《Dive into deep learning》在环境配置上就已经变得“古老守旧”,硬软件迭代更新速度惊人,不禁令人感叹,知识正在爆炸性增长,望大家日新月异,追上时代脚步;
10.如果您参考本文遇到了种种安装问题,均可与笔者评论交流,近几年内笔者会保证该论坛的使用,尽量做到及时回复,感谢!