并行神经网络训练,更好地使用Hadoop或gpu?

STE*_*STE 22 hadoop gpu neural-network

我需要训练一个有2-4个隐藏层的神经网络,不确定实际网络的结构.我正在考虑使用Hadoop map reduce(12个集群)或gpu来训练它以获得更快的结果.你觉得哪个更好?还有任何可用的库已经实现了吗?谢谢

zer*_*ord 32

我一直幸运地在一个实验室工作,该实验室涉及这两种训练网络的方法,虽然两者在计算量很大的设置中都很有用,但计算瓶颈的位置通常决定了使用哪种方法.

使用分布式系统(例如HADOOP)培训网络

当您的网络足够以至于培训中涉及的矩阵乘法在传统PC上变得难以处理时,这非常有用.当你有严格的时间限制(例如在线培训)时,这个问题尤为普遍,否则HADOOP实施的麻烦是不值得的(只需在一夜之间运行网络).如果您正在考虑HADOOP,因为您想要摆弄网络参数而不必等待一天再摆弄一些(在我的实验室中经常出现这种情况),那么只需在不同的机器上运行具有不同参数的多个网络实例.这样,您可以在不处理实际分布式计算的情况下使用您的集群.

例:

您正在训练网络以查找图像中的人数.您决定让程序从Google中提取随机图像,而不是预定义的一组训练示例(图像对人数).在网络处理图像时,您必须查看图像并提供有关图像中实际人数的反馈.由于这是图像处理,因此您的网络规模可能达到数百万单位.而且,由于您实时提供反馈,因此网络计算的速度很重要.因此,您应该投资分布式实现.

在GPU上训练网络

如果主要的计算瓶颈不是网络规模,而是训练集的大小(尽管网络仍然非常大),这是正确的选择.由于GPU是理想的,涉及在大量的数据集的应用相同的矢量/矩阵运算的情况下,他们主要使用的时候可以使用批量培养具有非常大的批量大小.

例:

您正在训练网络来回答用自然语言提出的问题.你有一个庞大的问答配对数据库,不介意网络每10000个问题只更新一次权重.由于具有如此大的批量大小并且可能是相当大的网络,基于GPU的实现将是个好主意.