目录

  • 1 问题背景
  • 2 问题探索
  • 3 问题解决
  • 4 告别Bug

1 问题背景

环境:

  • 远程服务器Ubuntu20.04
  • CUDA 11.6

现象:在日志文件和终端均显示Python脚本已使用了GPU


但是nvidia-smi中的Processes进程无显示

2 问题探索

首先,可以看到

| 0Tesla V100-PCIE...On | 00000000:0F:00.0 Off |0 || N/A 34CP037W / 250W | 1603MiB / 16384MiB |0%Default |

GPU显存被占用,换言之有实例在正常使用GPU,表明不是硬件、显卡驱动等问题。

检查Pytorch是否正确配置

>>> import torch>>> print(torch.cuda.is_available())True

证明也不是Pytorch的问题

接着安装一个工具查看正在使用显卡的进程

apt install -y psmiscfuser -v /dev/nvidia*

终端输出

 USERPID ACCESS COMMAND/dev/nvidia-uvm: root kernel mount /dev/nvidia-uvm root12860 F...m python/dev/nvidia-uvm-tools: root kernel mount /dev/nvidia-uvm-tools/dev/nvidia7:root kernel mount /dev/nvidia7 root12860 F...m python/dev/nvidiactl:root kernel mount /dev/nvidiactl root12860 F...m python

由于我这里诊断的进程是一个使用GPU的python脚本,所以记下脚本的PID: 12860

查看系统进程

ps -aux

输出

USER PID %CPU %MEMVSZ RSS TTYSTAT START TIME COMMAND...root 128605764.2 32781208 17343484 pts/0 Sl+ 14:11 269:00 python test.pyroot 135100.00.0139009076 ?Ss 14:36 0:00 sshd: root@nottyroot 135490.00.0 70243768 ?Ss 14:37 0:00 bashroot 150030.00.0 90924092 pts/3Ss 14:50 0:00 /usr/bin/bash --init-file /root/.vscode-server/bin/da76f93349a72022ca4670c1b84860304616aaa2/out/vs/workbench/contrib/terminal/broot 153520.00.0 5476 592 ?S14:55 0:00 sleep 180root 156980.00.0108563316 pts/3R+ 14:58 0:00 ps -aux

PID: 12860对应的python脚本,正好是我怀疑没用上GPU的脚本,证明该python实例实际上成功跑在了GPU上

3 问题解决

nvidia-smi不显示正在使用GPU的进程很可能不是一个问题,而是GPU的使用率太低(多发生在远程高性能服务器运行小型实验的情形),如遇到相关问题,可按上面步骤自检

4 告别Bug

本文收录于《告别Bug》专栏,该专栏记录人工智能领域中各类Bug以备复查,文章形式为:问题背景 + 问题探索 + 问题解决,订阅专栏+关注博主后可通过下方名片联系我进入AI技术交流群帮忙解决问题

源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系