NVIDIA GPU工具
nvgpu的Python项目详细描述
它提供有关GPU及其可用性的信息 计算。
通常我们希望在安装在 多GPU机器。因为tensorflow分配所有内存,所以只有一个 进程可以一次使用GPU。很遗憾,nvidia-smi提供 只有一个文本接口与信息的GPU。这些包裹包裹 它具有更易于使用的cli和python接口。
这是一个快速而肮脏的解决方案,调用nvidia-smi并解析 输出。我们可以根据 相对内存使用率,也就是说,xorg占用几MB是可以的。
此外,我们还有一个奇特的gpu表,其中包含了 python绑定到nvml。
为了更容易地监视多台计算机,可以部署 代理(通过rest api以json提供gpu信息)和 显示Web应用程序中的聚合状态。
安装
对于用户:
pip install -U nvgpu
或系统:
sudo -H pip install -U nvgpu
用法示例
命令行界面:
# grab all available GPUs CUDA_VISIBLE_DEVICES=$(nvgpu available)# grab at most available GPU CUDA_VISIBLE_DEVICES=$(nvgpu available -l 1)
打印设备、可用性、用户、进程的彩色表格:
$ nvgpu list status type util. temp. MHz users since pids cmd -- -------- ------------------- ------- ------- ----- ------- --------------- ------ -------- 0 [ ] GeForce GTX 1070 0 % 44 139 1 [~] GeForce GTX 1080 Ti 0 % 44 139 alice 2 days ago 19028 jupyter 2 [~] GeForce GTX 1080 Ti 0 % 44 139 bob 14 hours ago 8479 jupyter 3 [~] GeForce GTX 1070 46 % 54 1506 bob 7 days ago 20883 train.py 4 [~] GeForce GTX 1070 35 % 64 1480 bob 7 days ago 26228 evaluate.py 5 [!] GeForce GTX 1080 Ti 0 % 44 139 ? 9305 6 [ ] GeForce GTX 1080 Ti 0 % 44 139
或快捷方式:
$ nvl
python api:
importnvgpunvgpu.available_gpus()# ['0', '2']nvgpu.gpu_info()[{'index':'0','mem_total':8119,'mem_used':7881,'mem_used_percent':97.06860450794433,'type':'GeForce GTX 1070','uuid':'GPU-3aa99ee6-4a9f-470e-3798-70aaed942689'},{'index':'1','mem_total':11178,'mem_used':10795,'mem_used_percent':96.57362676686348,'type':'GeForce GTX 1080 Ti','uuid':'GPU-60410ded-5218-7b06-9c7a-124b77a22447'},{'index':'2','mem_total':11178,'mem_used':10789,'mem_used_percent':96.51994990159241,'type':'GeForce GTX 1080 Ti','uuid':'GPU-d0a77bd4-cc70-ca82-54d6-4e2018cfdca6'},...]
带有代理的Web应用程序
有多个节点。代理从GPU获取信息并将其提供给 通过rest api的json。master从其他节点收集信息并显示 在HTML页面中。默认情况下,代理也可以显示其状态。
代理
FLASK_APP=nvgpu.webapp flask run --host 0.0.0.0 --port 1080
主人
将代理设置为配置文件。代理可以通过指向 远程计算机或直接访问本地计算机的'self'。删除 'self'如果机器本身没有任何GPU。默认是 AGENTS = ['self'],以便代理也显示自己的状态。套 AGENTS = []来避免这种情况。
# nvgpu_master.cfg AGENTS = [ 'self', # node01 - master - direct access without using HTTP 'http://node02:1080', 'http://node03:1080', 'http://node04:1080', ]
NVGPU_CLUSTER_CFG=/path/to/nvgpu_master.cfg FLASK_APP=nvgpu.webapp flask run --host 0.0.0.0 --port 1080
在Web浏览器中打开主控形状:http://node01:1080。
作为服务安装
在带有systemd的ubuntu上,我们可以将agents/master安装为 服务将在系统启动时自动运行。
# create an unprivileged system user
sudo useradd -r nvgpu
将nvgpu-agent.service复制到:
sudo vi /etc/systemd/system/nvgpu-agent.service
将代理设置为主机的配置文件:
sudo vi /etc/nvgpu.conf
AGENTS=[# direct access without using HTTP'self','http://node01:1080','http://node02:1080','http://node03:1080','http://node04:1080',]
设置并启动服务:
# enable for automatic startup at boot sudo systemctl enable nvgpu-agent.service # start sudo systemctl start nvgpu-agent.service # check the status sudo systemctl status nvgpu-agent.service
# check the service
open http://localhost:1080
待办事项
- 按优先级排序GPU(降低功耗,减少可用内存)