如何判断H2O 3.11.0.266是否与GPU一起运行?

时间:2017-05-30 18:19:26

标签: python gpu nvidia h2o xgboost

我已经在带有CUDA 8.0和libcudnn.so.5.1.10的Ubuntu 16.04上安装了H2O 3.11.0.266,所以我相信H2O应该能够找到我的GPU。

然而,当我在Python中启动我的h2o.init()时,我没有看到它实际上正在使用我的GPU的证据。我明白了:

  • H2O簇总核:8
  • H2O群集允许核心:8

与我之前版本(GPU前)相同。

此外,http://127.0.0.1:54321/flow/index.html也只显示了8个核心。

我想知道我是否没有正确安装,或者最新的h2o.init()是否没有实现有关GPU可用或信息的信息......

非常感谢提前。

[编辑] 我应该提到3.11.0.266应该是支持GPU的版本。

[编辑] 感谢所有的建议。我现在正在运行H2O 3.13.0.337

我发现这个命令也很有用:

 sudo watch -n 0.1 'ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `/usr/bin/lsof -n -w -t /dev/nvidia*`'

但是,我有点困惑。

当我运行XGBoost时,我清楚地看到GPU非常活跃30%到40%的利用率(以及我的所有8个CPU内核,我想这必须是管理GPU。)XGB完成了我的分类问题20秒。

GLM运行速度非常快,因此很难判断它是否使用我的GPU(在不到一秒的时间内完成。它确实在ps程序显示的STARTED列中启动时钟。< / p>

USER      PGRP   PID %CPU %MEM  STARTED     TIME COMMAND
user      3380  3380  116 12.0 10:52:56 04:36:36 /usr/local/anaconda2/bin/java -ea -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -jar /usr/local/anaconda2/lib/python2.7/site-packages/h

分布式随机森林也启动时钟,但似乎没有使用任何GPU处理,但它确实使用了所有CPU内核。

GBM类似。训练相同问题需要1.5分钟,而XGB需要20秒。由于算法类似,我希望它们花费相似的时间并以类似的方式使用GPU。我觉得这很令人惊讶。

我确信XGBoost正在使用GPU,但我不确定是否有任何其他算法。

[加入]

通过对H2O 3.13.0.341的比较。注意到温度差异(!)和GPU百分比

这是我运行 xgboost 时gpustat -cup显示的内容:

[0] GeForce GTX 1080 | 64'C,  90 % |  1189 /  8105 MB | clem:java/31183(191M)

以下是我运行分布式随机森林时显示的内容(GBM和DeepLearning出现类似结果)

[0] GeForce GTX 1080 | 51'C,   5 % |  1187 /  8105 MB | clem:java/31183(189M)

2 个答案:

答案 0 :(得分:2)

您需要支持GPU的H2O版本,可在H2O download page上找到。从您的问题中不清楚您是否使用常规的H2O或支持GPU的H2O,但是如果您使用支持GPU的H2O并且具有适当的依赖关系,则应该看到您的GPU。当前依赖关系列表是:

  • Ubuntu 16.04
  • CUDA 8.0
  • cuDNN 5.1

我已打开JIRA ticket以在h2o.init()打印输出中添加一些元数据,以便您可以在那里查看有关您的GPU的信息(在将来的版本中)。

答案 1 :(得分:2)

在终端窗口中,运行nvidia-smi工具。看看利用率。如果它为0%,则表示您未使用GPU。

在下面的示例中,您可以看到Volatile GPU Utilization为0%,因此未使用GPU。

$ nvidia-smi
Tue May 30 13:50:11 2017   
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 370.28                 Driver Version: 370.28                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 1080    Off  | 0000:02:00.0     Off |                  N/A |
| 27%   30C    P8    10W / 180W |      1MiB /  8113MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  GeForce GTX 1080    Off  | 0000:03:00.0      On |                  N/A |
| 27%   31C    P8     9W / 180W |     38MiB /  8112MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    1      1599    G   /usr/lib/xorg/Xorg                              36MiB |
+-----------------------------------------------------------------------------+

我使用以下方便的小脚本来监控自己的GPU利用率。

$ cat bin/gputop 
#!/bin/bash

watch -d -n 0.5 nvidia-smi