更新时间:2025-02-27 gmt 08:00
在modelarts的notebook中如何在代码中打印gpu使用信息?-九游平台
用户可通过shell命令或python命令查询gpu使用信息。
使用shell命令
- 执行nvidia-smi命令。
依赖cuda nvcc
watch -n 1 nvidia-smi
- 执行gpustat命令。
pip install gpustat
gpustat -cp -i
使用ctrl c可以退出。
使用python命令
- 执行nvidia-ml-py3命令(常用)。
!pip install nvidia-ml-py3
import nvidia_smi nvidia_smi.nvmlinit() devicecount = nvidia_smi.nvmldevicegetcount() for i in range(devicecount): handle = nvidia_smi.nvmldevicegethandlebyindex(i) util = nvidia_smi.nvmldevicegetutilizationrates(handle) mem = nvidia_smi.nvmldevicegetmemoryinfo(handle) print(f"|device {i}| mem free: {mem.free/1024**2:5.2f}mb / {mem.total/1024**2:5.2f}mb | gpu-util: {util.gpu:3.1%} | gpu-mem: {util.memory:3.1%} |")
- 执行nvidia_smi wapper prettytable命令。
用户可以将gpu信息显示操作看作一个装饰器,在模型训练过程中就可以实时的显示gpu状态信息。
def gputil_decorator(func): def wrapper(*args, **kwargs): import nvidia_smi import prettytable as pt try: table = pt.prettytable(['devices','mem free','gpu-util','gpu-mem']) nvidia_smi.nvmlinit() devicecount = nvidia_smi.nvmldevicegetcount() for i in range(devicecount): handle = nvidia_smi.nvmldevicegethandlebyindex(i) res = nvidia_smi.nvmldevicegetutilizationrates(handle) mem = nvidia_smi.nvmldevicegetmemoryinfo(handle) table.add_row([i, f"{mem.free/1024**2:5.2f}mb/{mem.total/1024**2:5.2f}mb", f"{res.gpu:3.1%}", f"{res.memory:3.1%}"]) except nvidia_smi.nvmlerror as error: print(error) print(table) return func(*args, **kwargs) return wrapper
- 执行pynvml命令。
nvidia-ml-py3可以直接查询nvml c-lib库,而无需通过nvidia-smi。因此,这个模块比nvidia-smi周围的包装器快得多。
from pynvml import * nvmlinit() handle = nvmldevicegethandlebyindex(0) info = nvmldevicegetmemoryinfo(handle) print("total memory:", info.total) print("free memory:", info.free) print("used memory:", info.used)
- 执行gputil命令。
!pip install gputil
import gputil as gpu gpu.showutilization()
import gputil as gpu gpus = gpu.getgpus() for gpu in gpus: print("gpu ram free: {0:.0f}mb | used: {1:.0f}mb | util {2:3.0f}% | total {3:.0f}mb".format(gpu.memoryfree, gpu.memoryused, gpu.memoryutil*100, gpu.memorytotal))
注:用户在使用pytorch/tensorflow等深度学习框架时也可以使用框架自带的api进行查询。
父主题: standard notebook
相关文档
意见反馈
文档内容是否对您有帮助?
提交成功!非常感谢您的反馈,我们会继续努力做到更好!
您可在查看反馈及问题处理状态。
系统繁忙,请稍后重试
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨