查看原文
其他

处理器IP厂商的机器学习方案 - Synopsys

2017-03-27 唐杉 StarryHeavensAbove
导        读

Synopsys在对神经网络的支持方面是起步比较早的。它的EV(Embedded Vision)处理器采用了Vision CPU + CNN加速器的方案,架构上和CEVA的XM6的方案类似。所以,大家比拼的重点还是实现细节。另一个看点是处理器IP和Synopsys其它工具/IP配合是否能给出一个更好的方案,包括SoC架构层面和EDA的层面。


Synopsys现在的处理器IP产品线包括了ARC系列处理器,EV(Embedded Vision)处理器和ASIP(专用指令处理器)设计工具。这些IP和工具加上之前收购的ESL级设计工具(现在主要是virtual prototyping solution),应该算是拿了一手好牌。可惜这几年Synopsys在处理器IP市场并不算很亮眼。不过,他们在deep learning方面还是投入比较早的,主要就体现在EV处理器上。


本来在构思这个系列的时候,我的感觉是Synopsys的EV稍稍领先,主要原因是他们比较早的设计了硬件CNN加速器。不过现在看来,CEVA的方案里提供了可选的硬件加速器。这一方面说明,使用专门的硬件NN加速器是大家比较一致的选择;另一方面,大家的架构都差不多了,看起来有点无聊。下面就是EV6x的架构框图。

“EV6x处理器是异构多核架构,包括1到4个高性能视觉CPU。每个视觉CPU都包含一个32位标量单元和一个512位宽的矢量DSP,可以配置为8位,16位或32位。在4个CPU的最大配置中,处理器可提供高达620 GOPS/s的分散-收集(scatter-gather)和预测(prediction)功能。此外,EV6x处理器具有可选的CNN加速器,可提供高达800个MAC/周期性能,支持4K的图像分辨率。视觉CPU和CNN加速器可以并行执行任务,使得EV6x可以同时支持多个摄像机和视觉算法,对于诸如自动驾驶和无人机的应用非常合适。” “EV6x系列处理器是可配置的,可与Host CPU独立或并行运行。 视觉CPU和CNN加速器使用internal shared low-latency memory进行通信,并且该存储器的一部分对Host CPU可见。EV处理器支持AXI总线接口,其专门用于视觉处理的流数据传输单元(Stream Transfer Unit)可以支持和frame buffer的background通信,能够在分析当前帧的同时有效地访问下一帧。”


这里强调一下,EV处理器并没有给用户提供指令扩展的接口(Custom Instructions Extension),这一点没有CEVA XM和后面要介绍的Cadence VP6灵活。

以下是处理器的highlights:

  • Optimized for high-performance embedded vision applications

  • 100x higher performance than previous generation EV5x family

  • Based on advanced ARCv2 ISA

  • Fast, accurate object detection with a programmable convolution neural network

  • CNN-Engine delivers 6X higher performance than competitive solutions and >1000 GOPS/W

我想强调一下这一条。GOPS/W是我们目前对比不同的DNN加速方案的一个比较重要的指标。这里的GOPS,指每秒执行多少个操作operation。这里这个operation其实没有非常统一的标准,一般把一次MAC操作看作两个operation(一个乘法和一个加法),另外load,store等等也可以算作一个operation。需要注意的是这个数值具体反映的是哪一部分能耗效率。在这里应该是指加速器本身。但在实际的系统里,加速器和外界的通信,对存储器的访问等等也要消耗不少能量。不过做DNN/DL处理器的,往往会在数据上“忽略“这部分能耗。所以,具体的case还要具体的分析。从此这次ISSCC会议的DL处理器来看,能耗效率比较高的可以做到到接近10TOPS/W的水平,不过一般是有性能损失的,比如用了比较少的量化比特数。如果这个数据靠谱的话,1000GOPS/W这个能效指标还是不错的。

  • High-performance vision CPU with 512-bit wide SIMD vision DSP and 32-bit scalar CPU

  • Single- dual- and quad-core vision CPU versions

  • Supports data- and task-level parallelism

  • Runs full range of vision algorithms for HD resolutions up to 4Kp

  • Works with all host processors for vision offload

  • High productivity programming tools with MetaWare, OpenCL C, OpenCV and OpenVX runtime and kernels

总的来说,这种架构最大的好处是基本可以支持主流的Computer Vision的处理,而不是仅限于神经网络。同时,还可以实现其他算法,比如HOG,Viola-Jones,SIRF等等。同时也比较自然的实现了对OpenCV,OpenVX™,OpenCL™C以及ARC MetaWare等开发工具包的支持。再强调一遍,工具是不是好用对处理器IP来说太重要了


“完整的软件开发环境包括:OpenCV和OpenVX库,OpenVX runtime和MetaWare开发工具包以及OpenCL C向量化编译器,可以加速应用软件的开发。OpenVX框架可以在多个标量,矢量DSP和CNN加速器上自动分配内核程序,并包括针对EV6x处理器优化g过的43种标准计算机视觉Kernal程序。“

“OpenCV已经被移植到EV6x系列处理器上。MetaWare OpenCL C编译器可以实现处理的自动,全功能矢量化,用于为矢量DSP创建kernel程序。该编译器支持512位宽矢量DSP的所有可编程性。此外,专用的编程工具包提供了CNN模型加速器自动映射。支持Synopsys的HAPS FPGA原型系统,可以验证新的设计和支持早期软件开发,支持实时I/O操作,以及用户系统中EV6x处理器代码的调试。”


说实话,看了上述文字,是不是有点过于理想的感觉,希望它是真的吧。


Synopsys还给了一个面部表情识别的例子。[1]

这是训练阶段。

这是inference阶段

“当标量单元和矢量单元使用C和OpenCL C(用于矢量化)编程时,CNN加速器不需要手动编程。来自训练阶段的神经网络和权重可以被送到CNN映射工具中,完成对加速器的配置,使加速器准备好进行面部表情识别。”

“从图像传感器获得的图像或视频帧被发送到EV处理器中。卷积神经网络可能难以处理照明条件或面部姿势的明显变化,这种情况下可以通过图像的预处理使面部图像更均匀。正因为EV处理器采用异步架构,在加速器对图像进行分类的同时,矢量DSP可以对下一幅图像进行预处理:比如光线的归一化,图像缩放,平面旋转等;而标量单元可以对整个过程进行控制,包括对分类结果进行进一步操作。”

一旦实现对情绪的检测,就可以更容易地重新配置,来处理其它面部分析任务,例如确定年龄范围,识别性别和种族,,以及识别面部毛发或眼镜的存在。


另外,貌似Convolution硬件加速器是用Synopsys的ASIP-designer工具快速实现的。如果确实如此,倒是证明了这个专用处理器设计工具的价值。值得关注的还有EV处理器和Synopsys其它工具的整合,比如虚拟原型(Virtual Prototyping)这种提高研发效率的工具。


当年Synopsys收购ARC的时候,应该也是雄心勃勃。不知道EV处理器是不是能让它作为处理器IP供应商在人工智能领域打个翻身仗。Let’s see。


最后,欢迎大家多留言,多交流。

T.S.

参  考

[1] "Facial Expression Analysis with Deep Learning & Computer Vision By: Gordon Cooper, Product Marketing Manager, Synopsys", synopsys


文中图片来自synopsys

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存