机器学习效率提升10倍!IBM使用GPU实现
与EPFL科学家一起,IBM研究团队已经制定了一个快速训练大数据集的方案。它可以使用单个图形处理单元(GPU)在不到一分钟的时间内就处理30G字节的训练数据集,比现有的有限内存训练方法快10倍。在加利福尼亚长滩举行的2017年NIPS会议上,这一结果有效地利用了GPU的全部潜力。
在TB级数据集上训练机器学习模型是一个常见的难题。如果幸运的话,你可能有一台内存足够的服务器来适应所有的数据,但是这个训练仍然需要很长时间,很可能会花费几小时、几天甚至几周的时间。
诸如GPU之类的专用硬件设备已经在许多领域都获得了支持,以加速计算密集型工作负载,但很难将其扩展到数据密集型工作负载。
为了利用GPU的巨大计算能力,我们需要将数据存储在GPU内存中,以便访问和处理它们。但是,GPU具有有限的内存容量(目前最高可达16 GB),因此这对于非常大的数据并不实用。
一个简单的解决方案是分批处理GPU上的数据。也就是说,我们将数据分割成16 GB的块,然后依次将这些块加载到GPU内存中。
不幸的是,将数据移入和移出GPU是昂贵的,并且将每批从CPU转移到GPU所花费的时间会成为一个很大的开销。事实上,这种开销太大了,以至于它可能完全超过使用GPU的好处。
该团队着手创建一种技术,在任何给定时间确定哪些数据中的哪一小部分对于训练算法是最重要的?大部分都会对于数据集感兴趣,每个数据点对训练算法的重要性是高度不均匀的,并且在训练过程中也会发生变化。通过以正确的顺序处理数据点,我们可以更快地学习我们的模型。
例如,想象一下算法正在被训练来区分猫和狗的照片。一旦算法可以区分出猫的耳朵通常比狗的小,它就会保留这些信息,并跳过检查这个特征,最终变得越来越快。
这就是为什么数据集的可变性如此重要,因为每个数据集都必须显示额外的功能,这些功能尚未反映在我们的模型中以供学习。如果一个孩子只在天空蓝的时候才向外看,他或她永远不会知道它在夜间天空会变黑或者云层会产生灰色阴影。
这是通过对单个训练样本能够为学习算法的进展贡献多少信息推导出的新的理论见解来实现的。这一措施在很大程度上依赖于双重性间隙证书的概念,并随时适应训练算法的当前状态。换句话说,每个数据点的重要性也会随着算法的进展而改变。
将这一理论付诸实践,开发了一种新的可重用组件,用于在异构计算平台上训练机器学习模型。把它称为DuHL,为基于二元性差距的异构学习。除了涉及GPU的应用之外,该方案还可以应用于其他有限的存储器加速器(例如使用FPGA而不是GPU的系统)并且具有许多应用,包括来自社交媒体和在线营销的大数据集,其可以用于预测要显示哪些广告给用户。其他应用程序包括查找电信数据模式和欺诈检测。
在下图中,展示了DuHL在扩展的30GB版ImageNet数据库上应用训练大规模支持向量机的行动。对于这些实验,使用了具有8 GB内存的NVIDIA Quadro M4000 GPU。可以看到,使用顺序配料的方案实际上比单独的CPU性能更差,而使用DuHL的新方法实现了10倍于CPU的提速。
这项工作的下一个目标是提供DuHL作为云服务。在云环境中,像GPU这样的资源通常按小时收费。因此,如果能够在一个小时而不是10个小时的时间内训练一个机器学习模型,这种直接转化会带来非常大的成本节约。我们期望这对于需要训练大规模机器学习模型的研究人员、开发人员和数据科学家来说具有重要价值。
这个研究是IBM Research开发分布式深度学习(DDL)软件和算法的一部分,该软件和算法可以自动化并优化连接到数十台服务器的数百个GPU加速器的大型复杂计算任务的并行化。