百度更新了其用于神经网络的开源基准——DeepBench,增加了对推理工作的支持,并支持低精度数学运算。DeepBench提出了一个旨在优化芯片的目标,以帮助数据中心建立用于诸如图像和自然语言识别等任务的更大而更为精确的模型。

这项工作表明,神经网络还处于早期阶段。到目前为止,运行去年9月发布的训练版规范的结果仅来自少数英特尔至强(Xeon)和Nvidia图形处理器。

这些芯片不久就应该能提供有关基于服务器的推理工作的新基准的测试结果。此外,对于运行在包括iPhone 6、iPhone 7和Raspberry Pi电路板在内的设备上的推理工作,百度即将发布相关结果。

在服务器上进行的推理具有更长延迟,但是可以使用比嵌入式设备(如智能手机和智能扬声器)更大的处理器和更多存储器。“我们试图避免得出大的结论,到目前为止,我们只是整理结果,”百度硅谷AI实验室的系统研究员Sharan Narang说。

目前还不清楚英特尔是否会提供推理结果,而且它仍然在进行其大规模并行Knights Mill(英特尔面向AI的下一代XeonPhi处理器)运行结果的研究。AMD表示支持该基准测试,但尚未发布在其新版Epyc x86和Radeon Instinct GPU上运行该测试基准的结果。

包括Corenami、Graphcore、Wave Computing和Nervana(被英特尔收购)在内的几家初创公司有计划涉足深度学习加速器。

“芯片制造商对此非常兴奋,并希望展示其结果,但我们不希望使用任何专有库,只能是开源库,所以这些事情需要付出很多努力。”Narang表示。“我们已经和Nervana、Graphcore及Wave进行了交流,他们都有有前途的方法,但是无一能用实际芯片跑一下。”

更新后的DeepBench支持面向推理的低精度浮点运算和稀疏运算,以提升性能。

“在深度学习中,模型大小和数据集大小有明显相关性,在任何应用中,它们越大,准确性就越高,因此我们希望构建尽可能大的模型。”Narang表示,“我们需要更大的处理器、更低精度的数学运算以及我们正研发的其他技术,来实现这一目标。”

该基准测量了芯片执行各种不同低层级任务(内核)的时间。它们包括针对不同矩阵大小的矩阵乘法器和具有不同种类滤波器的卷积。它还测量了LSTM(长短期记忆)、循环和门控循环单元运算。

“我们有一个非常详尽的内核列表来构成我们的需求。”Narang说,“针对这些大小进行优化的硬件对社区有用。”

“深度学习是一个积极变化的领域,有很多聪明人在处理不同的问题,我们还没有涵盖所有情况,所以研究人员应该贡献自己的内核。”

为了这项工作,DeepBench使用了大约十几种常用模型,如微软面向目标识别的ResNet。基准测试神经网络是一个非常复杂的问题,因为有太多的框架和模型,所以我们专注于较低层级的操作,而不是模型和框架。

向降低精度浮点数学的转移是此次更新中最大的变化之一。初始的基准测试使用32位单精度数学进行训练,但现在组合使用16位和32位计算。此举减少了GPU数量和所需内存量,且同时缩短了结果获取时间。

例如,Nvidia Volta V-100预计在几个月内可用,其单精度数学运算性能为20TFlops,但半精度为120TFlops。“二者差异很大——我们可能会使用不到现在GPU数量的一半。”Narang说。

同样,推理工作使用8位数学来表示权重和模型。“在服务器端,我们看到从32位单精度到降低的8位精度带来的巨大好处——这是个大胜利。”

DeepBench还支持使用稀疏神经网络进行推理,去掉了90-95%的权重以减少内存消耗。该方法提供了二十倍的数据压缩和更好的性能。

一些库希望最低减少99%的权重。Narang表示:百度正在与芯片制造商(如英特尔、Nvidia和ARM)合作,为这些内核打造底层线性代数。

《电子技术设计》2017年8月刊版权所有,转载请注明来源及链接。

20160630000123