路科验证的个人空间 https://blog.eetop.cn/1561828 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

云上云下的机器学习已分道扬镳(续)

已有 980 次阅读| 2018-12-9 13:15 |个人分类:验证前沿资讯|系统分类:芯片设计

定制化的集成电路,FPGA或者处理器

与其他硬件一样,机器学习可能地实现架构范围也可以从通用处理器扩展到完全自定义的硬件ASICFPGA或者处理器都有各自的权衡,最终的产品要求会定义哪些实现方式是可以接受的。

 

对于处理器这种实现方式,工具可以帮助我们完成大部分的工作。SynopsysCooper说,训练环境的输出可以从32位的浮点系数来转换,并使用12位或者8位的分辨率来映射到我们的硬件中。理论上来说,这应该是一个自动化的过程。但是实际上它会带来一个持续性的软件维护问题,因为我们的客户的目标不断在更新。即使我们已经支持了Caffe模型中的所有图形,但是随着新的图形不断被提出,客户也可能会越来越多地拥有自定义图层,然后我们必须手动来完成某些映射。这个过程几乎是不可能自动完成的,但是我们可以尽可能地减少需要手动完成的工作量。

 

一些库也有助于帮助我们生成最佳代码。CadenceTensilicaVision DSP产品线产品营销总监PulinDesai补充说,如果我们的设计网络中包含3x3卷积,1x1卷积或者一些标准的处理过程,他们为这些常用的函数开发了库,我们可以直接让编译器来调用这些函数,从而在C代码中生成一个针对处理器的高度优化的工作空间。

 

有时候我们可能会需要一些更有效的解决方案,西门子事业部门导师Calypto系统部门营销总监EllieBurns说,一些图像处理硬件非常适合使用高层次综合(HLS:High level synthesis)来设计。推理过程需要低功耗,低延时,非常高的性能和吞吐量。这就是硬件的要求。在HLS中可以保留所有C的模型,可以重新测试,确保浮点和整数的转换是符合要求的。HLS与目前针对处理器开发的环境完美契合,开发环境几乎不用改变。但是其内存需求非常大,也会带来一些其他的有趣的挑战

 

有时候我们也需要做出一些重要的权衡。MentorCalypto系统部高级综合技术专家MikeFingeroff举例说,对于不同给定的网络会具有不同的拓扑结构,除非我们采用通用的处理器或者加速器,否则硬件的设计结构必须要改变。解决这一问题的一种方法就是使用FPGA作为数据加速引擎,在任何不超过其能容纳的最大网络层数的拓扑结构中都可以适用。我们可以在Tensorflow或者Caffe中做一个尝试,更改拓扑结构,删除图层或者修剪系数。但是这些并不是一个高性能网络,特别是对于需要高帧率和处理大量图像数据的汽车应用而言。如果我们选定好网络结构以及硬件架构,我们可以重新开始训练,然后重新将其加载到内存中去,但是这只是意味着权重发生了改变,无法对网络结构作出重大更改,只能将其应用于固定架构。使用FPGA,我们就可以重新开始设计并匹配新的实现方案

 

不过FPGA就自然而然地成为了最好的选择了吗?Mentor嵌入式系统部门高级研究主管RandyAllen指出,使用FPGA可以加速我们的设计过程,但是约矩阵乘法的关键问题始终是存储器的访问时间最终决定算法运算的速度是内存的访存速度而不是CPU的运行速度。此外,也有很多方法可以将矩阵乘法映射到FPGA上,但是如何找出正确并合适的方法并不是所有人都知道。

 

架构的权衡

在架构层面很重要的一个的决策就是数据宽度。Desail说,对于推理运算来说,大多数情况下8位的数据宽度就已经足够了,少数情况下需要16。我们设计了一个专门为卷积运算进行了优化的架构模块,其他类型的网络虽然也可以在上面运行,但是卷积运算网络是重点。运算卷积网络在一个周期内需要大量的MAC数据。而这个优化过的模块可以在一个周期内完成10248MAC的运算。当然一个硬件架构还会有其他模块,比如DMA,从外部存储器读取数据并帮助进行数据流量管理。

 

针对某一网络运算进行架构优化是提高神经网络性能的方法之一,除此之外还有一些其他方法。SynopsysCooper说,由于12位的乘法器占用的面积只有16位乘法器的一半,我们有可能让32位的浮点运算运行在12位的定点运算模式下,并达到相同的精度水平。新的量化技术也在不断被开发出来,Google正在积极推广8位的定点运算宽度。我们相信它可以很大程度上节省带宽和功耗,因为8位的架构不需要很频繁去访问外部的DDR8位的定点运算似乎是目前的一种潮流,但是从一些论文来看未来可能还有4位,2位甚至1位。

 

EDA行业在这种数据运算领域有着丰富的经验,这些问题与处理DSP系统映射的问题非常相似。Mentor指出,高层次综合High-levelsynthesis)的设计流程通常从设计浮点运算的算法开始,接着量化该算法,会分析出诸如信噪比(SNR)这样的系数。这个过程就和从训练过的浮点模型中量化各种系数一样。通过使用推理引擎来分析图像,进而分析图像的百分比匹配率,很多研究都表明8位及以下的数据宽度也可以提供很可靠的结果。

 

无处不在的机器训练

机器学习有三种方法,Brinkmann指出,分类和回归(classification and regression)是目前最常使用的两种方法。还有强化学习(reinforcementlearning)第三种方法,其将对机器学习的硬件架构产生重要影响。基于分类和回归两种方法,我们可以将训练过程和推理过程分割开来。在云端进行训练运算,在边缘设备中进行推理运算。但是基于强化学习,我们通常希望系统能够现场应用,所以就需要实时学习,也就意味着我们可能需要在一些边缘设备中进行训练运算

 

目前,在汽车领域中,图像识别系统只会给出YESNO两种答案。Cooper解释说,卷积神经网络(CNN)只会告诉你有一个物体在哪里,除此之外的任何信息都不会被收集。同时整个系统也只是这样使用这些信息,除非存在一些冗余系统(redundantsystem)否则系统根本不会知道网络识别出来的结果是否正确。只有训练做的好,部署的运算引擎才能很好地发挥作用。图像识别系统只会给出正确或错误两种答案,所以在更高层次的系统中跟踪错误非常有必要。

 

能够自我修复的网络也会引发一系列新的问题。Brinkman补充说,早期的数据格式的定义就已经决定了你的功能。如果你的数据不能代表或者就没有包含某种特定的情形,那么你的神经网络将无法很好地被现场应用。数据欺骗也是另一个可能存在的问题。在自动驾驶领域中,一般在云上进行训练然后返回结果。汽车收集数据,然后传回云端重新训练网络,如此反复。验证过程变成了一种持续性的过程,系统设计也不再是一种一次性的活动。数据完整性必须得到保持,以确保数据没有被扰乱或者篡改。

 

如果还需要实时地进行重新训练,数据问题将会变得更糟,但是这似乎是未来一个不可避免的趋势。Lattice半导体市场营销高级主管迪帕克·博帕纳说,机器学习技术的发展已经到了可以使机器变得更加智能的转折点,我们只会关心未来机器还可以再做什么。展望未来,低功耗的边缘推理运算是一个值得关注的技术。它能够使我们的智能系统以超低延迟来运行机器学习。同时不需要标记训练数据的无监督学习技术也在逐渐被广泛使用。

 

如果机器学习是一个分布式的,那么谁将拥有这些数据呢?安全,加密和网络模型的保护是一个有趣的问题。网络模型正在成为知识产权,开发人员将不太愿意将他们的网络模型部署到没有严格的安全防护的边缘设备中去。

 

机器学习领域的发展方向很难预测,但是这个领域必将会发生很多重大的变化。Rowen说,理论上来说,对于如今流行的神经网络结构没有一个通用的最优解,对于不同的任务场景,总会有效果更好的网络结构。因此,我们可以预见,新的算法理论,新的网络结构,新的训练方法以及新的网络适用方法将不断涌现。

 

至于云和本地的鸿沟,MentorAllen总结说,确实存在着一个算法和实现的分歧。目前人们还只是在使用GPU来从中获得运算结果,并没有专注于如何去优化。到现在为止人们遇到还只是一个软件问题,并没有深入到硬件优化上去。



原文来自Semiengineering “Bridging Machine Learning’s Divide”

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



点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 253

    粉丝
  • 25

    好友
  • 33

    获赞
  • 45

    评论
  • 访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-29 01:02 , Processed in 0.013510 second(s), 12 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部