并行 *在 Azure 机器学习工作室中应用
Parallel *apply in Azure Machine Learning Studio
我刚刚开始熟悉 R 中的并行性。
因为我计划使用 Microsoft Azure Machine Learning Studio for my project, I have started investigating what Microsoft R Open offers for parallelism, and thus, I found this,其中它说并行是在利用所有可用内核的好处的引擎盖下完成的,而无需更改 R 代码。该文章还展示了一些性能基准,但是,其中大多数都展示了执行数学运算时的性能优势。
到目前为止一切都很好。此外,我也很想知道它是否也在底层并行化了 *apply
函数。我还找到了这两篇描述如何并行化 *apply
函数的文章:
- Quick guide to parallel R with snow: describes facilitating parallelism using
snow
包,par*apply
函数系列,以及 clusterExport
.
- A gentle introduction to parallel computing in R:使用
parallel
包,par*apply
函数系列,并将值绑定到环境。
所以我的问题是什么时候我将在 Microsoft Azure 机器学习工作室中使用 *apply
函数,默认情况下会在后台并行化,还是我需要使用像 [=15= 这样的包], snow
等等?
就我个人而言,我认为我们可以以不同的方式营销 MRO,而不会对 parallelism/multithreading 做这么大的事情。嗯嗯
R 带有一个 Rblas.dll/.so,它实现了用于线性代数计算的例程。这些例程用于不同的地方,但一个常见的用例是拟合回归模型。通过 MRO,我们将标准 Rblas 替换为使用 Intel Math Kernel Library 的 Rblas。当您调用像 lm
或 glm
这样的函数时,MRO 将使用多线程和优化的 CPU 指令来适应模型,这可以让您在标准实现上获得显着的加速。
MRO 并不是获得这种加速的唯一方法;您还可以 compile/download 其他类似优化的 BLAS 实现。我们只是让它成为一个简单的一步下载。
请注意,MKL 仅影响涉及线性代数的代码。它不是通用加速工具;任何不进行矩阵计算的 R 代码都不会看到性能改进。特别是,它不会加速任何涉及 显式 并行性的代码,例如使用并行包、SNOW 或其他集群计算工具的代码。
另一方面,它也不会降解它们。您仍然可以使用 parallel、SNOW 等包来创建计算集群并将您的代码分布到多个进程中。 MRO 在这方面的工作方式与常规 CRAN R 一样。 (不过,如果您要在一台机器上创建节点集群,您可能想要做的一件事是减少 MKL 线程的数量。否则,您可能会冒节点之间争用 CPU 个核心的风险,这将降低性能。)
披露:我在微软工作。
我刚刚开始熟悉 R 中的并行性。
因为我计划使用 Microsoft Azure Machine Learning Studio for my project, I have started investigating what Microsoft R Open offers for parallelism, and thus, I found this,其中它说并行是在利用所有可用内核的好处的引擎盖下完成的,而无需更改 R 代码。该文章还展示了一些性能基准,但是,其中大多数都展示了执行数学运算时的性能优势。
到目前为止一切都很好。此外,我也很想知道它是否也在底层并行化了 *apply
函数。我还找到了这两篇描述如何并行化 *apply
函数的文章:
- Quick guide to parallel R with snow: describes facilitating parallelism using
snow
包,par*apply
函数系列,以及clusterExport
. - A gentle introduction to parallel computing in R:使用
parallel
包,par*apply
函数系列,并将值绑定到环境。
所以我的问题是什么时候我将在 Microsoft Azure 机器学习工作室中使用 *apply
函数,默认情况下会在后台并行化,还是我需要使用像 [=15= 这样的包], snow
等等?
就我个人而言,我认为我们可以以不同的方式营销 MRO,而不会对 parallelism/multithreading 做这么大的事情。嗯嗯
R 带有一个 Rblas.dll/.so,它实现了用于线性代数计算的例程。这些例程用于不同的地方,但一个常见的用例是拟合回归模型。通过 MRO,我们将标准 Rblas 替换为使用 Intel Math Kernel Library 的 Rblas。当您调用像 lm
或 glm
这样的函数时,MRO 将使用多线程和优化的 CPU 指令来适应模型,这可以让您在标准实现上获得显着的加速。
MRO 并不是获得这种加速的唯一方法;您还可以 compile/download 其他类似优化的 BLAS 实现。我们只是让它成为一个简单的一步下载。
请注意,MKL 仅影响涉及线性代数的代码。它不是通用加速工具;任何不进行矩阵计算的 R 代码都不会看到性能改进。特别是,它不会加速任何涉及 显式 并行性的代码,例如使用并行包、SNOW 或其他集群计算工具的代码。
另一方面,它也不会降解它们。您仍然可以使用 parallel、SNOW 等包来创建计算集群并将您的代码分布到多个进程中。 MRO 在这方面的工作方式与常规 CRAN R 一样。 (不过,如果您要在一台机器上创建节点集群,您可能想要做的一件事是减少 MKL 线程的数量。否则,您可能会冒节点之间争用 CPU 个核心的风险,这将降低性能。)
披露:我在微软工作。