最近在看李沐老师的b站课程,本文是对自己环境配置的一个记录,整个过程可以参考原视频:Windows 下安装 CUDA 和 Pytorch 跑深度学习 - 动手学深度学习v2_哔哩哔哩_bilibili
CUDA的需要有N卡的电脑,打开任务管理器检查一下
lucky,是N卡,接下来检查显卡所对应的CUDA版本,在cmd窗口输入nvidia-smi
记住这个版本号,我的是11.1,如果提示“nvidia -smi显示不是内部或外部指令”,可以先输入cd C:\Program Files\NVIDIA Corporation\NVSMI再输入nvidia-smi
接下来需要安装CUDA工具包,官网:CUDA Toolkit 12.9 Update 1 Downloads | NVIDIA Developer,选择历史版本Archive of Previous CUDA Releases(此时最新的CUDA版本12.9显然不符合我的老伙计了),我选择的CUDA Toolkit11.1.1,推荐大家在显卡支持范围选择最新的
安装结束后呢系统变量会多出两个CUDA的路径
在系统变量中加入下面的路径,点击确定:
CUDA_BIN_PATH: %CUDA_PATH%\bin
CUDA_LIB_PATH: %CUDA_PATH%\lib\x64
CUDA_SDK_PATH: C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.1
CUDA_SDK_BIN_PATH: %CUDA_SDK_PATH%\bin\win64
CUDA_SDK_LIB_PATH: %CUDA_SDK_PATH%\common\lib\x64
在用户变量path中加入下面的:
%CUDA_BIN_PATH%
%CUDA_LIB_PATH%
%CUDA_SDK_BIN_PATH%
%CUDA_SDK_LIB_PATH%
检查一下CUDA装的怎么样哈,在cmd窗口运行deviceQuery.exe和bandwidthTest.exe,如果安装成功会返回result=pass
好!现在有CUDA了,接下来的过程没什么图了大家费神看细致点哈
1.Anaconda安装
李沐老师装的是3.8.3,我尝试呢是3.8.5可以,但这里肯定是要 Python3.8版本对应的Anaconda3:https://repo.anaconda.com/archive/Anaconda3-2020.07-Windows-x86_64.exe
管理员身份运行.exe文件,选择为所有用户安装,安装过程有选项的全部勾上,安装完成后开始菜单找到Anaconda Powershell Prompt,输入python --version检查版本是否为3.8.x
2.创建环境(第2部分如果你不打算隔离的话可以跳过,直接到3.Pytorch安装)
Anaconda的特点在于可以创建多个配置不同的虚拟环境,默认打开时是base,愚以为最好为每个项目都创建一个单独的虚拟环境,这次创建的叫d2l:conda create -n d2l python==3.8.5(-n后面跟的d2l是我取的名字,可以随意)(不指定版本号默认装最新版本,要高于3.8.3才可以,推荐3.8.5因为我确实成功了)(显示“ $ conda activate d2l ”即为安装成功)
激活环境:conda activate d2l(之后每次使用都要记得进入d2l环境)
这个时候想要检视Anaconda现有的环境可以用:conda env list(会显示每个环境对应的地址)
如果想删掉某个环境:conda remove -p 地址 --all
3.Pytorch安装
CUDA11.1版本对应的Pytorch安装: pip3 install torch==1.9.1+cu111 torchvision==0.10.1+cu111 torchaudio==0.9.1 -f https://download.pytorch.org/whl/cu111/torch_stable.html
(Pytorch官网:Get Started,我没有找到CUDA11.1版本对应的包,先是选择了windows+pip+python+cuda11.8得到了一个命令,然后把最后的版本号改为了cu111:pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu111,运行这个会显示版本兼容问题,deepseek老师提示我可以改为正文中所示的指令,运行,嘿还真没出错)
打开python导入torch:python、import torch
检查安装(version前后是双下划线):print(torch.__version__) # 显示 1.9.1+cu111 、print(torch.cuda.is_available()) # 返回 True
a=torch.ones((3,1))、a = a.cuda(0)、b= torch.ones((3,1)).cuda(0)、a+b,正确安装会显示结果
再安装两个软件:pip install jupyter d2l
4.下载代码
安装 — 动手学深度学习 2.0.0 documentation点击顶部菜单栏的jupyter记事本选项下载d2l-zh.zip,解压到D:\deeplearning\d2l-zh,相同全部替换(这个地址随意,但要好找)
在Anaconda Powershell Prompt中,cd D:\deeplearning\d2l-zh打开刚刚解压的地址,然后输入jupyter notebook命名记事本
在网页记事本找到D:\deeplearning\d2l-zh\pytorch\chapter_convolutional-modern\resnet.ipynb,点击Kernel→Restart & Run All
5.训练结果分析
训练过程如果如果显存超了,需要先杀死进程、降低batch_size再重新开始
受限于GPU内存大小,选择batch_size降低到128,运行过程GPU内存使用约75%,用时约18分钟,训练速度曲线如下
(batch_size的选择涉及到训练时的线程分配,所以并不是越大越好,我尝试的batch_size选择32,用时也是约18分钟,运行过程GPU内存使用约45%,表现更好,所以可以在GPU显存支持范围尝试一下)
6.其他问题
如果在不创建环境隔离,直接在base环境安装Pytorch,做后面的操作是没啥问题的,但如果创建的新环境
d2l_env并安装Pytorch,可能会在pip install jupyter d2l步骤报错,显示错误发生在安装pywinpty的依赖项时,我搞了一上午有个解决方案
首先明确在创建新环境d2l_env时指定不安装终端支持:conda create -n d2l_env -c conda-forge python=3.8.3 jupyterlab notebook nbconvert ipykernel
(conda-forge是一个社区驱动的软件仓库,通常提供更新更全的软件包,尤其在Windows平台上,对编译依赖的处理更完善,全部使用来自这个仓库的包可以保证依赖的一致性)
(在创建环境时直接安装了jupyterlab notebook nbconvert ipykernel ,这些包在conda环境中由conda统一管理,避免了后续pip安装时可能出现的依赖冲突)
(特别是pywinpty 这个包在conda-forge中有预编译好的版本,通过conda安装可以避免从源码构建)
conda activate d2l_env激活环境后,原样安装Pytorch: pip3 install torch==1.9.1+cu111 torchvision==0.10.1+cu111 torchaudio==0.9.1 -f https://download.pytorch.org/whl/cu111/torch_stable.html
接下来手动安装d2l的依赖并指定版本:pip install numpy==1.23.5 matplotlib==3.7.2 pandas==2.0.3 scipy==1.10.1 requests==2.31.0
最后安装d2l:pip install d2l
装完后验证一下,进入python,导入import d2l,没有显示是不存在的就是安装成功了,接下来就可以正常的打开记事本运行去了
7.友情提示
全部装完搞定后,在装了一堆的环境中(比如我是d2l_env)输入pip cache purge,C盘立出3G空间,当然这样下次还得再下,酌情使用