Apache Spark 在小数据集上进行迭代模型拟合的使用案例

我刚开始接触 Apache Spark,并一直在研究其在项目中的应用。该项目中的一个瓶颈是我必须对一个小数据集进行数千次的迭代拟合,拟合多个不同的模型(或者是同一个模型但调整了超参数)。每个数据集大约包含100到1000行,以及10,000到100,000列,因此单次拟合在一台机器(或工作节点)上很容易处理。好的一点是,这些任务可以彼此独立执行,因此它们是非常适合并行处理的。

由于将数据集分割成RDD并使用大量节点可能带来的收益有限,且任何时候都可能有多节点在工作,因此,与其让它们为每次拟合协同工作,不如让多个工作节点独立操作似乎更有效。一个选择是,在每个工作节点上将相同的数据集缓存到内存中,让它们独立操作以完成所有必须进行的拟合。像HTCondor+云调度器star-cluster这样的工具似乎能够很好地处理这种任务,但Apache Spark在其他领域有很多优势,所以我对其在整个项目中的应用很感兴趣。

我似乎找不到一个很好的答案来确定Apache Spark是否有功能来处理这样的问题。这个问题似乎涉及了类似的主题,但以我目前对Spark有限的了解,我无法从提到的的文档中判断这是否能帮助我解决这个问题。最初知道这是否是合适的工具,将有助于我避免浪费时间学习一个后来发现无法满足我需求的工具。


回答:

这种情况得到了很好的支持,但这肯定不是我们通常讨论的标准使用案例。如果你的数据真的很小(听起来确实如此),你可以考虑使用broadcast函数将其提供给所有工作节点,然后构建一个包含你想要尝试和使用的不同参数的RDD。然后你可以map处理不同的参数,并在集群的多个节点上训练你的模型。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注