2

编辑:尝试重新整理自己:过慢或出在机器学习/数据挖掘内存的问题

工具,比如R,Weka的功能丰富,但很慢,在他们可以处理的数据的大小限制。像Mahout,Vowpal Wabbit(VW)和它的扩展AllReduce这样的工具是针对1K节点集群的,它们的功能有限。例如,大众只能通过减少一些损失函数来“学习”。

我没有任何流行的软件看到的是使用并行编程(好醇”并行线程,MPI等)为加快。我认为这对群集可能是一种矫枉过正的问题很有用,但是等待程序完成而其他处理器核心处于空闲状态时这种情况太糟糕了。 [作为一个例子,可以在AWS得到26核机器和88核簇,和良好的并行算法可以给的,比方说,20X速度向上和60X不诉诸像系统重重量的hadoop]

我的意思是从社区学习:(主观)你的真实生活问题/算法不太大,不能称为大数据,但仍然足够大,你觉得更快会更好。 (客观地)沿着“算法X对具有特征C和大小D的数据的观点,你的经验花费了T时间,并且如果有算法X的并行版本可用,我有我可能抛出的M个处理器内核”。

而且我问了,原因当然是要学会在这一领域并行编程的需要,也许有一个社区驱动的努力来解决这个问题。下面详细介绍了我几次遇到的问题。


什么是一些在机器学习,数据挖掘的问题和您有因为速度太慢或需要过大的记忆困难相关的领域?

作为一种业余爱好研究项目,我们建立了一个彻头彻尾的核心编程模型来处理大于系统内存更大的数据和它本身支持并行/分布式执行。它在一些问题上表现出色(见下文),我们希望将这项技术(希望由社区驱动)扩展到现实生活中的问题。

一些基准(对Weka中,亨利马乌和R):

一个)Apriori算法频繁项目集挖掘[CPU结合但平均存储器]用1.7M交易超过5.2M

Webdocs数据集独特的物品(1.4GB)。该算法会查找在交易中频繁出现的一组项目。对于10%的支持,Weka3无法在3天内完成。我们的版本在4小时24分(尽管公平起见,我们使用Tries而不是Weka中的哈希表)。更重要的是,一个8芯机上花了39分钟,在8台机 - >6分钟30秒(= 40倍)

B)SlopeOne推荐引擎 [高内存使用]

MovieLens数据集10K电影的10K评级从70K。 SlopeOne推荐基于协作过滤的新电影。 Apache Mahout的“Taste”非分布式推荐程序会因内存小于6GB而失败。为了对核心外性能进行基准测试,我们将版本限制在此限制的1/10(600MB),并且在执行时间内完成了11%的开销(由于核心外)。

c)中降维与主成分分析(PCA)[CPU和内存绑定]的32K样品用5400

突变体 “的p53” 蛋白数据集属性各自(1.1GB)。 PCA用于通过以非常小的方差删除变量来减少数据集的维数。虽然我们的版本可以处理比系统虚拟内存大的数据,但是我们对这个数据集进行了基准测试,因为R软件可以处理它。 R完成86分钟的工作。我们的核心版本没有额外的开销;实际上,它在单核上在67分钟内完成,在8核机器上完成14分钟

当今优秀的软件可以通过将数据加载到内存(R,Weka,numpy)或数据中心(Mahout,SPSS,SAS)的tera/petabytes范围内以兆字节为单位进行工作。在千兆字节范围内似乎存在差距 - 大于虚拟内存但小于“大数据”。虽然像numpy的Blaze,R大内存,scalapack等项目正在满足这种需求。

根据您的经验,您能否将这样一个更快速的核心外工具应用于数据挖掘/机器学习社区的例子?

+1

这不难打败Weka或R(当也使用BLAS)。两者都很慢。 – 2013-03-15 08:20:08

回答

1

这实在是一个开放式问题。从我能告诉你要求的东西:

  1. 在大的大数据集上使用机器学习。
  2. 会更快的工具,造福于社会

对于第一个问题,那是在许多生产环境中使用大,大数据的最佳工具之一是Vowpal Wabbit(VW)。去hunch.net去看看。

对于第二个问题,如果你能击败大众,那么这将绝对有利于社区。然而大众是很不错的:)