首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

浅析图像视频类AI芯片的灵活度

兼容性和灵活度是芯片快速杀入新市场、扩大市场范围、快速适应客户需求,减少开发周期的关键特性。目前深度学习的网络结构已走向了多样化,出现了大量的算法变种、更多的算子和复杂层次结构,这对芯片的支撑灵活度能力提出了挑战。本文通过列举目前图像视频类的典型算法、典型网络结构、典型平台和接口等方面来分析AI芯片的灵活度范围。

目前,DNN加速器会收敛于三类形态,第一类是支持通用运算的DSP或者GPU,它既可以实现神经网络运算,也可以实现其他数学运算或者通用程序,例如图像处理和语音处理,其典型特征是具有通用指令集和支持类C编程,如OpenCL;第二类是适用于通用数学运算的可编程架构,控制流程往往收敛于图计算表达或者数据流图,其特点是可以支持通用数学计算算子,也称作计算原语;第三类是针对若干典型神经网络结构设计的专用处理器或加速器,具有很高的能效,但没有考虑处理其他类型的运算。要了解神经网络的基本算子,可以参考“从NNVM和ONNX看AI芯片的基础运算算子”。第一类和第三类往往具有一个数量级甚至两个数量级的性能差异。而一般做到第二类才能更容易的支持灵活的训练算法(而不仅仅是推理或单一训练算法)。各个类别的典型代表如表所示。

表: 由最灵活到最不灵活的三类加速器

(在此不区分芯片还是IP)

注1: 具体可以参考唐博士的“AI/ML/DL ICs and IPs”列表中“Traditional IP Vendors”部分。

注2: 由GraphCore公开资料推测。

值得注意的是,三者没有明显的界限,厂商产品可能迅速更新,扩充灵活度后,第三类也会扩展成前两类。另外,国内厂商的设计第三类较多,但也有前两类设计出现,此处未列出国内的设计。

由于篇幅受限,本文仅讨论灵活度最低的一个类别,即仅用于神经网络的加速器。另外本文只考虑推理(Inference)而不考虑训练,主要关注视频(图像)类应用。此处,我们将结合现今CNN的各种网络拓扑结构和参数使用情况,提供一个灵活度参考表。

1. 卷积算子的参数覆盖需求

二维卷积操作是深度学习中最重要的操作,具有平移不变性,且相比MLP而言具有很少的参数量而不易训练过拟合。这使得深度学习之所以取得图像处理性能的飞跃提升的关键。卷积网的参数较多,总结起来如下表所示。

2. 池化算子(Pooling)的参数覆盖需求

虽然现在图像的缩小由原来的池化操作逐渐被卷积阶段的Stride操作代替,但很多系统中还是存在池化。因此支持池化还是很重要的。

3. 非线性函数支持

一般而言,非线性函数主要用于激活函数或者锐化。激活函数往往采用ReLU,对于一个通用计算机,实现其他激活函数并不难,而对于定点的神经网络芯片而言,位宽问题和运算量会导致无法直接实现这些函数,因此往往采用查找表或者近似函数实现。

4. 后续处理层支持

后续处理层的主要作用是根据卷积网提供的特征进行图像/视频的识别、检测、图像描述、视频描述等。主要采用MLP或时序类神经网络结构实现。

5. 归一化层、特殊层和特殊运算支持

Residual connections和Aggregated Transforms结构示意图

"S. Xie et al. Aggregated Residual Transformations for Deep Neural Networks. CVPR’17."

C.ReLU结构示意图

"K. Kim et al. PVANET: Deep but Lightweight Neural Networks for Real-time Object Detection. arXiv'16"

FPN结构

传统的方法 (a).用图片金字塔生成特征金字塔,(b).只在特征最上层预测,(c).特征层分层预测,(d).提出的FPN方法从高层携带信息传给底层,再分层预测

"Lin et al. Feature Pyramid Networks for Object Detection. CVPR’17"

6. 训练框架与软件工具链支持

目前深度学习加速器会对主流框架生成的网络结构进行再加工。因此再加工的程度就导致的性能区别。

7. 图像预处理与后处理能力

因为大部分应用都是图像应用。如果直接对接摄像头,那么预处理是必需的。

8. 用户接口与内存接口

9. 用于Benchmark的网络结构

10. 宿主系统与程序

一般而言,深度网络本身并不能构成系统。因此根据业务需求,需要考虑如何将它集成到宿主程序中,与其他部分程序有机结合起来。例如嵌入式深度学习方案Nvidia Jetson TX2采用Linux+Python+Framework作为基础平台。如何让芯片与程序的其他部分互联互通是个需要考虑的问题。在此例举几个比较典型的系统示例。

视频类深度学习芯片主要用于行人检测、车辆检测、头部面部检测、人脸识别、障碍物检测等场合。如果上述功能基本都能兼容,那么这个芯片在这些应用上应该可以获得不错的使用体验。另外,值得特别注意的是,系统精度会在一定程度上影响识别性能,例如8b定点的芯片和16b浮点相比,对于复杂任务可能会有2个百分点以上的识别率下降,具体下降情况需要根据网络结构和任务加以细致考量。值得注意的是,图像检测识别算法中的非神经网络处理(后处理)可能比较复杂。例如SSD,有着很复杂的后处理步骤,包括通过计算出来的偏移值进行边框修正,概率排序和阈值过滤,Softmax归一化,求最大值所在类别,非极大抑制(多个重合选框的合并),矩阵的变形等。因此一个神经网络加速芯片也需要具备足够的通用处理能力才能有效解决目标检测识别问题。

综上,本文简述了用于推理的各项需求指标,对于系统集成商,在选择芯片时,可以关注是否支持上述功能,并比对芯片的Benchmark网络的性能,从而选择合适的芯片。对于芯片/IP核设计团队,可作为兼容性检查使用。

希望本文能对神经网络测试标准化和设计标准化起到借鉴作用。由于此文涉及面较广,有可能不够准确,在此仅供抛砖引玉之用,各位如见到有错误和不足之处请务必留言指出。

- END -

作者简介:

题图来自网络,版权归原作者所有

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180112G0Y7VD00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券