处理器IP厂商的机器学习方案 - Synopsys
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