近日,地平线的联合创始人兼副总裁黄畅在CCF-GAIR大会上进行了《构建与时俱进的性能标准,让AI芯片算力可感知》的主题分享。
以下是演讲内容实录:
今天不跟大家讲太多我们在业务方面的进展,更多是分享一个观点,就是在今天我们有太多的围绕AI计算的芯片推出,大家从各个角度诠释自己芯片的方方面面,但是究竟什么才是一颗芯片的合理的 AI性能,今天跟大家探讨一下。
我是黄畅,来自地平线。我的分享分成三个部分,第一部分介绍一下新摩尔定律,AI算法效率快速提升这样一件事情。
新摩尔定律——AI 算法效率快速提升
自从摩尔在1965年提出摩尔定律之后,在过去将近半个世纪里面我们一直受益于此,但是在最近5到10年,大家可以看到从传统的旧摩尔定律,半导体工艺演进角度上讲,已经接近了它的尾声。而在AI算法方面,尤其是2012年后大家开始关注大数据量、高算力推动算法的精度持续提升的进程,大家发现通过堆砌算力可以极大地提升算法的精度达到甚至超越人的水平,比如说AlphaGo,它的训练的量从2012年到2019年提升了7个数量级。如果仅仅依靠半导体技术,尤其是传统半导体技术,它是远远不能满足AI需求的快速增长。
关注过去几年的发展,我们会发现有一条之前少有关注的线,就是新的摩尔定律不断收益于AI算法演进和效率提升。先举一个例子, 2016年谷歌推出WaveNet,大家觉得惊为天人,因为之前没有一个语音合成的算法能达到真人都难以辨识的地步,但是很抱歉是这个算法实在是太难了,没有办法应用。2017年我们通过算法的演进把它的计算效率提升了1000倍,换句话说达到(此前)相同精度,只需要千分之一计算量就可以达到,而且在GPU上能以20倍的实时运算。再过了一年,又通过稀疏化等等方式,算法的改进,使它能够高效地运用在手机上。
再一个大家关注度比较高的ImageNet,这被认为是AI领域的奥林匹克竞赛,吸引了学术界和产业界的关注,它在过去的发展分为三个阶段,第一阶段更多是通过算法专家精心设计网络结构,不断增加计算量提升ImageNet的精度,大家看左下角,这是2012年的冠军AlexNet,到了第二阶段的ResNet它的精度、计算量都有显著提升。在后续几年,来自谷歌等等各个领域的专家通过手工设计新的网络结构,不断地推动这个算法演进,使得我们可以以更低的计算量达到更高的精度。
从2016年到2018年,我们发现在ImageNet上的精度基础趋近饱和,精准度始终保持在80%的水平,精度发生饱和之后,大家开始关注计算的效率,也就是我们是越来越多的效率得到了重视,推出了非常多轻量级网络,这些网络大量部署在整个图的左上方,它的数量很少,它的计算量也很少,但是它的位置非常靠上,这里面出现了一个很重要的卷积,这个卷积还是现在在被图像识别里边典型使用的,同时这种关注度分析的方法也应用到图像分类里面,产生了一系列新的操作和演进都是来自人。这里面我们第一次出现了网络结构的自动搜索,在这个工作出现之前,所有的网络结构都是算法专家通过自己的经验算出来的,网络结构的自动搜索我们建成NasNet,大家可以看到最右上方就是来自NasNet的几个结果,这是第一次AI算法超越了算法专家所能达到的极限。
去年EfficientNet的推出震惊了长期关注ImageNet的所有的学术研究者,谷歌堆砌了大量的算力,沿着网络结构自动搜索的方法得到了一个非常系统而完整的结果。大家看这条图中绿色的现就是EfficientNet的曲线,和过去的所有方法相比,它的精度和速度都是显著提升的。它是怎么做到的呢?首先它的基准网络和硬件无关,它关注计算量本身,也就是进行了多少次乘法或加法的运算,最小的网络只有0.4G,自动化搜索网络的所有结构,不仅如此,它还要搜索层次、图像分别率,它不仅是参数提升了,它的分辨率也提升了,这有助于它提升图象识别的精度。最终大家看到这样一个结果,就是谷歌一如既往用它的碾压式的能力得到了一个其他人无法超越的结果。这是整个行业大背景。
现有评估芯片 AI 性能方法的不足
我们看看现有评估AI芯片性能方法的不足。做半导体的同学都知道PPA有多么重要,尤其是Performance,我们需要针对应用场景进行设计,可以指导研发调整优化防线,引导客户进行正确选择,同时能够促进行业有序协同向前发展。
历史上有很多常用的性能评估指标,比如说CPU的MIPS,比如说传统GPU用Textur和Pixel评估性能。在高性能计算上,开始使用TFLOPS,就是每秒钟多少Tera的浮点运算精度。进入到NPU,也就是用于支持AI计算的时代,大家普遍使用TOPS,把Floating-Point去掉了,原因就是这时候是用精度计算,不再是浮点计算。这是常规的性能评估方式,无一例外的它都能反映出这颗处理器、芯片所处的应用场景中的特点、需求。
但是我们始终在思考一个问题,TOPS是不是能够真实的反映芯片的AI性能?
右边这个图表是在两颗比较主流的AI芯片,一颗主流芯片有11.4TOPS的算力,另外一颗芯片有4TOPS的AI算力,这都是它们的峰值算力,我们谈TOPS的时候,往往都是它的峰值算力,它体现的是整个芯片的理论上限。在实际使用过程中,利用率差异是非常大的,我们挑了两颗非常主流的AI芯片,对它进行系统性的评测,用红色和绿色表示他们的利用率,所有的峰值算力里面,在运行这些算法的时候到底有多少被真正有效地利用了,这些算法包括了图像的检测和图像的分类,是一些最常见的算法,大家可以看到它的利用率的差别非常大,事实上能够达到几十倍的差异。
这里面有很多原因,有算法本身的特点,比如说数据的重复性比较差导致。但是往往根因是在于这些芯片的计算架构,它的设计特点不能够很好地反映这些算法发展的趋势,使得它在外存访问或者说片上的乘法阵列对齐,或者是片上的存储和计算之间转换的过程,它的内部的带宽本身都不足,方方面面原因共同造成的,差异非常大。
所以如何评估芯片的AI性能,我们应该换一个角度来看这个事情,我们可以从准、快、省这三个维度来看。准是反映实际需求任务上的算法精度,比如说图像分类里面我们用Top-1或者Top-5的精度判断它是不是准,还有COCO里面可以用mAP这样的指标描述它,不同的任务里面,在学术界已经有比较多共识的指标描述它。在快的方面,通常有两个维度,一个是延迟,一个是吞吐率,前者更侧重于处理单个任务的最快反应时间,后者应用于你可以在服务器层面上用最大的处理方式处理它的吞吐率。省就是看它的成本和功耗。对于AI芯片的性能评估来讲,准和快是两个非常重要的因素。
MLPerf成立于三年前,它成立之后得到非常多企业的关注,很多企业发布自己的AI芯片的时候,都会讲自己在MLPerf上跑多少分。但是MLPerf的发展面临很多的挑战,它的思路是我选定模型比谁快,基本上这个模型要求你不管做量化的操作或者其他的操作,它和原始浮点的精度差异不能超过1%,这样它保证是在精度相同的条件下比谁的速度快,但是它有一个前提条件,它必须选定模型,这些模型是怎么选的是一个很值得研究的课题。举一些例子,比如说它在图像的分类、图像的检测和机器翻译过程中,它选择了一些非常经典的模型,但是机器有限。举个例子,在图像的分类问题上发展了三年,它在做图像的推理、分类的课题上,到现在它还只有两个模型,这两个模型都是推出三年以上的算法,完全没法反映我在前面介绍的高效能算法往前推进过程中所带来的便利与提升。
这就造成很多问题,它的模型更新非常慢,根本无法及时反应整个算法效率的提升。而模型又非常少,也很难反映各个精度上速度全貌,现在已经有很多新的算法已经超过它的精度,怎么在这样的精度范围内评估它的运行效率,这是一个问题。同时模型选择受各种因素影响,提交者和组织博弈,这也导致这样一个标准设立至今还只有两个模型的原因。大家看到我前面描述了,仅仅对图像分类而言,知名的有几十个甚至上百个算法,但是至今仍然只有两个放在里面,这就很说明问题。
芯片真实 AI 性能
如果我们放下所有的成见,关于这个算法该谁不该选谁,你关注它的延迟还是关注它的精度,包括输入的图像是24×24还是320×320,我们包容所有评测过程中可能的选择,放下成见,包容所有的选择,我只关注你能跑得多准以及跑得多快。那是不是一个更有包容性、更开放的评估标准呢?
这就是我们今天在这里提出的一个很重要的概念。这个概念其实源于我去研究EdgeTPU是如何应对这样的问题,其实EdgeTPU是一个标成4TOPS的AI芯片,我们研究它的架构会发现它在设计之初确实对新算法有很多地方没有考虑到,但是没关系,谷歌在这方面的影响力非常大,它针对EdgeTPU推出了独特的版本,对它的EdgeTPU做了优化,得到速度更快、精度损失非常少的一组模型,行业里叫做EfficientNet,它比行业里所有的EfficientNet嵌入式芯片表现都非常好。
这个是我们在EdgeTPU上测试的结果,所有的蓝色的点一些传统算法,右边的点是经过优化之后的EfficientNet模型。我们选择一个合适的精度范围,比如说77%到80.5%,在这个精度范围内去看你所有算法的选择所能达到的最高精度,最终形成了一个最紧的包围,它围出的面积最大。在这个精度范围内,大家不断地在精度和速度之间做折中的选择,我们把所有选择列出来看,在每个精度上它最好的结果。
如何打破上述困境,我们提出了新的芯片AI性能评估方式——MAPS,即Mean Accuracy-guaranteed processing speed(在精度有保障范围内的平均处理速度),意思是在精度有保障的范围测你的平均效能如何,得到一个全面、完整、客观、真实的评估。具体而言它对行业有以下六大点创新之处,第一,它可以可视化芯片的Benchmark,我们不是求数字,我们可以通过可视化的图形更精确的表达,我们在数据之间如何做折中。第二,我们关注真实、面向结果的需求,我只在乎精度和速度,不在乎中间任何关于算法的取舍和选择。第三,我们可以统一表示精度与速度,关注主流精度区间。第四是隐藏与最终结果无关的中间变量,包括模型、输入大小、批处理的量是多大。第五是通过这种方法可以在算力之外帮助用户理解这个芯片到底能跑多快以及多好,最终留有最大的空间引导客户使用最优的方式使用这颗芯片,这一点非常重要,就是去指导客户使用这个芯片的最佳实践。
这是我们做的另外一个实验,这里面有一颗是地平线即将推出的芯片,我们在EfficientNet模型上进行测试,基本上保持在65%到85%的精度范围,我们看它的面积,除以它的高度,算出它的平均值,从而得出我们的MAPS值,就是有精度保障下的平均处理速度,它们最终对应的是一个帧率,相当于平均帧率。可以看出同样标称4TOPS的芯片表现差异还是很大的,甚至在MAPS上有将近2倍的差异,地平线即将推出的新一代芯片和11.4TOPS峰值算力的芯片相比,虽然在高精度上稍有劣势,但是在追求速度和延迟低的场景中会有明显的优势。当然这只是一组基于EfficientNet模型评估得到的结果,我相信随着算法不断演进,这套曲线会不断地发生变化,我们也希望有更多的软件、算法工作者,在MAPS评估指导体系的启发下,从自己最擅长的能力上持续推动AI芯片能力的发挥。
上述公式的主要阐述的是芯片 AI 效能与三要素之间的关系。我们经常讲PPA,或者TOPS,希望把性能、功耗和它的面积挂钩,但是正如我们前面讲的,TOPS并不是最好的,也并不能客观地反映一颗AI芯片的性能。如果我们用MAPS,它是更能真实反映AI性能指标的,它由三个要素构成,第一是TOP/Watt、TOPS/$这样的指标,它是传统的方式。最右边这个是AI算法效率,我们每消耗一个TOPS算力,能带来多少实际的AI算法的性能,它体现的是AI算法效率的持续提升,是算法研发、算法工程师、算法科学家始终努力在提升的,在过去几年里面,这个提升速度是非常快的。中间这个是把算法部署在芯片上,根据它的架构特点,动用编译器等等去系统化地解决一个极其复杂的带约束的离散优化问题,而得到一个算法在芯片上运行的实际的利用率,实际上是软硬件计算架构的优化目标。这三个要素中,第一个反映的是旧摩尔定律,第三个反映的是新摩尔定律,就是AI算法持续快速发展提升得到的结果。前段时间Open AI Lab以及其他的研究机构都发现,过去几年算法提升效率非常快,以几个月的时间来翻倍它的效率。如果我们关注这样的效率的提升,我们应该把握这三要素中最主要、变化最快的要素,并且根据这个要素去指导我该怎么设计我的处理器架构,我该怎么样取舍我的存算。
今天我们的主题在讲基建、AI计算,其实我们在不断地应用这样一个性能、效能的指标去标识我们自己,标识我们做出的贡献、产生的价值。但是我最后想说的是,我们除了关注数量,还要关注质量,也就是回归到我们把这些东西真正推广出去、部署下来,它解决什么样的问题,在这样的问题里面它创造多少价值,这才是回归问题的初衷,这也是为什么我们今天在这里想跟大家分享的一个最重要的原因,就像做所有研究一样,如果你订立了正确的目标,你距离成功已经近了一大步。
这就是我今天想跟大家分享的内容,谢谢大家。
来源:oschina
链接:https://my.oschina.net/u/4369820/blog/4484313