研究人员称分布式深度学习取得突破
网上购物者通常会用几个词来搜索他们想要的产品,但在一个有数百万产品和购物者的世界里,将这些非特定的词与正确的产品匹配是信息检索的最大挑战之一。
使用各个击破的方法,利用压缩传感的力量,从莱斯大学计算机科学家和亚马逊已经证明了他们能削减所花费的时间和计算资源培训电脑产品搜索和类似的“极端分类问题”演讲翻译和回答一般性的问题。
这项研究将于本周在温哥华举行的2019年神经信息处理系统会议(NeurIPS 2019)上发表。这些结果包括在2018年进行的测试,当时首席研究员安舒玛利·斯里瓦斯塔瓦和首席作者塔伦·梅迪尼都是赖斯,他们访问了位于加州帕洛阿尔托的亚马逊搜索。
在亚马逊搜索数据集的测试中,包含了大约7000万个查询和超过4900万个产品,Shrivastava、Medini和同事展示了他们使用“通过哈希合并平均分类器”(MACH)的方法,这种方法只需要一些最先进的商业系统的一小部分训练资源。
Rice计算机科学助理教授Shrivastava说:“我们的训练时间大约快了7-10倍,我们的内存占用比之前报道的大型分布式深度学习系统的最佳基线性能小了2-4倍。”
米迪尼是莱斯大学的博士生,他说,产品搜索具有挑战性,部分原因是产品的绝对数量。“例如,大约有100万个英语单词,但网上很容易就有超过1亿个产品。”
还有数百万人以自己的方式购买这些产品。某种类型的问题。其他人使用关键词。很多人开始时并不确定他们要找的是什么。但由于每天都有数百万的在线搜索被执行,像亚马逊(Amazon)、谷歌和微软(Microsoft)这样的科技公司拥有大量关于成功和失败搜索的数据。将这些数据用于一种叫做深度学习的机器学习是为用户提供更好结果的最有效方法之一。
深度学习系统,或称神经网络模型,是一个庞大的数学方程集合,它接受一组称为输入向量的数字,并将它们转换成另一组称为输出向量的数字。网络由多个参数的矩阵组成,而最先进的分布式深度学习系统包含数十亿个参数,这些参数被分成多个层。在训练过程中,数据被输入到第一层,向量被转换,输出被输入到下一层,等等。
“极端分类问题”是一种有许多可能结果的问题,因此有许多参数。极端分类的深度学习模型是如此之大,以至于它们通常必须在一台超级计算机上进行训练,这台超级计算机是一组连接的图形处理单元(GPU),其中的参数是分布并并行运行的,通常需要几天的时间。
“一个神经网络接受搜索输入,并从1亿个输出(或产品)中进行预测,通常每个产品会有大约2000个参数,”Medini说。“所以你把它们相乘,神经网络的最后一层现在是2000亿个参数。我没有做任何复杂的事情。我说的是一个非常非常简单的神经网络模型。”
“需要500g的内存来存储这2000亿个参数,”Medini说。“但如果你看一下当前的训练算法,有一个著名的算法叫Adam,它为模型中的每个参数多取两个参数,因为它需要从这些参数的统计数据来监控训练过程。现在是2千亿乘以3,我需要1。5tb的工作内存来存储模型。我甚至还没有得到训练数据。目前最好的gpu只有32g的内存,因此由于gpu之间的大量通信,训练这样的模型是不可能的。”
MACH采用了一种非常不同的方法。Shrivastava用一个思维实验来描述它,这个实验将1亿件产品随机分为三类,它们都是桶的形式。“比如说,我把iphone、充电器和t恤混在一个桶里,”他说。“这是从1亿到3亿的大幅削减。”
在思想实验中,1亿件产品被随机分为3个桶,分别在两个不同的世界,这意味着产品可以在每个世界的不同的桶。分类器被训练为将搜索分配到存储桶而不是存储桶内的产品,这意味着分类器只需要将搜索映射到三类产品之一。
他说:“现在我把搜索结果传给世界一的分类器,结果是桶三,我把搜索结果传给世界二的分类器,结果是桶一。”“这个人在想什么?”最有可能的类是这两个bucket之间的公共类。如果你看一下可能的交集,世界一有三种可能,世界二有三种可能,或者说是九种可能,”他说。“所以我把搜索空间缩小到1 / 9,而我只支付了创建6个类的费用。”
添加第三个世界和另外三个桶,可以将可能的交叉点数量增加三倍。“现在这个人的想法有27种可能性,”他说。“所以我减少了1 / 27的搜索空间,但我只支付了9节课的费用。我付出的代价是线性的,而且我得到了指数级的改善。”
在他们对亚马逊培训数据库的实验中,Shrivastava、Medini和同事们将4900万件产品随机分成1万个类别,重复这个过程32次。这使得模型中的参数数量从大约1000亿减少到了64亿。Medini还说,与其他具有可比参数的模型(包括谷歌的稀疏门控专家混合(MoE)模型)的一些最佳训练时间相比,训练模型所花费的时间和内存更少。
他说MACH最重要的特点是它不需要并行处理器之间的通信。在思想实验中,这是由独立的世界所代表的。
“他们甚至不需要互相交谈,”Medini说。“原则上,你可以在一个GPU上训练32个GPU中的每一个,这是用非独立方法永远做不到的。”
Shrivastava说:“一般来说,训练需要跨参数的通信,这意味着所有并行运行的处理器必须共享信息。展望未来,交流是分布式深度学习中的一个大问题。例如,谷歌表示希望训练一个1万亿参数的网络。目前,MACH还不能应用于类数较少的用例,但对于极端的分类,它实现了零通信的圣杯。”