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

作者

  • 波乌米尔·扎梅尼克,Rossum, Ltd.
  • 许可证:麻省理工学院

待办事项

  • 按优先级排序GPU(降低功耗,减少可用内存)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java Hibernate@ManyToMany mapping只在一个方向上在数据库中添加记录   java将文件上载到tomcat服务器外部的文件夹   java将摄像头捕获的图像上传到服务器   java如何创建Rest API并为进程添加时间延迟?   springmodulesvalidation0中缺少java注释包。8a源文件   如何在java中打印SOAP头   Spring security中的java自定义消息,包括UserDetailsService实现和异常   java如何使用Htmlunit中的表单数据登录站点   web如何在WildFly上自动运行java文件   java如何从已经使用另一个方法传递的参数的方法中获取返回值?   java我在JFrame上有一个索引越界。setContentPane   java中的循环序列/系列打印   java maven 3 webapp没有要运行的测试吗?   java CORS不允许POST请求   java再次在派生类中的Jackson中添加字段,该字段在基类中被忽略   爪哇坑测试显示仆从由于超时而异常退出   java寻找第10001个素数   java jboss是否更改web应用程序上下文根?