当机器学习的训练速度线性增长,AI和大数据领域的创投是否会出现新繁荣?
大数据时代,如何高效地处理海量数据是个难题。过去很长一段时间,受限于计算机的运算效率,大数据机器学习都处于一个发展十分缓慢的阶段。当这个难题被攻克,AI 领域以及大数据领域,也会随之出现不少新创投机会。
最近,微软亚洲研究院首席研究员霍强博士团队的研究成果,已经就能部分解决这样的难题。他们的最新研究成果可以做到在保证训练模型的性能的同时,训练速度可以在增加 GPU的条件下接近线性增长。这意味着大数据处理的门槛已经大幅降低,大数据机器学习在未来很可能就不再是大公司的特权。
机器学习一直被戏称为科技公司的 “军备竞赛”,谁拥有更大规模的数据、更快的训练速度、更好的算法,谁就能拥有性能更好的模型。但在过去,计算机运算效率有限,计算资源稀缺,一个公司基于机器学习的方法做出一个算法模型,往往耗时巨大。比如,如果你想通过 10 万小时的语料数据,训练出一个语音识别的模型,往往需要几个月甚至数年。所以,在这个领域里,很难看到小团队小公司取得大成绩。
大公司的普遍做法就是利用更多的 CPU 和 GPU 做并行训练。这就像是盖房子,理论上,只要参与的工人越多,完工的周期就越短,工程的效果也就越好。但是如何提高这些 CPU 和 GPU 协作的效率就是一个难题,就像在盖房的过程中,需要协调各个工种相互配合。目前,业内普遍应用的方法有三种:
ASGD(异步随机梯度下降):这是 Google 从 2012年 起就在采用的方法,通过大量 GPU 做异步计算。这种方式也有弊端,一是当增加 GPU 时需要的通信代价很高,系统设计优化和维护成本大幅增加,二是同样的数据两次训练结果不一定相同。
Model Averaging(模型平均):简单来说,这种方法是对一段时间内每块 GPU 的学习结果进行平均,形成新的模型,以此为新起点在每块 GPU 再分别用新数据学习,对各 GPU 的学习结果再取平均,以此类推。这种方法实现简单,但是它的问题在于当卡的数量增加时训练模型的性能无法保证。目前实践的效果是,当达到 16 块卡时,模型性能下降已很明显。
1-bitSGD:此方法通过量化压缩梯度值来减少通信代价,直接实现 mini-batch 内的多 GPU 数据并行处理。它的主要缺点是, 在保证训练模型性能的情况下,当卡的数量增加时,无法做到线性加速。
霍强博士团队的算法,在 Model Averaging 的基础上,将每一轮模型更新的信息收集起来,在信息整合的过程中,同时利用当前信息和历史模型更新信息,使得每一轮的更新更为平滑,不会出现巨大的波动,使用这样的滤波方法后,最终生成模型的性能也大大提升。通时,这种方法实现简单,很 “平民化”。
目前,通过这个算法,语音识别中神经网络模型的训练提升十分显著。在保证性能的前提下,当使用 16 块 GPU 卡时,训练速度提高了 15 倍,而当使用 64 块卡时,训练速度提高到了 56 倍。接受 36 氪采访时,霍强博士也在向微软申请更多的测试资源,测试更多 GPU 卡下的结果。
与这一技术的实现过程相比,我们同样关注它对 AI、大数据领域所能带来的改变。
最直接的影响或许就是,并行计算未来将 “平民化”,举例来说 可能需要 16 块 GPU 卡就可以达到原本 32 块卡可以达到的效果,不仅节约了硬件投入,还减少了人力的投入。目前,这个算法已经公开,中小规模的团队将获得更多的机会。对于现有的做大数据的公司来说,这或许也是一个新契机。借助于新的算法,提升训练结果以及最终的服务。
AI 领域的一个重要分支 CV,或许会借此获得新的生机与活力。因为训练数据偏小(相比于语音识别领域),借助于该技术,或许有机会大幅提升模型的性能。若真如此,基于 CV 的创业可能还会迎来一波小热潮。