我应该使用什么多处理方法进行机器学习培训+准确度测试?

时间:2017-10-25 11:37:43

标签: python-3.x parallel-processing

我有一个接受数组并返回数字的函数。

我想在10个不同的输入数组上运行此函数,然后返回所有结果的总和 告诉Python在具有4个内核的计算机上并行运行这10个计算的最佳方法是什么?

在文档中有many different ways for concurrent executionmany different packages for parallel processing。有这么多不同的方法,我应该将哪些方法用于上述任务?

修改
该功能是机器学习功能:
它将输入数组分为两部分 - " train"和" test" DataSET的一部分。它训练某个分类器在train"部分,并返回这样一个训练有素的分类器的预测准确性" test"一部分。

1 个答案:

答案 0 :(得分:0)

最好使用最好的"Fair Divides a Cake with Burnt Parts ... "

根据您的领域专业知识,性能推动调度的艺术同样受到限制。

鉴于上述一些事实,
问题解决方案的方法也很大程度上依赖于规模。

鉴于已添加机器学习,
问题不仅仅是处理10个不同数组并对部分结果求和的常见且简单的[SEQ]-[PAR]-[SEQ]管道。

ML-DataSET越大,"蛋糕的烧焦部分就越大"

进入 numpy / python 领域及其机器学习工具,您的驱动力将不会是& #34; parallelise",,而不是尝试这样做的成本。机器学习管道解决实际问题可能很容易将大单位花费到几十小时来接受培训,使用全部,是所有localhost可用的CPU核心,仅适用于DataSET的一个 train 部分。专业内置于 numpy / numba / scikit 工具的效率并不容易进一步增加,所以不要指望任何低悬的水果可以在这些地方附近。更多technical details on this, you might like to read this post

记忆最重要。

对于小型DataSET,[PSPACE] - 内存占用方面的成本将更加容易,但这也意味着,将会更难支付所有[PTIME] - 成本按照每个并行流程支付,是非生产性间接费用,只需要为进入展会付费: { instantiation + setup + control + finalisation + dismantling },在这种情况下(小型DataSET)很难通过任何增加的处理性能来证明,可能来自尝试在太小的问题上进行并行处理。

可用的处理资源几乎相同

如果订购流程同时在10个流程实例上运行,则管理因素是所有资源类的可用容量,这些流程与此流程顺利执行相关 - 免费(且最好)不间断的CPU核心(HT-off),具有对大量(自由/私有>>工作集)RAM内存的无阻塞访问(无内存分页,无虚拟内存交换)加上最小(或精细 - 调整)disk-IO。

如果有这样的资源'容量不允许机器学习过程的所有命名的10个实例在parallel, another, "just"-[CONCURRENT]中顺利执行,调度发生并且one may straight forget any and all the Amdahl's Law theoretical promises ( even from the original, "classical", overhead-naive formulation )

虽然很明显对任何人来说,如果一辆满载游客的公共汽车抵达五星级万豪酒店,只有一对接待楼的电梯,它主要是所有这些新客人都不可能同时到达他们的房间 - 同样的问题不是那么清晰在几乎完全相同的设置中 - [PARALLEL] < / strong> - 进程调度和许多用户以相同的方式启动 - 询问&#34; 为什么我的并行代码比串行运行慢?&#34;或&#34; 为什么我的并行代码加速不能缩放?&#34;。

这就是说,你必须最大化你的硬件资源池和非常谨慎地平衡并行处理(设置+终止) - 间接成本,因为没有至少有机会支付低于你可能获得的费用(证明间接费用是合理的),与任何成本并行,只是一个毁灭性的政策,无论谁建议你尝试进入这个先验的迷失游戏(成本/收益 - 明智的方向。