目录
- 1 问题背景
- 2 问题探索
- 3 问题解决
- 4 告别Bug
1 问题背景
环境:
- 远程服务器Ubuntu20.04
- CUDA 11.6
现象:在日志文件和终端均显示Python脚本已使用了GPU
但是nvidia-smi
中的Processes
进程无显示
2 问题探索
首先,可以看到
| 0 Tesla V100-PCIE... On | 00000000:0F:00.0 Off | 0 |
| N/A 34C P0 37W / 250W | 1603MiB / 16384MiB | 0% Default |
GPU显存被占用,换言之有实例在正常使用GPU,表明不是硬件、显卡驱动等问题。
检查Pytorch是否正确配置
>>> import torch
>>> print(torch.cuda.is_available())
True
证明也不是Pytorch的问题
接着安装一个工具查看正在使用显卡的进程
apt install -y psmisc
fuser -v /dev/nvidia*
终端输出
USER PID ACCESS COMMAND
/dev/nvidia-uvm: root kernel mount /dev/nvidia-uvm
root 12860 F...m python
/dev/nvidia-uvm-tools:
root kernel mount /dev/nvidia-uvm-tools
/dev/nvidia7: root kernel mount /dev/nvidia7
root 12860 F...m python
/dev/nvidiactl: root kernel mount /dev/nvidiactl
root 12860 F...m python
由于我这里诊断的进程是一个使用GPU的python脚本,所以记下脚本的PID: 12860
查看系统进程
ps -aux
输出
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
...
root 12860 576 4.2 32781208 17343484 pts/0 Sl+ 14:11 269:00 python test.py
root 13510 0.0 0.0 13900 9076 ? Ss 14:36 0:00 sshd: root@notty
root 13549 0.0 0.0 7024 3768 ? Ss 14:37 0:00 bash
root 15003 0.0 0.0 9092 4092 pts/3 Ss 14:50 0:00 /usr/bin/bash --init-file /root/.vscode-server/bin/da76f93349a72022ca4670c1b84860304616aaa2/out/vs/workbench/contrib/terminal/b
root 15352 0.0 0.0 5476 592 ? S 14:55 0:00 sleep 180
root 15698 0.0 0.0 10856 3316 pts/3 R+ 14:58 0:00 ps -aux
PID: 12860
对应的python脚本,正好是我怀疑没用上GPU的脚本,证明该python实例实际上成功跑在了GPU上
3 问题解决
nvidia-smi不显示正在使用GPU的进程很可能不是一个问题,而是GPU的使用率太低(多发生在远程高性能服务器运行小型实验的情形),如遇到相关问题,可按上面步骤自检
4 告别Bug
本文收录于《告别Bug》专栏,该专栏记录人工智能领域中各类Bug以备复查,文章形式为:问题背景 + 问题探索 + 问题解决,订阅专栏+关注博主后可通过下方名片联系我进入AI技术交流群帮忙解决问题