【问题标题】:Parallel *apply in Azure Machine Learning Studio并行 *适用于 Azure 机器学习工作室
【发布时间】:2016-10-09 22:51:38
【问题描述】:

我刚刚开始熟悉 R 中的并行性。

当我计划在我的项目中使用 Microsoft Azure Machine Learning Studio 时,我已经开始研究 Microsoft R Open 提供的并行性,因此,我找到了 this,其中说并行性是在利用所有可用内核的好处,而无需更改 R 代码。本文还展示了一些性能基准,但是,它们中的大多数都展示了进行数学运算的性能优势。

到目前为止还不错。此外,我也有兴趣知道它是否还可以并行化 *apply 功能。我还发现这 2 篇文章描述了如何并行化 *apply 函数:

  1. Quick guide to parallel R with snow:描述了使用 snow 包、par*apply 函数族和 clusterExport 促进并行性。
  2. A gentle introduction to parallel computing in R:使用 parallel 包,par*apply 函数族,并将值绑定到环境。

所以我的问题是我什么时候将在 Microsoft Azure 机器学习工作室中使用 *apply 函数,默认情况下会在后台并行化,还是我需要使用 parallelsnow 等包.?

【问题讨论】:

    标签: r parallel-processing azure-machine-learning-studio microsoft-r


    【解决方案1】:

    就我个人而言,我认为我们可以在营销 MRO 方面有所不同,而无需在并行性/多线程方面做这么大的事情。嗯嗯。

    R 带有一个 Rblas.dll/.so,它实现了用于线性代数计算的例程。这些例程用于不同的地方,但一个常见的用例是拟合回归模型。对于 MRO,我们将标准 Rblas 替换为使用 Intel Math Kernel Library 的 Rblas。当您调用 lmglm 之类的函数时,MRO 将使用多线程和优化的 CPU 指令来适应模型,这可以让您比标准实现显着加速。

    MRO 并不是获得这种加速的唯一方法;您还可以编译/下载其他经过类似优化的 BLAS 实现。我们只是让它成为一个简单的一步下载。

    请注意,MKL 仅影响涉及线性代数的代码。它不是通用的加速工具;任何不进行矩阵计算的 R 代码都不会看到性能提升。特别是,它不会加速任何涉及显式并行性的代码,例如使用并行包、SNOW 或其他集群计算工具的代码。

    另一方面,它也不会降级它们。您仍然可以使用并行、SNOW 等包来创建计算集群并跨多个进程分发代码。在这方面,MRO 的工作方式与普通的 CRAN R 一样。 (不过,如果您在一台机器上创建节点集群,您可能想要做的一件事是减少 MKL 线程的数量。否则,您可能会冒着节点之间争用 CPU 内核的风险,这会降低性能。)

    披露:我为微软工作。

    【讨论】:

      猜你喜欢
      • 2017-06-25
      • 1970-01-01
      • 2017-06-24
      • 1970-01-01
      • 2019-02-02
      • 2022-08-24
      • 2018-06-11
      • 2020-08-19
      • 2019-01-11
      相关资源
      最近更新 更多