IC验证培训——AI时代:软件已经起飞,硬件还在路上?_路科验证的博客-程序员ITS304

技术标签: 机械学习  验证论文解读  IC验证  硬件设计  

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

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

报名直通车

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的带宽。即使有这些限制,大多数应用还是需要进行实时操作。

由于篇幅有限,原文可关注路科验证查看或移步路科官网AI时代:软件已经起飞,硬件还在路上?

更多原创验证文章与论文解读欢迎关注路科验证公众号或访问路科验证官网

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/liubin1222/article/details/81667652

智能推荐

PCB原理图绘制(种草立创eda)_ZL.zheng的博客-程序员ITS304_立创eda怎么画原理图

首先,相对于我们平时所用的ad。这个就很适合我们英文不好的中国人了。然后这个一站式搞定,画完商城下单就可以做我们的板子了。整个设计界面也很友好,封装库也不需要我们自己封装。很多商城里面都有,可以直接购买使用。。具体教程我也是初学者,后面学习的时候在做笔记,现在发个学习的链接保存一下。一遍自己可以保存。https://docs.lceda.cn/cn/Videos/Demo-Video/index.html#%E7%AB%8B%E5%88%9BEDA%E5%BF%AB%E9%80%9F%E5%85%A5%

超像素(Superpixel)理解_Linear_Luo的博客-程序员ITS304_超像素是什么意思

最近看点云处理的文章,有些文章中提到了superpixel这个概念,查了一些资料,对其理解记录如下:超像素就是把一幅原本是像素级(pixel-level)的图,划分成区域级(district-level)的图。可以将其看做是对基本信息进行的抽象。超像素分割属于图像分割(image segmentation),再细化应该属于过分割(over segmentation)。比如我们对一幅图像进行超像

Paddle带你零基础入门深度学习_一直都在灬的博客-程序员ITS304_paddle 入门

PaddlePaddle带你零基础入门深度学习第一周手写数字识别任务数据处理网络结构损失函数优化算法训练调试与优化第一周手写数字识别任务手写数字识别任务数据处理数据处理优化 在工业实践中,我们面临的任务和数据环境千差万别,通常需要自己编写适合当前任务的数据处理程序,一般涉及如下五个环节:读入数据划分数据集生成批次数据训练样本集乱序校验数据有效性在数据读取与处理前,首先要加载飞桨和数据处理库,代码如下。# 加载飞桨和相关数据处理的库import paddleimport paddl

MQTT之ESP8266 OTA固件升级-坎坷记(FOTA爱之初体验)_久爱物联网的博客-程序员ITS304_mqtt ota

序:1、说实在的,这个问题不是很难,应该对于刚入手的人来说,也不容易。全都是边学边摸索边总结,经过几天的煎熬,终于实现。2、需要耐心分析原理,步骤。先看别人的代码,能跑起来的跑一遍。3、问题所在:别人的示例,仅单纯的示例,自己的项目是已经集成了多个功能,哪个也不能去掉,是不断附加的过程,代码后期再优化。所以就难到这了,由于C语言也不是很熟练,一知半解,才备受几天的煎熬。不会再翻视频学习...

ubuntu虚拟机终端(terminal)打不开_mengnalisha_csdn的博客-程序员ITS304_虚拟机打不开终端

最近想用cmake-gui编译opencv,发现虚拟机上终端(terminal)打不开,点图标也打不开,ctrl+alt+t也没反应。然后百度了一下ctrl+alt+F1~F6可以打开终端,我试了一下我这上面是ctrl+alt+F5打开了命令行,但是用起来很不方便。网上搜了一下相关文章,基本一致认为是python3.6的问题,我看了一下自己虚拟机上也有python2.7,3.5,3.6,虽然当...

java javaw javaws MC_java和 javaw 以及 javaws的區別_贺定圆的博客-程序员ITS304

java ,javaw 和 javaws 的區別:首先,所有的這些都是java的啟動裝置,java.exe經常使用,當使用命令行輸出到window的時候,會有java.exe進程,通過任務管理器可以看到。通常 我們執行一些小的java程序的時候會有 java.exe進程在運行。javaw.exe對於我們也比較特殊,我們也能夠通過任務管理器看到javaw.exe進程的運行。javaws通常w...

随便推点

2018-7-11 比特币区块链今天存放的信息_Coding means young的博客-程序员ITS304

今天匆匆浏览11日,比特币区块链中存放的信息,挑几条直接的分享一下:http://bittybot.co时间: 2018-07-11 00:10:13 高度: 531349 TID: 62b3d543c81cc17576ddd5487309ff3b7dd9fceab651b299a69182de1f2b20de看起来是个广告贴,宣传英国的比特币交易。这种方式,一次宣传,永久有效。https://c...

使用 HttpClient 和 HtmlParser 实现简易爬虫_a38876399的博客-程序员ITS304

简介: 这篇文章介绍了 HtmlParser 开源包和 HttpClient 开源包的使用,在此基础上实现了一个简易的网络爬虫 (Crawler),来说明如何使用 HtmlParser 根据需要处理 Internet 上的网页,以及如何使用 HttpClient 来简化 Get 和 Post 请求操作,构建强大的网络应用程序。使用 HttpClient 和 HtmlParser 实...

IDEA(2021)最全常用快捷键《必须收藏》_java李杨勇的博客-程序员ITS304

前言:IDEA对新手来说难,可能其中一个原因就是快捷键组合多而且复杂但是它也很全,基本所有功能都可以通过快捷键来完成,可以这么说,如果你掌握了所有IDEA的快捷键使用,那么你完全可以丢掉鼠标,而且不影响开发效率。达到事半功倍的效果最经常使用的十几个快捷键:...

x64 寄存器使用_cosmoslife的博客-程序员ITS304

x64 结构提供了 16 个通用寄存器(以后称为整数寄存器),以及 16 个可供浮点使用的 XMM 寄存器。易失寄存器是由调用方假想的临时寄存器,并要在调用过程中销毁。非易失寄存器需要在整个函数调用过程中保留其值,并且一旦使用,则必须由被调用方保存。下表说明了每种寄存器在整个函数调用过程中的使用方法:Register状态请使用RAX易失的返回

更改csv默认分隔符_albert528108的博客-程序员ITS304_csv默认分隔符

对于带分隔符的文本文件,可以在“文本导入向导”的步骤 2 中将分隔符从制表符更改为其他字符。在步骤 2 中,还可以更改处理连续分隔符(如连续引号)的方式。 有关使用“文本导入向导”的详细信息,请参阅文本导入向导。  更改所有 .csv 文本文件中的分隔符  1、单击 Windows“开始”菜单。  2、单击“控制面板”。  3、打开“区域和语言选项”对话框。