跳到主要内容

gpu

在使用 GPU 时,如果需要监控 GPU 的运行状态,可以使用以下工具。

Grafana 面板

EPTI 平台搭建的 Grafana 平台用于将服务和系统上报的数据进行可视化。 其中提供了一个 GPU 面板可以查看 GPU 运行的状态。

登录 Grafana

Grafana 平台的域名是 grafana.epti.moe,进入后点击登陆窗的 Sign in with EPTI SSO 即可前往鉴权登录。你也可以在 auth.epti.moe 通过点击 System 标题下的 Grafana (系统数据看板) 按钮进入。

访问 GPU 面板

登录进平台后,可以在首页的左下角,看到 Dashboards,是目前提供的预设面板,GPU 面板的名称是 Nvidia GPU Metrics

Grafana GPU Dashboard

面板中按每个 GPU,显示了全面的数据,你可以在左上角的下拉菜单中,切换不同的 GPU,其中:

  • 0508d9c0-d8c0-94c1-8549-00311359a7a4 为 GPU 0
  • cafdc01d-1a7a-c212-9573-658907b4918e 为 GPU 1

系统级 nvidia-smi 信息 (非实时)

因为系统用户的 nvidia-smi 信息会更完善,所以系统每分钟会输出 nvidia-smi 的信息到固定位置,并且会有脚本匹配每一个进程的归属。方便确认任务占用,协调资源的使用。访问地址:http://172.31.10.221/gpu/index.txt

Fri Dec  8 11:17:01 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.108.03 Driver Version: 510.108.03 CUDA Version: 11.6 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA A100 80G... On | 00000000:AF:00.0 Off | 0 |
| N/A 70C P0 269W / 300W | 11699MiB / 81920MiB | 72% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
| 1 NVIDIA A100 80G... On | 00000000:D8:00.0 Off | 0 |
| N/A 39C P0 66W / 300W | 34608MiB / 81920MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 503162 C python 5401MiB |
| 0 N/A N/A 1344013 C /opt/conda/bin/python 2122MiB |
| 0 N/A N/A 1431120 C /opt/conda/bin/python 457MiB |
| 0 N/A N/A 1485214 C /opt/conda/bin/python 1134MiB |
| 0 N/A N/A 1578722 C /opt/conda/bin/python 457MiB |
| 0 N/A N/A 3417369 C /opt/conda/bin/python 2122MiB |
| 1 N/A N/A 1344013 C /opt/conda/bin/python 13458MiB |
| 1 N/A N/A 3417369 C /opt/conda/bin/python 21146MiB |
+-----------------------------------------------------------------------------+
Following container id -> owner are mapped one-to-one with the nvidia-smi processes:
cid: a32553d9daa99608c31661c32df0c6746d24c9fb5bb1afeefbb52080aac81cf2 -- container: USER-A
cid: 4ea8fb0ad08ff0059f9356e191b001855155f0c577b26a3f6c19ddf025c9ec8c -- container: USER-B
cid: a32553d9daa99608c31661c32df0c6746d24c9fb5bb1afeefbb52080aac81cf2 -- container: USER-A
cid: a32553d9daa99608c31661c32df0c6746d24c9fb5bb1afeefbb52080aac81cf2 -- container: USER-A
cid: a32553d9daa99608c31661c32df0c6746d24c9fb5bb1afeefbb52080aac81cf2 -- container: USER-A
cid: 4ea8fb0ad08ff0059f9356e191b001855155f0c577b26a3f6c19ddf025c9ec8c -- container: USER-B
cid: 4ea8fb0ad08ff0059f9356e191b001855155f0c577b26a3f6c19ddf025c9ec8c -- container: USER-B
cid: 4ea8fb0ad08ff0059f9356e191b001855155f0c577b26a3f6c19ddf025c9ec8c -- container: USER-B

以上是一个输出的实例,nvidia-smi 列出的进程和下发的 cid 信息是一一对应的。如 PID=503162 的进程是由 USER-A 容器启动的。

nvtop

如果你想要试试的观测 GPU 内存的变化来调整模型的参数,你可以使用 nvtop 来获取一个图表式的 GPU 占用/显存占用表单。直接在 jupyterlab 的命令行中执行 nvtop 指令,即可实时监测状态。

nvtop GPU

py3mvml py3smi

备注

py3mvml (sudo pip install py3mvml) 在新版镜像已经不再预装,需要自行安装。

Grafana 面板为数据采集工具定期上报,时效性略差。你可以选择直接使用 Nvidia 官方的 nvidia-smi 指令查看 GPU 状态,但因为容器限制,容器内运行 nvidia-smi 只能看到 GPU 状态,而进程的细节将丢失,那你可以选择在安装了 py3mvml python 包后,用 py3smi 来查看进程的 GPU 占用信息。(进程信息也不够全面,但是是一种方法。)

+-----------------------------------------------------------------------------+
| NVIDIA-SMI Driver Version: 510.108.03 |
+---------------------------------+---------------------+---------------------+
| GPU Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
+=================================+=====================+=====================+
| 0 N/A% 50C 0 71W / 300W | 2160MiB / 81920MiB | 0% Default |
| 1 N/A% 38C 0 43W / 300W | 853MiB / 81920MiB | 0% Default |
+---------------------------------+---------------------+---------------------+

+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU Owner PID Uptime Process Name Usage |
+=============================================================================+
| 0 ??? 1568413 1307MiB |
+-----------------------------------------------------------------------------+

推荐实践

  • 在运行程序时,使用 nvtop 来实时查看显存、CPU utils 的实时变化来掌握模型的运行情况。
  • 在程序运行前后,使用非实时 nvidia-smi 信息来确认资源的使用情况,方便安排自己的实验或与其他人协调。
  • 长期运行的任务可以通过 GPU 面板里的历史数据确认运行的情况。