AI时代:软件已经起飞,硬件还在路上?

路科验证2019-03-22 06:58:36

rockeric.com

为响应全国各地心心念路科验证培训的路粉们,路科将在9月1日进行线上培训,线上报名方式如下:

手机安卓端(暂不支持iOS)可在【腾讯课堂】APP搜索“路科验证”,即能够找到报名入口,PC端可浏览腾讯课堂的课程页择报名。前30名学员优惠价7980,后期价格将恢复为8580。

https://ke.qq.com/course/323495

so...还在等什么?培训详情可在订阅号回复【培训】,也可以扫码momo小姐姐,咨询她线上培训



由于硬件和软件两边都有不同目标,机器学习领域是否正在朝着另一个软硬件分离的趋势发展呢?


机器学习是当今最热门的研究领域之一,但是到目前为止,大部分人都把注意力集中在云、算法以及GPU上。对于半导体行业而言,机器学习在一些汽车电子、便携式设备以及物联网领域有着很大应用前景,一般会将其用于优化和整合系统解决方案,提高解决方案的实用性。


一般当某种东西变得容易获得之后,效率便会变得低下。对于机器学习行业来说也是如此,例如大家都认为GPU是机器训练(Machine training)解决方案中性能最高的。并且由于这些设备是基于浮点运算的,所以设计出来的机器学习的算法都是基于浮点的。


边缘设备(Edge Devices)中的推理运算无法使用浮点运算,并且一般都需要将浮点系数转换为定点。现在我们可以使用定点运算来进行机器训练吗?虽然针对定点运算的专用硬件才刚刚被提出来,但是这也是有可能的。我们还不清楚,现有的机器学习的算法以及开发工具是否已经被牢牢确定下来,是否没有任何改变的可能性,迫使机器学习硬件行业只能沿着像通用软件一样低效率的路径继续前进。


现在看来很大的一个问题就是,机器学习这个行业的发展是否也会产生另一个硬件和软件的鸿沟。这很可能表现为云计算与嵌入式设备两个截然不同的发展方向。除非我们采取一些新的方法来消除这两者之间的差异,否者差别只会越来越大。


Babblabs首席执行官Chris Rowen认为,在如今,某个时刻很可能就有数十个甚至数十万个网络正在进行机器训练,并且我们很快就会生活在一个数百亿网络同时进行推理运算的世界。


目前的现状

如今大多数的机器学习的算法开发都集中在云上,大部分的假设推理运算(assumes inferencing)也都是基于云计算。推理运算所需要的计算算力在整个机器训练过程中只占有的很小的一部分,所以很少有人去关注。

图1:推理运算和机器训练的分离


硬件与软件的鸿沟是真的吗?Mentor嵌入式系统事业部高级研究主管兰迪艾伦说,目前机器学习社区中算法设计者和算法实现人员之间存在很大的分歧。那些算法设计人员使用Matlab和Python来进行设计,对底层的硬件实现不会提供任何帮助。他们并不关心硬件是否支持定点运算,只想在硬件设备上运行算法而并不关心如何去优化。


Synopsys嵌入式视觉处理器产品营销经理Gordon Cooper也认为我们需要关注底层的硬件实现。他说,如果你像Google公司一样进行人工智能或机器学习开发,你或许会有很多GPU服务器来供你使用而完全不用担心计算资源。但是如果你是在安卓手机或者汽车芯片上进行机器学习开发,你可能会非常关注芯片的功耗以及成本乃至于芯片面积的大小,并且希望在满足功耗限制以及面积限制的前提下,获得最大的性能。


在嵌入式级别,我们将利用所有可用的技术。Rowen认为,机器学习是一个广义的术语,包括很多非神经网络方法(例如向量机,随机森林)以及深度学习方法,尤其深度学习中的神经网络,这些不太深入的机器学习方法并不像深度神经网络那样具有计算密集性,因此GPU和FPGA理论上的效率优势可能就显得不那么重要了。


总体而言,实际的应用程序,即使是那些深度利用机器学习的应用程序也是由很多部分组成的。Rowen认为里面包括图像预处理,MPEG解码,图像和是视频剪辑,特定区域选择,运动检测,背景删除,直方图绘制,转码,数据分割,数据库访问,数据格式化,图像平滑,噪声消除,数据增强,人脸检测,快速傅里叶变换,帧到帧跟踪,I/O数据处理以及处理流水线(complete processing pipelines)的各种拼接。


硬件解决方案有着很久的历史,Cooper说,在嵌入式计算机视觉领域,使用传统的计算机视觉理论已经进行了很多年的工作,基于这个我们可以编写一段程序来确定某个东西是否是一个行人。方向梯度直方图(Histogram of gradients)就是其中的一种程序,它会查找人们周围的边缘,然后尝试确定其行为模式及其对应的内容。这就是矢量DSP(vector DSP)使用大型SIMD乘法进行像素处理所利用的程序。


从中我们也可以看出,当今很多的机器学习的硬件解决方案都是各种技术的组合,例如部署矢量处理技术以及将神经网络紧密耦合到组合加速器引擎中。此外与很多其他的硬件解决方案一样,我们也不得不做出很多权衡。如果我们利用ASIC芯片,或许能够获得最低的功耗以及最小的面积。但是如果我们希望我们的产品可以不断的更新,时刻引领潮流,我们可能就需要考虑到芯片的可编程性了。机器学习这一行业正在当今这个快速变化的环境中寻找理想的解决方案。


硬件衡量指标

如果要对某个方案进行优化,那么就必须有可以对解决方案进行充分量化评估的指标。Imagination Technologies的视觉和人工智能产品经理Francisco Socal指出,目前对于机器学习的综合性能评估,我们还没有一个统一的可以用来量化评估的行业基准。例如,对于图形处理的评估,我们可能会有曼哈顿以及T-Rex分数(Manhattan and T-Rex score)来衡量。虽然目前已经有一些神经网络模型出现,但它们绝不具备代表性。Socal也希望明年可以有一个行业认同的测试基准。


对于硬件来说,功耗,性能和面积一直是衡量芯片的关键指标。Rowen说,对于机器学习来说,延迟,数据吞吐量以及功耗是与之相关的重点指标。我们可以简单地通过应用更多并行硬件(parallel hardware)来改善数据吞吐量,但是如何改善延时,就没那么简单了。采用并行硬件的解决方案在某些情况下会有很大帮助,但是由于诸如处理窗口等因素的影响可能会对延时有很多约束和限制。


Socal进一步解释道,从高层次来看,数据吞吐量和功耗确实是衡量机器学习硬件性能的正当指标,就像其他硬件设计一样,这些指标是影响芯片的关键因素。低延时实际上更多的像是一个设计需求,而不是一个设计指标。


对延迟的要求取决于不同的应用场景,有的时候甚至可能容忍以秒计的大延时。例如对于一些实时应用程序,只要数据处理的吞吐量足够大,延时大一点也没什么影响。但是在一些其他应用中,特别是一些人机直接交互或者汽车和机器人等对安全要求非常严格的系统中,我们可能需要将延时控制在毫秒或者数十毫秒以内。


对于机器学习硬件设计来说,还有一些其他指标也值得考虑,比如说,预判的准确度或者设计的前瞻性。


功耗

在一定的算力条件下,功耗是首要考虑的因素之一。Rowen说,功耗通常与成本密切相关,而成本至关重要,尤其是随着工艺的成熟以及产品的大规模应用,成本显得越来越重要。功耗也会影响设备的便携性,我们希望能够将处理器的计算能力应用到任何我们需要的地方。最先进的神经网络引擎(包括处理器,可编程阵列,协处理器)会针对计算模式和神经网络数据类型进行专业化的网络推理设计。其单数据通道消耗的功耗大约会比通用处理器降低100倍左右。


但对于功耗要求来说,还远远不够。Mentor Calypto系统部营销总监Ellie Burns说,许多自动驾驶汽车所耗费的算力大约相当于100台笔记本电脑全速运行时所提供的算力。但是我们几乎不可能给每台汽车配置大约100台笔记本电脑的计算资源,所以必须要降低功耗。这也是目前业界正在努力解决的一个问题。从很长一段时间来看,GPU还是唯一一个适合于机器学习的硬件设备。这就是为什么很多人都在考虑使用高层次综合(High level synthesis)来生成定制化的硬件结构的原因了。


更低的功耗可以衍生出一些新的应用。OneSpin Solutions总裁兼首席执行官Raik Brinkmann表示,中国大约有100万台监控摄像机。每台摄像机每秒大约会生成2.5Mb数据。想象一下,如果我们都在云端完成数据处理,需要消耗巨大的功耗以及需要进行大量的数据传输。我们需要体积更小,价格更便宜,功耗更低的设备。为此我们引入了新的硬件架构。由于数据需要不断传输,常用的硬件架构存在着功耗瓶颈。我们试图设计一种新的架构使其能够降低硬件的功耗或者减少网络中数据的传输。


机器学习的硬件设计中功耗问题是设计权衡中最重要的因素之一,而数据带宽则是限制其硬件设计的标准之一。


Socal补充说到,由于需要将大量数据加载到硬件加速器中来运行网络推理,所以运算神经网络需要很高的数据带宽。从系数或者权重,输入输出数据大小的角度来看,随着神经网络模型规模的增加,比如,如今的端到端(end to end)以及一体化(all in one)的神经网络模型,内存带宽的需求也会增加。这些都给SoC设计人员以及原始设备制造商(OEM)带来了更高的挑战。对外部存储器的高带宽需求,需要使用更快的存储器模块来满足,这显然价格会更昂贵,功耗会更大。许多机器学习硬件设计的解决方案一般不会受到运算引擎的计算能力的限制。但是可能会受到硬件性能的限制,比如说,系统为神经网络加速器提供高数据带宽的能力。


Lanza TechVentures的董事总经理Lucio Lanza补充说,优化机器学习硬件设计的一个主要方面就是保持给处理器单元的数据供应能力,即处理器的占用率。这些涉及到延迟以及数据吞吐量的设计。随着摩尔定律的失效,我们可能会看到更多的面向单任务的芯片,并且有逐步向单指令,多数据(SMID)发展,抛弃多指令,多数据(MIMD)的趋势。


功耗会影响设计的很多方面,Lattice Semiconductor的营销高级主管Deepak Boppana说,由于电池电源和冷却系统的限制,会对功耗产生更严格的要求。低成本和小尺寸的设计要求使得芯片很难使用具有大量引脚的封装形式,这些都会限制外部DRAM的带宽。即使有这些限制,大多数应用还是需要进行实时操作。


准确度

准确度在统计过程中意味着什么呢?Mentor的Allen说,对于机器视觉来说,没有一个明确的算法和解释,我们可以尝试看一下错视(Optical illusion)图,显然它允许我们以不同的视角来解释图上的这些东西。不同的人可能看到的是不同的东西,并没有百分百正确的答案。这个例子比演绎(deductive)的方式更具有归纳性(inductive)。如果你能在使用训练数据进行测试时获得97%的准确率,该算法和硬件的表现就是非常好了。


与其他评价指标一样,我们不能太绝对依赖某一指标。Cadence的Tensilica Vision DSP产品线产品营销总监Pulin Desai指出,汽车电子和消费电子在准确度方面有着截然不同的最终目标。汽车电子中,我们需要确保其始终是一种安全的设备,因此其需要很高的准确度。但是在消费电子中,我们可能会设计低功耗模式和正常工作模式。在待机时,我们希望最大限度地省电,但是在正常工作时我们希望能够提高功耗来获取更大的性能效果。


设计的前瞻性

机器学习正在迅速发展。Cooper说,世界正在快速发展,我们必须要考虑到产品的易用性和前瞻性。即使目前我们的硬件设计已经做的非常优秀了,但是也有可能在以后达不到我们的预期目标。所以我们必须确保无论我们现在做的是什么,在以后都会有用得到的地方。我们当前的硬件设计工作与集成我们芯片的产品之间有着密切的联系。从整个产品的生命周期来看,我们所做的设计工作还处于整个周期的早期阶段,还需要持续很长一段时间。


Desai也有着类似的观点。例如我们今天设计的芯片有可能于2019年投入生产,并在2021年集成进汽车里面。当然,芯片被应用在哪些领域取决于细分市场。但是芯片的可编程性有助于提供更大的灵活性。我们可以开发硬件加速器,来实现最佳的解决方案,但是其不能很好地随着技术发展而发展。专用加速器核心或许还可以为CPU/GPU组合解决方案提供更好的性能和功耗选择。


但是某些应用无法承担针对更高性能或者更低功耗的需求去重新设计硬件的这种方式。Burns认为,随着时间的推移,我们将有可能看到将硬件和软件结合起来的解决方案。


弥合软硬件之间的分离

缩小软硬件之间的鸿沟更多的可能是硬件人员的职责。软件已经处于领先地位了,该行业可以很容易地就让投资者看到其投资的合理性。硬件可能还不习惯于这种位置,但是如果投资者们想要看到硬件的变化,他们只能开始进行投资。


原文来自于Semiengineering“Machine Learning’s Growing Divide

https://semiengineering.com/machine-learnings-growing-divide/


Copyright © 古田计算器虚拟社区@2017