深度学习第一步 利用cuda进行gpu加速配置
python 机器学习入门之gpu加速 cuda的配置使用 win10/win11+vs2019+cuda11.2+cudnn8.1+tensorflow_gpu-2.10.0+pytorch安装配置教程
文章目录
前言
cuda的gpu加速对于小白来说还是十分有难度的,尤其是一开始版本的选择,笔者电脑的cuda版本是cuda12.2,所以一开始装的是cuda12.2版本的,装了才知道得低一个版本才能装上,再后来了解到cuda11.2是飞桨支持的,同时也支持tensorflow等很多深度学习开源库,因此笔者最终决定下载cuda11.2版本的以及其他适配版本的cudnn8.1和tensorflow_gpu-2.10.0,下面笔者就按照安装顺序进行讲解:
一、下载vs2019
第一个坑!电脑上没有vs的c++库后面安装cuda会报错,同时cuda11.2是仅适配vs2017或vs2019的。因此,这里笔者先安装vscode2019。
安装包下载地址:vscode2019

下载社区版,详细安装配置c++库教程参考:
二、查看驱动版本
在cmd里输入nvidia-smi 或者在桌面右键nvidia控制面板→左下角“系统信息”→左上角“组件”查看。

可以看到笔者的电脑驱动版本是537.70,cuda版本是12.2,只要安装的cuda比自己电脑第一个版本就可以,也就是cuda12.1以下都能下载。
因为要适配飞桨(飞桨是完全适配cuda11.2和cudnn8.1的),所以笔者安装的是cuda11.2。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
三、cuda11.2下载安装
在官网下载:https://developer.nvidia.com/cuda-toolkit-archive

可以发现低版本的cuda都没有win11的选择,没有关系下载win10的即可,然后就是管理员身份运行等一系列操作了。

若出现下面这个问题,请将控制面板中的nvidia framework sdk…删掉

剩下的按照提示选择“自定义安装”,“下一步”,在选择安装位置这里要记清楚路径,后面会把下载的cudnn文件复制到相应路径下。

其中选项中cuda里有一个“visual studio interpreter”我勾选了

点击关闭后,直接弹出对应的文件夹。
若安装成功,则在cmd里输入nvcc --v,会看到版本号,就是安装成功了。

cuda的第一步完成,还有进行系统环境配置和sdk的工作。(原文链接:https://blog.csdn.net/vertira/article/details/125060383,为了流程完整我按照这个教程成功了,没有再重新弄只是按流程把博主的截图粘贴过来了)
(1)环境变量
环境变量里面系统自动添加cuda_path和cuda_path_v11_2路径。只需要在再把对应路径下的lib和bin文件路径加上就行了。
cuda_lib_path = %cuda_path%\lib\x64
cuda_bin_path = %cuda_path%\bin

(2)sdk配置
此时需要找到相用的文件,用vs2019打开进行配置。


出现下面的输出代表成功。

按照教程,此时还需要配置环境变量:
(1)确认系统变量中:cuda_path和cuda_path_v10.0已经存在
(2)我们还需要在环境变量中添加如下几个变量:
cuda_sdk_path = c:\programdata\nvidia corporation\cuda samples\v10.0
cuda_sdk_bin_path = %cuda_sdk_path%\bin\win64
cuda_sdk_lib_path = %cuda_sdk_path%\common\lib\x64
可在cmd中查看配置情况(命令:set cuda)
四、cudnn8.1下载
cudnn下载链接:https://developer.nvidia.com/rdp/cudnn-archive
需要注册英伟达账户 才能下载,一个邮箱注册失败了就换一个。

第一个和第三个都行,这里我跟着教程(https://www.bilibili.com/read/cv27240928/?jump_opus=1)选择了第一个。
下载成功后,打开压缩包,把里面cudnn中的的include,lib,bin文件夹里面的所有文件分别的 对应的 复制到c:\program files\nvidia gpu computing toolkit\cuda\v11.2文件 对应的include,lib,bin文件里面
比如bin文件夹中:

复制下面第一个图的全部文件到第二个图中粘贴


在这个路径下打开终端:c:\program files\nvidia gpu computing toolkit\cuda\v11.2\extras\demo_suite
验证devicequery和bandwidthtest

一开始我按照博主的教程直接输入devicequery或bandwidthtest会报错,这是因为路径的问题,后面改成下面的形式就没错了:
(可以输入devicequery到一半的时候,按“tab”键,自动填充就不会出错)

成功,

成功!到此cuda和cudnn安装结束。
另外提一下,在anaconda中可以通过下面指令查找安装更多版本的cuda和cudnn
anaconda search -t conda cuda
anaconda search -t conda cudnn
五、cuda 如何卸载重装
六、安装anaconda
anaconda可以同时管理多个版本的python,能创建虚拟环境,各个python版本的虚拟环境不受影响。由于笔者电脑原来就装了anaconda所以这里就不做展开了。
anaconda安装教程(超详细版)
七、tensorflow_gpu-2.10.0安装及验证
对照表格我选择安装2.10.0的cpu和gpu(对应关系查询表:https://tensorflow.google.cn/install/source_windows)
下面这些版本已经测试过,可以匹配使用。cuda版本只受显卡驱动版本的影响,版本越新支持的cuda越多,且向下兼容。同时,需要注意tf2.11以上已经不再支持windows系统了。

可以直接pip下载,将tf下载到默认python路径下:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu==2.10.0
但笔者这里通过anaconda创建虚拟环境进行下载,方便以后其他python代码的管理:
打开anaconda powershell prompt

(1)创建一个名字为tensorflow的虚拟环境,这个环境用的python版本是3.9版本的:
conda create -n tensorflow python=3.9

(2)查看虚拟环境列表:
conda env list
有tensorflow说明创建成功

(3)进入环境,输入命令:activate tensorflow,就可以进入tensorflow环境中:
conda activate tensorflow

(4)如果要退出环境,输入:
conda deactivate
(5)因为我的conda环境在d盘中,所以将路径改了以下。如果anaconda安装的时候是默认路径,这一步不需要。

(6)安装指定版本的tensorflow-gpu,,我安装的是2.10.0,根据你自己的配套版本安装,输入命令:
(有梯子就直接用这个)pip install tensorflow-gpu==2.10.0
(没有梯子就换源用这个)pip install tensorflow-gpu==2.10.0 -i https://pypi.mirrors.ustc.edu.cn/simple
(7)打开python环境,导入tensorflow包进行测试 ,查看tensorflow的版本信息, 输入命令:
import tensorflow as tf
print(tf.__version__) #tensorflow版本
print('gpu', tf.test.is_gpu_available()) #gpu

(8)退出tensorflow环境:
conda deactivate
(9)测试 tensorflow-gpu 是否安装成功
打开anaconda,选择tensorflow环境,打开spyder,第一次打开需要安装spyder,直接点下方的install即可。

输入以下测试代码:
import tensorflow as tf
print(tf.__version__)
print(tf.test.gpu_device_name())
print(tf.config.experimental.set_visible_devices)
print('gpu:', tf.config.list_physical_devices('gpu'))
print('cpu:', tf.config.list_physical_devices(device_type='cpu'))
print(tf.config.list_physical_devices('gpu'))
print(tf.test.is_gpu_available())
# 输出可用的gpu数量
print("num gpus available: ", len(tf.config.experimental.list_physical_devices('gpu')))
# 查询gpu设备
打开spyder:

默认配置运行

查看结果:

出现红框中tf版本号和true表示成功。
(10)卸载重装
tensorflow-gpu卸载:
测试gpu运算速度
同样的在spyder下输入测试代码:
import tensorflow as tf
import timeit
#指定在cpu上运行
def cpu_run():
with tf.device('/cpu:0'):
cpu_a = tf.random.normal([10000, 1000])
cpu_b = tf.random.normal([1000, 2000])
c = tf.matmul(cpu_a, cpu_b)
return c
#指定在gpu上运行
def gpu_run():
with tf.device('/gpu:0'):
gpu_a = tf.random.normal([10000, 1000])
gpu_b = tf.random.normal([1000, 2000])
c = tf.matmul(gpu_a, gpu_b)
return c
cpu_time = timeit.timeit(cpu_run, number=10)
gpu_time = timeit.timeit(gpu_run, number=10)
print("cpu:", cpu_time, " gpu:", gpu_time)

pycharm中配置解析器
参考:
新建个文件夹叫tf2.10.0
用pycharm打开文件夹
进入设置

新增编辑器

加载conda环境

测试代码:
import tensorflow as tf
print("tensorflow version is :",tf.__version__)
print("keras version is :",tf.keras.__version__)
print("gpu is","available" if tf.config.list_physical_devices('gpu')else "not available")
tf.config.list_physical_devices('gpu')

十、pytorch2.1.0环境配置
首先创建python3.8的虚拟环境并激活,这里虚拟环境命名为pytorch_38,可按自己需求更改。
conda create -n pytorch_38 python==3.8
conda activate pytorch_38
接着通过以下网址,决定安装哪个版本的pytorch
previous pytorch versions | pytorch
icon-default.png?t=n7t8https://pytorch.org/get-started/previous-versions/
但这里遇到了特殊情况,已安装 cuda11.2,但搜索官网给的版本里没有11.2,解决方案如下:
通过如下命令行,在虚拟环境中用pip安装pytorch1.9.1这个版本
pip install torch==1.9.1+cu111 torchvision==0.10.1+cu111 torchaudio==0.9.1 -f https://download.pytorch.org/whl/torch_stable.html --trusted-host pypi.org --trusted-host download.pytorch.org --trusted-host files.pythonhosted.org
此时笔者又遇到一个问题,笔记本电脑上本来虚拟环境里安装的pytorch是2.1.0,为避免产生版本错误的问题,笔者在已经安装pytorch和cuda的环境下,检查当前版本下pytorch和cuda版本是否兼容。
在pytorch_38的虚拟环境里,输入python,进入编译环境中,输入如下指令:
(1)先检查 pytorch 实际使用的运行时的 cuda 目录
import torch
import torch.utils
import torch.utils.cpp_extension
torch.utils.cpp_extension.cuda_home #输出 pytorch 运行时使用的 cuda

cuda11.2
(2)再检查pytorch版本
print(torch.__version__)

pytorch2.1.0
(3)最后检查pytorch和cuda版本是否匹配
print(torch.cuda.is_available())

结果为true,那就没问题。如果后期出现其他问题再更新博客内容。若为false,则可以把原来的pytorch版本删除,再装个跟cuda11.2匹配的pytorch1.9.1版本。
最后检验pytorch是否安装成功
让安装了pytorch的虚拟环境执行包含以下代码的py文件即可
import torch
print(torch.cuda.is_available()) # cuda是否可用
print(torch.cuda.current_device()) # 返回当前设备索引
print(torch.cuda.device_count()) # 返回gpu的数量
print(torch.cuda.get_device_name(0))
正常情况下 前三个print应输出:
true
0
1

至此,cuda在笔者主机上的配置圆满成功,仅做一个自己的配置记录和给大家一个参考。
补充了解:深入了解cuda、cudatoolkit以及多版本cuda共存时pytorch调用哪个
进一步,你有必要深入了解一下cuda、cudatoolkit以及多版本cuda共存时pytorch调用哪个 cuda和cudatoolkit-csdn博客
十、参考来源
[1] https://www.bilibili.com/read/cv27240928/?jump_opus=1
[2] https://blog.csdn.net/vertira/article/details/125060383
[3] https://cloud.tencent.com/developer/article/2156737?areasource=102001.15&traceid=nvohr182mwv01l5gbnx9y
[4]
[5] tensorflow-gpu保姆级安装教程(win11, anaconda3,python3.9):https://blog.csdn.net/weixin_43412762/article/details/129824339
[6]
发表评论