作者fragmentwing (片翼碎梦)
看板DataScience
标题Re: [问题] 新手每次跑模型时都是CPU满载
时间Thu Apr 11 14:00:33 2024
※ 引述《matrixx (matrix)》之铭言:
: 各位前辈好 小弟是程式(机器学习)新手
: 我在用vs code 跑程式中的模型时都会非常卡
: 开了工作管理员才发现都是CPU满载
: 想让vs code用gpu帮忙跑模型
: 但去载cuda时 好像看到有人说 windows 家用版没办法使用相关的toolkit
: 想请问各位大大 有类似的经验或解决方案吗?
: ----
: Sent from BePTT on my Samsung SM-A5460
建议你搜寻pytorch gpu 知乎 记得那边有几篇写得算完整 以下是过来人的建议:
0. 首先 你要理解装给python用的package是一回事 gpu那边则需要安装相应的cuda工具是另一回事
1. 你要先确定有gpu这件事(工作管理员显示的gpu好像有一张其实是拿cpu过来用 忘记是为啥了,像我是实质8G但帐面总计16G)
2. 确认gpu的版本(请善用cmd指令)。
之後去找nvidia给的、或一些教学文会附上的对照表,找一个符合且不要太新的(大概比可以用的最新版退几个小版本,为了稳定)
3. 下载对应的cuda执行档并安装 比如我用的是11.8 直接搜寻download cuda 11.8就有了
4. 去pytorch官网找previous 下载pytorch用的pip指令
!!注意,你要找的是後面会有额外下载指令(以cuda是11.8为例 後面应该会有个cu118),否则你会装到用於cpu的版本
!!注意,gpu版的更新方式是uninstall後重装,用一般方式重装会忽略额外下载的部分
5. 检查pytorch版本 print torch.__version__ 有X.X.X + cuOO.O 就算成功了
p.s. 使用gpu时要搬运资料到gpu上
一般是先用变数device = 有cuda就cuda else cpu
之後model.to(device) optim.to(device)
sample 和 label 则是从dataloader拆出来後再to.(device)
另外要注意tensor本身除了type以外也有device要相同的需求
题外话,之前cmd那边查cuda是11.8 设定找到的应用程式是11.6 torch是+cu113
这样子竟然还能跑到想更新pytorch版本时才发现
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 42.77.107.182 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DataScience/M.1712815245.A.08A.html
1F:推 DaOppaiLoli: cmd 查的通常会是最高支援的版本 04/13 07:30
2F:→ fragmentwing: 原来是这样 我一直以为是我装到哪个就是哪个 因为之 04/13 14:10
3F:→ fragmentwing: 前看人家教学时都是要看cuda版本左边的那个数字去找 04/13 14:10
4F:→ fragmentwing: 相容性 原来根本可以跳过这步XD 04/13 14:10
5F:推 DaOppaiLoli: 一个机器也可以多个 CUDA 共存,理论上 driver 支援 04/13 15:15
6F:→ DaOppaiLoli: 的版本要大於实际安装函式库的版本,然後要大於应用 04/13 15:15
7F:→ DaOppaiLoli: 程式的版本 04/13 15:15
8F:→ DaOppaiLoli: 像你就是 driver 支援到 11.8,函式库装 11.6,然後 04/13 15:16
9F:→ DaOppaiLoli: torch 是 11.3 04/13 15:16
10F:→ DaOppaiLoli: 虽然还是建议都装一样的比较好 04/13 15:16
11F:→ fragmentwing: 原来是刚好装得有相容性 04/13 17:08
12F:→ fragmentwing: 多个cuda共存是指同一张gpu吗?这样torch运行时会怎 04/13 17:08
13F:→ fragmentwing: 麽选择使用的cuda啊? 04/13 17:08
14F:推 DaOppaiLoli: 在同一台机器,无论单张或多张卡,都可以有多个不同 04/15 09:01
15F:→ DaOppaiLoli: 版本的 CUDA 函式库共存,例如 Docker 或 Conda 就 04/15 09:01
16F:→ DaOppaiLoli: 能做到这种多版本 CUDA 的管理,像这张图里 nvcc 告 04/15 09:01
17F:→ DaOppaiLoli: 诉我们 CUDA 是 11.8 版,但 nvidia-smi 显示的是 1 04/15 09:01
18F:→ DaOppaiLoli: 2.2 版 04/15 09:01
20F:→ DaOppaiLoli: 至於 PyTorch 是如何判断版本我是不太确定,但他可 04/15 09:01
21F:→ DaOppaiLoli: 能会根据 nvcc 或 nvml 之类的来判断,其他有些函式 04/15 09:01
22F:→ DaOppaiLoli: 库则可能会看 CUDA_HOME 环境变数来判断 04/15 09:01
23F:→ RumiManiac: nvidia-smi 查到的是 CUDA driver 版本,而 nvcc 查到 05/06 13:15
24F:→ RumiManiac: 的是 CUDA compiler 版本,真正的 CUDA runtime lib 05/06 13:16
25F:→ RumiManiac: 是根据不同安装方式对应不同的路径 e.g. /usr/local/ 05/06 13:16