如何在 Ubuntu 上使用 nvidia-smi 监控和管理 NVIDIA GPU

1. 介绍

在 Ubuntu 上使用 GPU 时,必须准确监控其状态。这在深度学习或图形渲染等工作负载中尤为重要,因为了解 GPU 使用情况和驱动版本是必需的。本文将介绍如何使用 nvidia-smi(NVIDIA GPU 管理工具),并提供在 Ubuntu 上检查 GPU 信息的方法。

2. 使用 nvidia-smi 检查 GPU 信息

nvidia-smi 是一个命令行工具,可让您监控 NVIDIA GPU 的利用率、显存使用情况以及其他详细信息。当需要实时查看 GPU 活动或获取详细的利用率指标时,它特别有用。

基本用法

您可以使用以下命令实时监控 GPU 使用率和显存利用率:

nvidia-smi --query-gpu=timestamp,name,utilization.gpu,utilization.memory,memory.used,memory.free --format=csv -l 1

该命令会检索包括 GPU 利用率、显存使用情况以及可用显存等详细信息。-l 选项用于设置刷新间隔(秒)。

显示格式和文件输出

默认情况下,结果以表格形式显示,但您可以将其输出为 CSV 以便更容易处理。如果想将信息保存到文件中,请使用 -f 选项指定目标文件。

nvidia-smi --query-gpu=timestamp,name,utilization.gpu,utilization.memory,memory.used,memory.free --format=csv -l 1 -f /path/to/output.csv

这样即可保存 GPU 利用率日志,供以后分析使用。

3. 使用 nvidia-smi 获取进程信息

nvidia-smi 还可以获取当前使用 GPU 的进程信息,帮助您了解每个进程消耗了多少 GPU 资源。

获取进程信息

使用以下命令查看使用 GPU 的进程的 PID 和显存使用情况:

nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv,noheader

该命令会返回活跃的 GPU 进程列表,并显示每个进程的显存占用情况。

nvidia-smi pmon 子命令

nvidia-smi 工具还提供 pmon 子命令,可进行更细致的 GPU 进程监控。

nvidia-smi pmon --delay 10 -s u -o DT

该命令会在指定间隔显示 GPU 进程信息。--delay 选项定义刷新间隔(秒),您可以选择要显示的具体信息。

4. 安装与验证 NVIDIA 驱动

在 Ubuntu 上使用 NVIDIA GPU,必须安装正确的 NVIDIA 驱动。以下是安装与验证的步骤。

驱动安装

首先,使用以下命令为您的系统安装合适的 NVIDIA 驱动:

sudo apt install nvidia-driver-510

安装完成后,重启系统。

验证安装

重启后,运行以下命令确认驱动已正确安装:

nvidia-smi

如果显示了驱动版本和 CUDA 版本,则说明安装成功。

5. 使用 TensorFlow 验证 GPU 工作情况

您还可以通过 TensorFlow(机器学习框架)测试来验证 GPU 功能。

安装 Anaconda

首先,安装 Anaconda 并创建您的环境:

bash ./Anaconda3-2022.05-Linux-x86_64.sh
conda update -n base conda
conda update anaconda
conda update -y --all
conda install tensorflow-gpu==2.4.1

检查 TensorFlow 对 GPU 的识别情况

接下来,验证 TensorFlow 是否识别到 GPU:

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

如果列表中出现 GPU 设备,则说明 TensorFlow 已成功检测到 GPU。

6. GPU 监控与日志记录

nvidia-smi 支持实时 GPU 监控和日志记录,这有助于随时间跟踪 GPU 使用情况并优化性能。

定期监控

要设置定期监控,使用 -l 选项指定更新间隔,并可选择将数据记录到文件中:

nvidia-smi --query-gpu=timestamp,name,utilization.gpu,utilization.memory,memory.used,memory.free --format=csv -l 1 -f /var/log/gpu.log

通过 Python 绑定进行可编程控制

nvidia-smi 提供了 Python 绑定(nvidia-ml-py),允许您以编程方式获取 GPU 信息。这使得可以在 Python 脚本中实现更定制的监控和控制。

7. 结论

nvidia-smi 是在 Ubuntu 上检查和管理 NVIDIA GPU 使用的强大工具。本文阐述了基本用法、进程监控、驱动安装以及 TensorFlow GPU 验证。使用这些技术可最大化 GPU 性能并优化您的系统。