网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
一、背景
这不仅仅是 Python 语言类进行机器学习解决性能问题的唯一,在使用 Java/Python 进行大数据处理时,有时候也会有遇到需要 GPU 来解决性能的问题。
以作者的使用经验来看,在需要并行计算能力的程序里,CPU 再强壮也比不过 GPU 的加持。
所以 GPU 很重要,但不了解的朋友们,可能一买来爱机,就急急忙忙地开发体验,却不知所以然,有可能是因为少干了几件事!非得要等开发了,才一堆报错,如下所示:
File "..\torch\cuda\__init__.py", line 239, in _lazy_init
raise AssertionError("Torch not compiled with CUDA enabled")
AssertionError: Torch not compiled with CUDA enabled
# 又或者是
xFormers can't load C++/CUDA extensions. xFormers was built for:
caught exception 'Torch not compiled with CUDA enabled', memory monitor disabled
上面的图不是唯一的错误,现归类一下,大概不了解的朋友们一共会出现三类:
- 没有 GPU 却强制写了 GPU 的代码;
- 有 GPU 但没有安装驱动;
- 有 GPU 也装了驱动,却没有装正确的库;
二、安装显卡驱动程序
请自行前往 NVidia 驱动程序下载页 进行挑选,毕竟每个人的电脑不太一样,但我初步看了一下,大家可能买的电脑的支持列表大概一致,如果一样你就点此 传送门 去下载,下图是传送门的截图
安装时一般傻瓜式安装就可以了,这里不详细说了,都是系统驱动。
三、安装 CUDA 工具包支持
上面一节一般默认安装后,程序的位置会在:C:\Windows\System32\nvidia-smi.exe
如果一不小心自己换了别的目录而没有被识别,你可以去配置 PATH 自行添加。
接着在安装 CUDA 之前,先看一下你所购买的当前 CUDA 版本号是多少?具体如下:
从上图可以得到,需要关注的是 12.3 的版本,点此 传送门 即可到达指定地点,下面是截图预览。
一般情况下,尾号版本具有更大的兼容性,所以我这边直接选了 12.3.2,也是一样默认安装。
装完之后,它的默认路径一般在(下图所示):
四、使用 Python 代码快速测试
4.1、使用 pytorch 框架
import torch
# 检查是否有CUDA支持
if torch.cuda.is_available():
print("CUDA支持可用")
else:
print("CUDA支持不可用")
注意事项,这里没有讲太多,因为不讲库安装,这里提个醒,pytorch 需要注意一下关键字:
类似 torch-2.1.2+cu118 这样的才是支持 GPU,而 torch-2.1.2 是没有 !
4.2、使用 tensorflow 框架
import tensorflow as tf
# 获取可见的GPU设备列表
gpu_devices = tf.config.experimental.list_physical_devices('GPU')
if gpu_devices:
print("GPU支持可用")
else:
print("GPU支持不可用")
五、扩展知识
5.1、什么是 nvidia-smi 命令行程序
首先要明白什么是 smi?它的英文全称是 System Management Interface。
所以我们可以通俗点叫它 NVIDIA 系统管理接口或界面 (nvidia-smi) ,它是一个命令行实用程序,基于 NVIDIA 管理库 (NVML) ,旨在帮助管理和监控 NVIDIA GPU 设备。
所以如果你没有支持 nvidia-smi,那么所有 N卡相关的 GPU 都基本不能使用。
那 NVML 又是什么?它的英文全称是 NVIDIA Management Library。它基于 C 的 API,用于监控和管理 NVIDIA GPU 设备的各种状态。它提供对通过 nvidia-smi 公开的查询和命令的直接访问。NVML 的运行时版本附带 NVIDIA 显示驱动程序,SDK 提供相应的标头、存根库和示例应用程序。每个新版本的 NVML 都向后兼容,旨在成为构建第三方应用程序的平台。
5.2、CPU 与 GPU 在开发及应用中的区别
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!