H2O的核心是分布式内存计算平台。在分布式计算平台的基础上,实现了机器学习算法。在H2O,我们设计每一个操作,无论是数据转换,机器学习模型的训练,甚至分析,以利用分布式计算模型。为了快速处理大数据,这是必要的。

但是,单个操作通常不能最大限度地利用群集的计算资源。数据需要跨群集分布,许多操作需要任务的顺序执行,即使以分布式方式实现,任务也需要相互遵循,并且需要数据交换。这些和许多其他较小的因素,如果一起总结,可能会带来巨大的开销。

感兴趣的一个领域是机器学习模型培训的过程。机器学习算法构建模型需要更长的时间。根据算法本身,可以发现效率低下的情况。因此,将并发引入模型训练可能会提高群集资源的利用率,主要是 CPU 和/或 GPU。

您可能还需要阅读:
H2O 机器学习 – 数据科学家动手指南

构建大量模型的一个领域是网格搜索。网格搜索”遍”过超参数的空间,并构建相应的模型。步行策略可能有所不同,但它们都有相同的问题 – 有许多模型要构建。通常,生成过程受时间限制。构建的模型越多越好。

到目前为止,H2O 和其他机器学习平台一样,一次训练一个模型。自H2O版本以来 3.28.0.1 ,我们为用户提供了一种并行使用网格搜索构建模型的方法。这实际上意味着可能有在 n > 1 群集上训练的模型。当一个模型在等待或执行不太可优化的计算时,其他模型可以同时利用群集资源。这导致更多的模型在更短的时间内构建

如何使用并行网格搜索

默认情况下,网格搜索的并行模型生成将关闭。这种情况可能在不久的将来改变。我们引入了一 parallelism 个名为网格搜索的新参数。默认情况下,此类参数在”流”、”Python”和”R”中可用 parallelism = 1 。这意味着在执行网格搜索时按顺序生成模型。为了使用网格搜索并行构建模型,用户有两个选项:

  1. 设置 parallelism = n 位置 n > 1
  2. 设置parallelism = 0

).但是,将其设置为 0 意味着 H2O 可以自由地使用内部启发式方法来确定一次要定型的最佳模型数量。我们称之为自适应模式

目前,自适应模式没有严格的契约,内部启发式可能发生变化。自适应模式假定整个群集由具有相同可用资源的机器组成,只需训练比每个节点可用的 CPU 数量多两倍的模型。给定一个 n 节点群集,其中每个节点都有 c CPU 数,则模型数将为 2 * c 。节点数或可用 CPU 总数不起任何作用。

Python

并行网格搜索可以通过简单地添加 parallelism = n H2OGridSearch 构造函数参数来启用,其中 n = 0 自适应模式或 n > 1 精确控制并行性。指定 n = 1 表示限定模式。

Java