作者 | 蒋宝尚
编辑 | 丛 末
摩尔定律预测芯片性能每18个月翻一倍,那 ai 算法性能多少个月翻一番?
答案是16个月。
图注:蓝点是给定时间的最低计算机,灰点是测量值。
观察结果是每16个月性能翻一倍。近日,openai针对ai算法在过去数年中性能的提升做了一个详细的分析。他们发现,自2012年以来,在 imagenet 分类上训练具有相同性能的神经网络,所需要的计算量,每16个月降低一倍。
与2012年相比,现在将神经网络训练到 alexnet 的性能,所需的计算量仅为原来的1/44(相比之下,摩尔定律仅降低为1/11)。若将“算法效率”定义为:减少训练特定任务所需的计算量。我们还可以看到:
在imagenet上,resnet-50 级别的训练效率翻倍时间大约为17个月;
在wmt’14的翻译任务上,transformer相比seq2seq,训练的“算法效率”提升了61倍,所用时间约为 3 年,也即翻倍时间为 6 个月;
在围棋任务上,alphago zero所需的计算量是alphazero的1/8,翻倍时间仅为 4 个月;在dota 任务上,翻倍时间仅为 25 天!!!
所有这些结果表明,对于近期投入大量资金的这些 ai 任务,算法上的进步相比硬件的进步(服从摩尔定律,每18个月翻倍),能产生更多的效益。
如果用有效计算的概念把ai和计算的趋势结合起来,那么,其表现就如下图所示:ai和计算的趋势被分解为硬件效率(摩尔定律)以及金钱和并行化(money/parallelization)之后,算法效率的提升只占总体提升的一部分。
主要衡量指标
前面也提到,所使用的衡量方法对现有的开源项目的再实现。
另外openai还在体系结构之间进行了少量超参数调整以及小范围的调优。
使用的计算是基于以下结果:
1、每个图像的浮点计算,由pytorch库计数
2、图片每个epoch的数量
3、架构的性能优于或等于openai训练的alexnet模型所需的时间间隔数。
据openai介绍,其很大程度上遵循了pytorch示例模型中建议的超参数,对于每一个模型都使用sgd进行训练,批次大小为256,冲量(momentum)为0.9,权重衰减设置为1e-4。对于预处理的架构,例如googlenet 和 vgg,学习率为0.01,对于其他架构学习率为0.1。
resnet-50学习曲线
如图所示对于alexnet,作者遵循了原始论文的学习率表(learning rate schedule),每30个epoch衰减10倍,其他的则降低1000倍的学习率。
为了检查超参数设置是否合理,作者在resnet18上进行了扫描,并将初始学习率设置为0.0316、0.1以及0.316,总的衰减率为250x,1000x,以及2500x。
另外,对于除alexnet以外的所有模型,作者对学习率及进行了平滑处理,如上图所示,显然这对早期的学习非常重要。
在论文中,openai还提到,除了效率,还有许多其他衡量标准揭示了人工智能领域的整体算法进展,毕竟算法还受到底层硬件、硬件利用率以及云设施的改进影响。例如当处于低数据体系时,样本效率是关键。当考虑到经济效益时候,gpu、参数、flops(浮点运算次数)推理效率的提高也很有意义。
前面也提到,从2012年到目前,实现alexnet级别性能所需的计算减少到了原来的1/44。
另外,作者还将训练效率的进步分为数据效率和减少每个时间段所需的flop数量。如下表所示,将总训练效率收益分解为每一epoch的训练周期和每一epoch的浮点运算数。
另一个观察结果是:基于flops的学习曲线。这可以帮助理清模型之间的比较。如下图所示,与其他模型相比,某些模型(例如shufflenet_v2)使用比较少的计算量就能达到其他模型(例如alexnet)能够达到的准确率。
vgg-11的最大精度要比alexnet高,但达到相同精度所需要花费的计算量却要比alexnet大很多。另一方面,如果综合考虑算力和准确率,则resnet50优于vgg-11,googlenet优于alexnet。第三个观察结果是:resnet-50分类性能效率提升和alexnet类似,而围棋、dota和机器翻译等任务的效率提升速度相比alexnet要快很多。如下表所示,就浮点运算而言,给定任务,其计算效率都有不同程度提高。
再放一次
另外,更为细致的观察发现,1)翻译任务在较短的时间内取得的进步比cv更大;2)对围棋和dota的观察时间比较短,但只要在接下来的 5 年里,在围棋上再有三倍,dota上再有5倍的性能提升,它们的效率增益就能超过视觉任务了。
另外,在利用imagenet完成相关推理任务时,效率的提升同样是明显的:
1、shufflenet实现了alexnet级别的性能,推理效率在5年内提高了18倍(15个月翻一番);
2、efficientnet-b0在3年半的时间内就达到了resnet-50级别的性能,推理效率提高了10倍。
当然,此次对计算效率的测量还是存在局限性的。
首先,尚不清楚观察到的效率趋势在多大程度上可以泛化到其他ai任务上。也就是说,在al领域中是否存在一个与摩尔定律相当的“ai定律”,还不能得出肯定的结论。
其次,算法效率的提升只是进步的一个表现,此次分析并没有量化整体的进步。毕竟ai能力进步背后是整体概念的表现,而不仅仅是效率的提升。
此外,本分析主要关注模型的最终训练运行成本(final training run cost),并不是总开发成本(total development costs)。
一些算法上的改进使超参数的空间变得更大,从而可以更稳定地训练模型。另一方面,架构搜索也增大了最终训练运行成本和总开发成本之间的差距。
一般来说,算法的改进是推动ai进步的关键因素,动态测量sota算法效率的改进,将有助于评估算法效率提升的质量,推动ai算法的改进。由于硬件和算法效率提升可以相互叠加,所以ai的进步应该综合考虑这两者的情况。
(雷锋网)、(雷锋网)、(雷锋网)