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窗口。位置和窗口。公开问题   java如何从存储在ArrayList<Node>中的动态生成的文本字段中获取文本?   java如何立即关闭InputStream?   如何重新启动Java程序以激活环境变量   java搜索字符串是否相差一个字符   java CFB模式输出与CTR输出相同;我做错什么了吗?   java如何在javaFX中将实例化对象添加到Stage   java如何在jtextarea上打印来自不同类的文本消息   java以编程方式确定IOException的原因?   限制Java NIO通道(文件或socket)中的可用内容   javajaxb与JDOM:是否可以使用JAXB更新xml文件   批处理文件到java测试   JavaFX:stage的作用是什么。可设置大小(false)是否会导致额外的页边距?   java有没有办法告诉IntelliJ按需堆叠参数?   java Seam会话范围的组件在下一个请求中消失   java Google Web Toolkit对开发复杂的java脚本有用吗?   安卓 studio java ArrayList正在检索最高值   java为什么递归地用随机数填充LinkedList时会出现StackOverflowException?