作者RumiManiac (Rumi!)
看板DataScience
标题Re: [问题] 新手每次跑模型时都是CPU满载
时间Mon May 6 13:45:48 2024
更多细节可以读这篇,他整理得很不错,内容几乎都是正确的
https://www.cnblogs.com/marsggbo/p/11838823.html
※ 引述《fragmentwing (片翼碎梦)》之铭言:
: 题外话,之前cmd那边查cuda是11.8 设定找到的应用程式是11.6 torch是+cu113
: 这样子竟然还能跑到想更新pytorch版本时才发现
nvidia-smi 查到的是 CUDA driver 版本
一般我们装的 CUDA 指的是 CUDA runtime library (e.g. libcudart.so)
CUDA driver 提供 low-level API,而 CUDA runtime library 提供 high-level API
而 nvcc 是 CUDA compiler,个人认为跟上面的不完全相关,
只有在安装 CUDA toolkit 的时候会整包一起下载,
此时的 nvcc 跟 CUDA runtime library 才会相同
到底有多少工具跟 "CUDA" 有关系,可以参考以下连结的 Table 5
https://docs.nvidia.com/cuda/cuda-installation-guide-linux/#meta-packages
所以我不怎麽推荐用 nvcc 去检查 CUDA 版本...它甚至通常不需要下载
只不过偶尔还是会有神人写 CUDA program 需要自己去编译
PyTorch 是把 CUDA runtime library, cuDNN, 还有 NCCL 直接包在 package 里面
https://discuss.pytorch.org/t/install-pytorch-with-cuda-12-1/174294/2
所以装 PyTorch 才会不用先安装 CUDA 那堆有的没的
(反观很久以前装 TensorFlow 之前还要先装 CUDA, cuDNN 版本号看半天...)
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 42.77.107.182 (台湾)
: ※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DataScience/M.1712815245.A.08A.html
: 推 DaOppaiLoli: cmd 查的通常会是最高支援的版本 04/13 07:30
: → fragmentwing: 原来是这样 我一直以为是我装到哪个就是哪个 因为之 04/13 14:10
: → fragmentwing: 前看人家教学时都是要看cuda版本左边的那个数字去找 04/13 14:10
: → fragmentwing: 相容性 原来根本可以跳过这步XD 04/13 14:10
: 推 DaOppaiLoli: 一个机器也可以多个 CUDA 共存,理论上 driver 支援 04/13 15:15
: → DaOppaiLoli: 的版本要大於实际安装函式库的版本,然後要大於应用 04/13 15:15
: → DaOppaiLoli: 程式的版本 04/13 15:15
: → DaOppaiLoli: 像你就是 driver 支援到 11.8,函式库装 11.6,然後 04/13 15:16
: → DaOppaiLoli: torch 是 11.3 04/13 15:16
: → DaOppaiLoli: 虽然还是建议都装一样的比较好 04/13 15:16
: → fragmentwing: 原来是刚好装得有相容性 04/13 17:08
: → fragmentwing: 多个cuda共存是指同一张gpu吗?这样torch运行时会怎 04/13 17:08
: → fragmentwing: 麽选择使用的cuda啊? 04/13 17:08
: 推 DaOppaiLoli: 在同一台机器,无论单张或多张卡,都可以有多个不同 04/15 09:01
: → DaOppaiLoli: 版本的 CUDA 函式库共存,例如 Docker 或 Conda 就 04/15 09:01
: → DaOppaiLoli: 能做到这种多版本 CUDA 的管理,像这张图里 nvcc 告 04/15 09:01
: → DaOppaiLoli: 诉我们 CUDA 是 11.8 版,但 nvidia-smi 显示的是 1 04/15 09:01
: → DaOppaiLoli: 2.2 版 04/15 09:01
nvidia-smi 跟 nvcc 看到的是不同的东西
不过确实是可以有多个不同版本的 CUDA runtime library 共存
它安装起来看起来会像是这样
(在 Linux)
/usr/local/cuda-11.8/
/usr/local/cuda-12.1/
/usr/local/cuda -> /usr/local/cuda-12.1/
(Windows 也行)
如果要降版使用,就改变 symbolic link 或是环境变数 (PATH, LD_LIBRARY_PATH) 即可
: → DaOppaiLoli: https://i.imgur.com/XLFRpgr.jpg 04/15 09:01
: → DaOppaiLoli: 至於 PyTorch 是如何判断版本我是不太确定,但他可 04/15 09:01
: → DaOppaiLoli: 能会根据 nvcc 或 nvml 之类的来判断,其他有些函式 04/15 09:01
: → DaOppaiLoli: 库则可能会看 CUDA_HOME 环境变数来判断 04/15 09:01
: → RumiManiac: nvidia-smi 查到的是 CUDA driver 版本,而 nvcc 查到 05/06 13:15
: → RumiManiac: 的是 CUDA compiler 版本,真正的 CUDA runtime lib 05/06 13:16
: → RumiManiac: 是根据不同安装方式对应不同的路径 e.g. /usr/local/ 05/06 13:16
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.127.105.44 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DataScience/M.1714974351.A.0C3.html
1F:→ yoyololicon: 以前pytorch 也是cuda toolkit 什麽的另外载 好像2. 05/06 16:17
2F:→ yoyololicon: 0之後某版开始就整包装了 05/06 16:17
3F:推 retest75: 借串想问一下 我看很多安装教学都有说PyTorch跟cuda 都 05/06 16:57
4F:→ retest75: 要装,而且要装对应的版本,但我测试後发现PyTorch装完 05/06 16:57
5F:→ retest75: 後没有特别去安装cuda /以及cuda 版本跟PyTorch不对应 05/06 16:57
6F:→ retest75: 这两种状况好像都能正常的抓到显卡,这是什麽原因? 05/06 16:57
7F:→ retest75: 因为PyTorch安装过程会自动把需要的cuda 一并安装吗? 05/06 16:57
8F:→ lycantrope: 不知道这篇在写什麽... 05/06 21:16
9F:→ RumiManiac: @yoyololicon 谢谢补充,整个打包的确是新版才有的 05/07 04:52
10F:→ RumiManiac: 这也是以前 conda install 里面有 cudatoolkit 的原因 05/07 04:54
11F:→ RumiManiac: @retest75 对,你讲的东西就是我这篇第36行讲的 05/07 04:55
12F:→ RumiManiac: @lycantrope 哪边写得不好欢迎批评指正 05/07 04:57
13F:推 retest75: 原来!没仔细看内文,感谢! 05/07 13:55
14F:推 wuyiulin: 原来是这样,太神啦!解答我从硕班以来的疑惑。 05/07 18:30
15F:推 DaOppaiLoli: 推,感谢纠正观念错误 05/08 09:26
16F:推 fragmentwing: 推 05/08 16:23