【问题标题】:How can I tell if H2O 3.11.0.266 is running with GPUs?如何判断 H2O 3.11.0.266 是否与 GPU 一起运行?
【发布时间】:2017-05-30 18:19:26
【问题描述】:

我已经在带有 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 列中启动时钟。

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)

【问题讨论】:

    标签: python gpu nvidia h2o xgboost


    【解决方案1】:

    您将需要支持 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 的信息(在未来的版本中)。

    【讨论】:

      【解决方案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
      

      【讨论】:

      • 另外需要指出的是,h2o.init() 输出今天不会提及 GPU,即使它们将被使用。但是上面的nvidia-smi工具是可靠的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-25
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      相关资源
      最近更新 更多