0.电脑环境
系统:win11
显卡:NVIDIA GTX1650
还有一个pyCharm,其他也用不到了,需要的文章中会进行说明
1.安装CUDA11.6
目前2023.03出来的pyToach2.0是用不到了,因为最低版本支持CUDA11.7。我的显卡是1650,驱动达不到CUDA11.7的要求,因此安装不了11.7。(主要原因是和女朋友端午旅游把我计划要买的4060TI 16G钱花掉了/(ㄒoㄒ)/~~,只能继续压榨我的我的小显卡了)。
pyToach2.0看说明是比1.13快很多,但是安装方式一样的,有好显卡的一定要安装CUDA11.7进而支持pyToach2.0
PyTorch的官网:官网
可以看的具体的依赖
显卡驱动和cuda对照
首先打开 cmd 命令窗口,输出如下命令:
nvidia-smi
可以看到,此时显示的表格中,有一个字段叫 CUDA Version,像我的界面是这样的:
在这个官方网站:老黄的CUDA网站
找到11.6,下载它,三个都可以下载,随便选一个
说明:
安装cuda时,第一次会让设置临时解压目录,第二次会让设置安装目录;
临时解压路径,建议默认即可,也可以自定义。安装结束后,临时解压文件夹会自动删除;
安装目录,自定义最好;
注意:临时解压目录千万不要和cuda的安装路径设置成一样的,否则安装结束,会找不到安装目录
选择自定义安装
安装完成后,配置cuda的环境变量;
命令行中,测试是否安装成功;下面是具体安装步骤:
1)双击“exe文件”,选择下载路径,换一个其他的盘也可以。
一直确定
2)自定义安装,精简版本是下载好所有组件,并且会覆盖原有驱动,所以在这里推荐自定义下载
3)如果电脑上没有visual studio,后面会让下载,所以可以取消这个复选框
4)下面是比较重要的安装路径选择,建议先在自己电脑上安装软件的盘中先建立两个文件夹:
4.1) 然后将第一个和第三个目录更换为上面的CUDAToolkit,第二个目录更换为CUDASamples。记住安装目录
后面一直向下,然后就是查看一下环境变量了。点击设置–>搜索高级系统设置–>查看环境变量
上面的环境变量是自己生成的,无需手动配置。之后在cmd下查看是否可以使用命令:注意是大写V哦
这样就可以确定安装成功了。要注意自己的显卡驱动版本和cuda版本的对应,我的1650就可以安11.6了,显卡比我高的如果驱动版本不高可以升级驱动版本。
2.安装Anaconda3
下载官网:Anaconda官网,或者是清华镜像源镜像源,我感觉都可以下载
双击exe安装包,进行安装,
1)一直下一步到这里,选择所有用户
2)安装路径,还是推荐自定义
3)只选择第二项,第二项是说要默认使用python的版本,后期手动添加环境变量
4)安装完成
5)配置环境变量,点击path
5.1) 在编辑环境变量里,点击新建
5.2)新建下面这五个变量:xxx是自己的路径
D:\xxx\xxx\Anaconda3
D:\xxx\xxx\Anaconda3\Scripts
D:\xxx\xxx\Anaconda3\Library\bin
D:\xxx\xxx\Anaconda3\Library\mingw-w64\bin
D:\xxx\xxx\Anaconda3\Library\usr\bin
6)安装完成,验证,同时按 win + r ,输入cmd,在弹出的命令行查看anaconda版本,输入 :
conda --version和python
可以看的正确的版本号以及python已托管至Anaconda。可以在电脑屏幕左下角的Windows徽标键这里,选择点击绿色圈圈Anaconda Navifator将其打开
7)接下来是镜像源的配置,这里踩坑很多,花了好几个小时才搞定,其他博客有通过命令配置的源的,然后一些包总是无法使用。这里提供一个简单的方式。进入c盘的用户路径下,点击.condarc文件,可以用记事本方式打开。
然后内容修改为如下内容,注意envs_dirs:
- D://DeepLearingEnvironment//envs是自己的路径哦。
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
envs_dirs:
- D://DeepLearingEnvironment//envs
编辑保存后,打开Anaconda查看镜像源,如下所示
点击configure Conda后,可以看到镜像源已更换
8)试着导入一下基础环境,如下所示,点击Environment下的base环境,等待加载后,可以看到环境导入完成,前面都有绿色的勾。而且速度快到飞起。至此,Anaconda也安装配置完成
3.在Anaconda中安装pyToacn1.13
- 先新建一个环境,我随便起名为pyToach1113
2)命令行添加环境,进入cmd下,输入
conda env list
antivate pyToach1113
2.1) 使用官方推荐命令安装pyToach,进入网站pyToach官网,选择这个标签页:
拉到下面,使用这个命令,注意是11.6哦
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.6 -c pytorch -c nvidia
2.2) 等待漫长的命令执行完成,验证是否可以正常使用:
可以正常使用
4.尝试使用pyToach调用cuda
- 新建一个项目,环境选择刚才搞好的
2)输入如下代码
import time
import torch
if __name__ == '__main__':
print("启动!!!")
print("PyTorch版本:" + torch.__version__)
print("PyTorch是否启动CUDA:", torch.cuda.is_available())
matrix_a1 = torch.randn(15000, 9999) # GPU运算量太大会爆显存
matrix_b1 = torch.randn(9999, 15000) # GPU运算量太大会爆显存
t1 = time.time() #cpu运算前的时间
matrix_c1 = torch.matmul(matrix_a1,matrix_b1) #cpu做矩阵相乘
t2 = time.time() #cpu运算后的时间
print("当前模式:",matrix_a1.device,"\t耗时:",t2-t1,matrix_c1.norm(2))
gpu = torch.device("cuda")
matrix_a2=matrix_a1.to(gpu)
matrix_b2=matrix_b1.to(gpu)
t3=time.time() #gpu运算前的时间
matrix_c2=torch.matmul(matrix_a2,matrix_b2)
t4=time.time() #gpu运算后的时间
print("当前模式:", matrix_a2.device, "\t耗时:", t4 - t3, matrix_c2.norm(2))
t5=time.time() #gpu运算前的时间
matrix_c3=torch.matmul(matrix_a2,matrix_b2)
t6=time.time() #gpu运算后的时间
print("当前模式:", matrix_a2.device, "\t耗时:", t6 - t5, matrix_c3.norm(2))
计算一个矩阵乘法,对比一下cpu与gpu,结果如下:
可以看到目前已经启用了CUDA加速,且PyTorch的版本是1.13,安装成功。
因为GPU运算首次需要加载C++的包,依旧比CPU快了10多倍。第二次运算时C++的包已经加载完毕,比CPU快了将近1000倍(/(ㄒoㄒ)/~~是我的cpu跟不上gpu吗)。
3)但是,gpu计算出来的结果和cpu有些差距,看一下gpt的解释是:
通常情况下,GPU(图形处理单元)和CPU(中央处理单元)执行计算任务的方式和速度不同,这可能导致计算结果略有不同的情况。下面是一些可能导致GPU计算结果与CPU计算结果稍有不同的原因:
数值精度:GPU通常使用较低的数值精度来执行计算,例如使用32位浮点数(单精度)而不是64位浮点数(双精度)的CPU默认精度。这种精度差异可能会导致在某些情况下,GPU计算结果的舍入误差略微大于CPU计算结果。
并行计算:GPU通过并行计算大规模数据集来提高计算速度,而CPU通常是顺序执行。由于并行计算涉及到数据分割和任务分配,可能会存在微小的差异,尤其是在涉及非结合性操作(不满足交换律和结合律)时。
优化算法:GPU和CPU使用不同的指令集和优化算法来执行计算任务。这可能导致在某些情况下,GPU计算结果与CPU计算结果有细微差异。例如,某些特定的数学函数或优化算法在GPU上可能有不同的实现方式。
平台依赖性:GPU和CPU使用不同的硬件和驱动程序,可能存在平台依赖性问题。这可能会导致不同的硬件或驱动程序在执行计算时产生微小的差异。
需要注意的是,通常情况下,GPU计算结果与CPU计算结果之间的差异应该是非常小的,特别是对于大多数数值计算任务来说。如果存在较大的差异,可能是由于程序中的错误、数值稳定性问题或其他因素引起的,这时候需要进一步调查和分析问题。
为了确保结果的一致性,可以采取一些措施,如使用相同的数值精度、检查算法实现的一致性、验证代码的正确性,并进行平台和硬件的兼容性测试。
5.总结
总之,代码可以测试成功,之后可以进行愉快的炼丹了。然后有时间发一个使用上面环境进行深度学习的案例
最后说一个实话,想要一个4060ti学习为假,打游戏为真。
参考文章:
在Windows10环境安装CUDA11.7及PyTorch1.13–使用Nvidia RTX A4000开始炼丹之旅
【CUDA安装详细教程】
Anaconda安装-超详细版(2023)
w11下载anaconda在d盘,新建的虚拟环境总是在c盘怎么解决