H2O应该这么慢吗?

时间:2016-01-31 20:26:34

标签: r amazon-ec2 deep-learning h2o

我正在迭代地运行交叉验证深度学习训练(nfolds = 4),用于在H2O到R上进行特征选择。目前,我每层只有2层(即不深)和8到50个神经元。只有323个输入和12个输出类。

在我的英特尔4770K(32 GB内存)上训练一个型号平均需要大约40秒。在训练期间,H2o能够最大化所有cpu核心。

现在,为了加快培训速度,我在亚马逊云中设置了一个EC2实例。我尝试了最大的计算单元(c4.8xlarge),但速度很快。使用相同的设置训练一个模型花了大约24秒。因此,我怀疑我忽略了一些东西。 我开始这样的培训:

localH2O <- h2o.init(ip = 'localhost', port = 54321, max_mem_size = '24G', nthreads=-1)

为了比较处理器,4770K在cpu基准测试中得到10163,而Intel Xeon E5-2666 v3得到24804(vCPU为36)。

至少可以说这种加速是非常令人失望的,并且不值得在亚马逊云中安装和设置所有内容的所有额外工作,同时支付超过2美元/小时。

除了设置nthreads = -1之外,是否还需要做其他事情以使所有内核工作?

我是否需要开始制作多个群集以缩短培训时间,或者我是否应该开始使用支持GPU的新深度学习库?

1 个答案:

答案 0 :(得分:1)

要直接回答你的问题,不,H2O不应该慢。 :-)看起来你有一个不错的PC和亚马逊实例(即使有更多的vCPU)没有使用最好的处理器(就像你在游戏PC中找到的那样)。 PC处理器的基本/最大turbo频率为3.5GHz / 3.9GHz,c4.8xlarge仅为2.9GHz / 3.5GHz

我不确定这是否有必要,但由于c4.8xlarge实例有60GB的RAM,你可以将max_mem_size'24G'增加到至少'32G',因为那是你的电脑有什么,甚至更大的东西。 (虽然不确定会做什么,因为记忆通常不是限制因素,但可能值得一试)。

另外,如果您担心EC2价格,可能会查看现货实例。如果您需要额外的实际加速,则应考虑使用multiple nodes in your EC2 H2O cluster,而不是单个节点。