Spark MLlib并行性背后的一般原则

时间:2016-11-28 20:35:22

标签: apache-spark parallel-processing apache-spark-mllib

我是Spark(以及集群计算框架)的新手,我想知道用于机器学习的并行算法(MLlib)所遵循的一般原则。它们本质上更快,因为Spark在多个节点上分发训练数据吗?如果是,我想所有节点共享同一组参数对吗?并且他们必须在常规基础上结合(例如:求和)中间计算(例如:渐变),我错了吗?

其次,假设我想用一组模型拟合我的数据(例如:10)。在这个特定的环境中,在10台机器上独立运行我的旧机器学习程序,而不是必须为Spark群集中的训练编写复杂的代码(对我来说至少!),这不是更简单吗?

推论问题:Spark(或其他集群计算框架)是否仅适用于大数据应用程序,对于这些应用程序,我们无法承受多个模型的培训,而且单个计算机上的培训时间太长?

1 个答案:

答案 0 :(得分:1)

  • 你纠正了一般原则。典型的MLlib算法是一个具有本地相位和数据交换的迭代过程。
  • MLlib算法不一定更快。他们试图解决两个问题:

    • 磁盘延迟。
    • 单台计算机上的内存限制。

    如果您可以在单个节点上处理数据,这比使用ML / MLlib快几个数量级。

  • 最后一个问题很难回答,但是: