当前位置:   article > 正文

CUDA&Pytorch安装使用(保姆级避坑指南)_python 3.12.4 cuda

python 3.12.4 cuda

2024年6月25日,注定血与泪的一天,因为我想试试,我这个华硕的天选4搭载的NVIDIA GeForce RTX 4060推理速度如何,所以就开始与CUDA的战斗。。。(然后开始被折磨一整天)

在此记录一下需要避的坑(不 避坑必坑),太提莫多了,我们一步步来说:

一,查看你的CUDA Version

版本是第一个大坑(选择适配你的版本最好最好)后续会说和Pytorch的兼容问题。

  1. # Win+R 调出 cmd 然后输入(如果你是英伟达显卡的话):
  2. nvidia-smi
  1. +---------------------------------------------------------------------------------------+
  2. | NVIDIA-SMI 546.80 Driver Version: 546.80 CUDA Version: 12.3 |
  3. |-----------------------------------------+----------------------+----------------------+
  4. | GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
  5. | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
  6. | | | MIG M. |
  7. |=========================================+======================+======================|
  8. | 0 NVIDIA GeForce RTX 4060 ... WDDM | 00000000:01:00.0 On | N/A |
  9. | N/A 44C P8 5W / 95W | 1381MiB / 8188MiB | 4% Default |
  10. | | | N/A |
  11. +-----------------------------------------+----------------------+----------------------+

运行结果如上,左上角会显示CUDA的Version,我的是12.3,后续都将按照12.3来举例。

二,去CUDA的网上下载CUDA

https://developer.nvidia.com/cuda-12-1-0-download-arcjhive?target_os=Windows&target_arch=x86_64&target_version=11&target_type=exe_localicon-default.png?t=N7T8https://developer.nvidia.com/cuda-12-1-0-download-archive?target_os=Windows&target_arch=x86_64&target_version=11&target_type=exe_local

网址如上-下载符合你的版本的,我的是:

Operating System : Windows

Architecture : x86_64

Version : 11

Installer Type : exe(local)

注:一般而言,不同版本的CUDA要求不同的NVIDIA驱动版本,同时显卡驱动版本要不低于CUDA的安装版本,如果驱动版本低的,可以自己去更新。上述中我的是546.8,安装的12.3的CUDA要求不低于545.84,所以我就没去检查更新,主要是懒。

下载好之后进行安装(第二个大坑)!!!!!

要选自定义安装,然后只选第一项CUDA,CUDA展开后,把Visual Studio Integration这一项取消勾选!!!!

取消勾选啊!!!!!!!一定要取消勾选啊!!!!

具体原因主要是有一个东西的安装会一直导致安装失败,成功了也会在后续有各种问题。还有需要记住你装在哪个路径内,方便后续的添加文件。

三,下载cuDNN

https://developer.nvidia.com/rdp/cudnn-archiveicon-default.png?t=N7T8https://developer.nvidia.com/rdp/cudnn-archive

cuDNN是一个GPU加速的深度神经网络基元库,能够以高度优化的方式实现标准例程,如前向和反向卷积、池化层、归一化和激活层。全球的深度学习研究人员和框架开发者都依赖cuDNN来实现高性能GPU加速。

我们需要将cuDNN中的内容,一一对应加到刚才我让你记住的目录中,如果你是默认的安装路径的话,那CUDA的安装路径大差不差的就是如下,我们设这个路径为route_CUDA,我瞎设的,并不重要,只是方便我后续编写的时候用..... <OwO>

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3

下载好的cuDNN中有三个文件夹,分别是bin,include,lib,而lib下又有一个x64文件夹,我们要做的就是把刚下载的cuDNN中的bin中的文件全选,复制到route_CUDA下的bin中(陈泽bin就是世一上,不玩LOL朋友的请自动忽略,夹带一点私货),后面两个以此类推,注意要把lib/x64文件夹下的文件复制到route_CUDA下的lib/x64中。

四,添加系统路径

这一步在你安装的时候,已经自动添加过一些了,你只需要在windows的搜索框中打入“编辑系统环境变量”这六个字,然后打开,就可以编辑系统环境变量了Hhhh(废话自动忽略)选择环境变量--会出现两个框,上面是你的用户变量,下面是系统变量,在系统变量中找到Path或者PATH这玩意儿,双击进入并加入这两项:

  1. C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3\include
  2. C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3\lib

(如果你是默认安装的话,应该是一样的,如果不是那可以参考上面自动添加的,比如:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3\bin   

这样你就可以确定路径了)

五,运行bandwidthTest.exe和deviceQuery.exe(检测工具)

  1. # 进入到route_CUDA的目录下后,跟着下列命令一步步执行
  2. cd .\extras\demo_suite
  3. .\bandwidthTest.exe
  4. .\deviceQuery.exe

结果如下(依次是bandwidthTest.exe和deviceQuery.exe):

  1. C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3\extras\demo_suite>.\bandwidthTest.exe
  2. [CUDA Bandwidth Test] - Starting...
  3. Running on...
  4. Device 0: NVIDIA GeForce RTX 4060 Laptop GPU
  5. Quick Mode
  6. Host to Device Bandwidth, 1 Device(s)
  7. PINNED Memory Transfers
  8. Transfer Size (Bytes) Bandwidth(MB/s)
  9. 33554432 12381.6
  10. Device to Host Bandwidth, 1 Device(s)
  11. PINNED Memory Transfers
  12. Transfer Size (Bytes) Bandwidth(MB/s)
  13. 33554432 12848.1
  14. Device to Device Bandwidth, 1 Device(s)
  15. PINNED Memory Transfers
  16. Transfer Size (Bytes) Bandwidth(MB/s)
  17. 33554432 173264.2
  18. Result = PASS
  19. NOTE: The CUDA Samples are not meant for performance measurements. Results may vary when GPU Boost is enabled.
  1. C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3\extras\demo_suite>.\deviceQuery.exe
  2. .\deviceQuery.exe Starting...
  3. CUDA Device Query (Runtime API) version (CUDART static linking)
  4. Detected 1 CUDA Capable device(s)
  5. Device 0: "NVIDIA GeForce RTX 4060 Laptop GPU"
  6. CUDA Driver Version / Runtime Version 12.3 / 12.3
  7. CUDA Capability Major/Minor version number: 8.9
  8. Total amount of global memory: 8188 MBytes (8585216000 bytes)
  9. MapSMtoCores for SM 8.9 is undefined. Default to use 128 Cores/SM
  10. MapSMtoCores for SM 8.9 is undefined. Default to use 128 Cores/SM
  11. (24) Multiprocessors, (128) CUDA Cores/MP: 3072 CUDA Cores
  12. GPU Max Clock rate: 2250 MHz (2.25 GHz)
  13. Memory Clock rate: 8001 Mhz
  14. Memory Bus Width: 128-bit
  15. L2 Cache Size: 33554432 bytes
  16. Maximum Texture Dimension Size (x,y,z) 1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384)
  17. Maximum Layered 1D Texture Size, (num) layers 1D=(32768), 2048 layers
  18. Maximum Layered 2D Texture Size, (num) layers 2D=(32768, 32768), 2048 layers
  19. Total amount of constant memory: zu bytes
  20. Total amount of shared memory per block: zu bytes
  21. Total number of registers available per block: 65536
  22. Warp size: 32
  23. Maximum number of threads per multiprocessor: 1536
  24. Maximum number of threads per block: 1024
  25. Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  26. Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)
  27. Maximum memory pitch: zu bytes
  28. Texture alignment: zu bytes
  29. Concurrent copy and kernel execution: Yes with 1 copy engine(s)
  30. Run time limit on kernels: Yes
  31. Integrated GPU sharing Host Memory: No
  32. Support host page-locked memory mapping: Yes
  33. Alignment requirement for Surfaces: Yes
  34. Device has ECC support: Disabled
  35. CUDA Device Driver Mode (TCC or WDDM): WDDM (Windows Display Driver Model)
  36. Device supports Unified Addressing (UVA): Yes
  37. Device supports Compute Preemption: Yes
  38. Supports Cooperative Kernel Launch: Yes
  39. Supports MultiDevice Co-op Kernel Launch: No
  40. Device PCI Domain ID / Bus ID / location ID: 0 / 1 / 0
  41. Compute Mode:
  42. < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
  43. deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 12.3, CUDA Runtime Version = 12.3, NumDevs = 1, Device0 = NVIDIA GeForce RTX 4060 Laptop GPU
  44. Result = PASS

进行到这一步我们仍然不能掉以轻心啊,还有很多的坑等着我们去踩..... <OwO>

五,创建环境

关于conda的内容,前人之述备矣,我们就不做赘婿了,呸呸呸,赘叙了(感觉还是错了,无所谓反正我上学那会儿语文学的也不好)直接上命令:

  1. #创建一个叫im_so_handsome的虚拟环境,python版本大于3.8,我默认的是3.11
  2. conda create --name im_so_handsome
  3. #激活im_so_handsome虚拟环境
  4. conda activate im_so_handsome

六,安装Pytorch

这一步太痛了,痛啊,太痛了,太太太太太太痛啦!!!!!!!!!!!!!!!!!!!!!第三个大坑来了,我是万万没有想到的是这次坑我的竟然是清华园(清华源)XD

正题开始,这个下面的网址,根据你的CUDA的版本读取到对应的命令

Start Locally | PyTorchStart Locallyicon-default.png?t=N7T8https://pytorch.org/get-started/locally/

我的选择是这样的(为什么我是CUDA12.3,但是我选择了12.1呢,首先说明一下,实测有效,应该是向下兼容,但最好还是选择跟自己版本号一样的,毕竟错一次的时间成本很高,呜呜呜T_T)

接下来我将分享重头戏了,我“精明的”小脑瓜一转,为什么不用清华源呢,我就把后面的这个:

--index-url https://download.pytorch.org/whl/cu121

换成了清华源,就那个一串最后是simple,算了,打出来吧:

  1. # 如假也不包换的清华源
  2. -i https://pypi.tuna.tsinghua.edu.cn/simple

当时因为没仔细看,以为就是个源,所以自己斗胆换成了国内的源(但其实他是包含cu121的版本号的),然后就是自动给你下载了默认的版本,然后就导致了不兼容,就像西湖醋鱼一样,醋是醋,鱼是鱼,西湖是西湖,同样的CUDA是CUDA,Pytorch是Pytorch,结果就是Pytorch根本检测不到你的显卡,呜呜呜想哭呜呜呜T_T

那我们应该怎么办呢?

GOOD QUESTION!!!

确保处在稳定的网络环境中,老老实实得按照他给你得命令安装,我的是如下:

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

失败就重新装,失败就重新装,这是个玄学,说不定哪次就成功了,我也是装了七八次才装上了。

然后就是第四个坑:痛啊,太痛了,太太太太痛啦!!!!!!!!!!!!!!!!!!!!!+1+1+1+1+1+1+1+1+1+1+1+1+1+1

如果你的环境里,已经安装了Pytorch,请你卸载掉,谢谢,覆盖是不好使滴,当你执行上一步,没有出现反反复复地重装得时候,反而是一连串的Requirement already satisfied,恭喜你踩雷了!

这个时候要不你就干脆新创个环境,要不就用下面这个命令卸载Pytorch:

pip uninstall torch

卸载完成后,再去上个步骤安装Pytorch。

XXX:说!你还敢不敢投机取巧了

我:不敢了,大爷,再也不敢了,呜呜呜

七,检验结果

在终端执行python进入python环境:

  1. python
  2. #然后输入
  3. >>> import torch
  4. >>> torch.cuda.is_available()

输出结果是True,证明CUDA可用,检测到了你的显卡。

然后让我们再来看看你的显卡数量,笔记本的话,应该都是一张吧。。。可能,我也不确定,涉及到知识盲区了。反正我的是一张,代码和结果一起打在下面了 :

  1. Python 3.12.4 | packaged by Anaconda, Inc. | (main, Jun 18 2024, 15:03:56) [MSC v.1929 64 bit (AMD64)] on win32
  2. Type "help", "copyright", "credits" or "license" for more information.
  3. >>> import torch
  4. >>> torch.cuda.is_available()
  5. True
  6. >>> import torch
  7. >>> torch.cuda.device_count()
  8. 1

可以看出来结果是1,至此恭喜你,终于成功了,但是,俗话说的好,一千个人有一千零一个哈姆雷特,如果你碰到了新的坑,那只能继续摸索,路漫漫那,其修远兮欸。。。。<OwO>

希望我们都可以在未来某天成为技术大牛!!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/979911
推荐阅读
相关标签
  

闽ICP备14008679号