实现低功耗的高性能深度学习

作者:Gordon Cooper,Synopsys公司EV处理器产品营销经理

此类应用常见于使用高性能、低功耗嵌入式视觉处理器的场合,例如:使用人脸识 别技术的识别用 户的 移 动电话;识别您的手掌以及您客厅的布局以便将它们融入游戏中的增强现实或混合现实耳机;能够“观察”前方道路的自动驾驶汽车,它会随时留意行人、来往车辆或者偶尔横穿马路的动物。 在嵌入 式应 用中实 施深 度学习需要大量的处理能力以及尽可能低的功耗。 执行卷积神经网络(CNN——目前先进的嵌入式视觉应 用) 要处理能力,而低功耗能够延长电池寿命,从而改善用户体验并实现差异化竞争。 为了在ASIC芯片 或 片上系统(SoC)(例如汽车ADAS系统(图1))内实现超低的功耗以及优异的CNN图形性能,设计人员正 在转向专用的CNN引擎。

图1:运行在Synopsys公司搭载CNN引擎的DesignWare® EV61嵌入式视觉处理器上的TinyYOLO CNN图形识别功能为汽车和监视应用提供了一个对象检测和分类的例子。

图1:运行在Synopsys公司搭载CNN引擎的DesignWare® EV61嵌入式 视觉处理器上的TinyYOLO CNN图形识别功能为汽 车和监 视应用提供 了一个对象检测和分类的例子。

面向深度学习实施的芯片选择

GPU帮助开启了深度学习计算的新时代。通过工艺进步带来的性能提升和GPU强大的计算能力,这都是执行 深度学习算法所需要的。然而,GPU最初是为绘图而设计的,后来才转用于深度学习,它的模具尺寸比较 大,功耗比较高,这限制了其在对功耗敏感的嵌入式应用中的适用性。 

矢量DSP是一种规模非常大的指令字SIMD处理器 , 它过去被设计成通用引擎来执行 常规编程的计 算机 视 觉 算法。矢量DSP能够并行执行乘法累加 (MAC) 运算 , 这使其可以比GPU更高效地运行执行 CNN 图形所 需 要 的二维卷积。向矢量DSP中添加更多的MAC将使其能够在每个周期内处理更多的CNN并提高帧速率。通过向矢量DSP中添加专用CNN加速器可以实现更高的功率和面积效率。 

然而,通过把专用而灵活的CNN引擎与矢量DSP配对 , 可以实现卓越效率 。 专用CNN 引擎可以支 持所有常见的CNN操作 (例如: 卷积,合并(pooling), 单元化(elementwise)) , 而不仅仅是加速卷 积;而且专用 CNN 引擎还能够提供超小面积和功耗,因为它是为这些参数定制设计的。在 视频图像的预处理 和后处理中仍然需要矢量DSP。 

针对内存和寄存器重用而优化的专用CNN引擎 , 与提高CNN引擎每秒可执行的 MAC运算的 次数同样重要。 如果处理器没有足够的带宽和内存架构为MAC馈入信息 , 则系统将无 法实现理想性能。 可以对专用 的 CNN引擎进行优化 , 以便在诸如ResNet、Inception、YOLO和MobileNet 等非常先进的网络中实现理想的内存和寄存器重用。 

硬连线的ASIC设计可以实现更低的功耗。当业界就相关标准达成统一意见时 , 硬连线的ASIC 设计就可 能成 为所期待的解决方案。例如 , 在相关标准确定之前 , 首先可以在可编程设备上实现采用H.264的视频压缩 , 以 后再在ASIC上实现。虽然CNN已经成为嵌入式视觉处理领域的非常先进的标准 , 但是CNN的实施仍在继续发展之 中 , 并且仍然是一个不断变化的目标 , 这要求设计人员实施灵活的、面向未来的解决方案。

如何在形成硅片之前测量系统内功耗

对于大多数功耗敏感型的嵌入式视觉应用而言 , 搭载专用CNN引擎的视觉处理器可 能是能否满 足设计功 耗 预算的关键区别因素。选择专用CNN引擎似乎是一件理所应当的事情 , 但如何在芯片实现之前就测量 出 功 耗呢?

我们假设一项应用的性能阈值对功耗预算有严格要求,例如电池供电的物联网 智能家居或运 行面部识别 功 能的移动设备。根据所需要的帧大小、帧速率和其他参数的不同,面部识别 可能需要数百 GMAC/s的嵌入 式视觉处理能力。ASIC或SoC设计现在必须寻找到一种嵌入式视觉解决方案 , 其能够在设计的 功耗预算内 执行该网络 – 比如说 , 功耗预算为几百mW。

遗憾的是,对不同的视觉处理器IP进行比较并不是一件简单的事情。这些刚刚崭露头角(bleeding edge)的 IP解决方案通常还没有形成芯片,而且每一种实现方式都互不相同,因此很难计 算和比较不 同IP选项之间 的功耗或性能。在比较CNN解决方案时没有可以使用的基准测试标准。FPGA原型平台或许可以提供准确的基准测试结果,但并不能提供准确的功耗估计。

计算功耗的一种方法是运行基于RTL或Netlist的仿真来捕获所有逻辑的翻转。利用设计的布局 , 这些信息可 以提供很好的功耗估计。对于较小规模的设计 , 这种仿真可以在几个小时内完成 (例如,在嵌入式RISC 内核 上运行CoreMark或Dhrystone)。对于大型设计 , 这种仿真运行较为缓慢。 对于需要高 帧速率的较大 CNN图 形,一次模拟可能需要几周时间才能达到稳定状态来测量功耗。 如果IP供应 商跳过此类费时费力 的功耗测 量 , 转而采用较小规模的仿真模型通过一些捷径来估计功耗 , 则会存在真正的风险 , 从而将问题推向下 游交 给SoC供应商 , 让他们在IP供应商的功耗分析声明上签字了事。

Synopsys的ZeBu 服务器(图2)为IP开发人员和SoC设计人员分析 及测量功耗提供了巨大 的便利。 ZeBu服 务器是业界速度领先的仿真系统,可以用于完整SoC设计 , 支持多种先进的使用模式 , 包括电源管理验证、全面调试和Verdi集成、带虚拟原型和架构探索的混合仿真 , 以及优化。 ZeBu有额外 的功能可以确定所有触发器的翻转率,然后将其反标到真实的硬件上 , 以准确计算功耗。 Synopsys使用该功能可以确保为其嵌入 式 视觉处理器提供优异的精确程度的功耗估算。SoC设计人员可以使用ZeBu来优化系统中所有元件的功耗。这可以帮助把运行RTL仿真进行功耗仿真的时间从数周缩短到数小时。

图2:Synopsys的ZeBu服务器可以用来精确估算SoC内部元件的功耗以及整个SoC设计的功耗。

图2:Synopsys的ZeBu服务器可以用来精确估算SoC内部元件的功耗以及整个SoC设计的功耗。

一旦您拥有了一套准确而有效的方法来测量应用软件的功耗,您就可以对不同的设计配置进行取舍,以更大限度降低功耗。这些取舍工作可以通过Zebu功耗流程(power flow)在一天之内重复 多次进行迭代和 优 化。

降低系统功耗的最初步骤

对于一个给定的工艺节点而言 , 削减功耗的最简单方法之一,首先是降低设计的频率。其他降低功耗的技术还包括采用近阈值逻辑 , 也即逻辑电 路 运行在较低电压水平上 , 从而大幅度 降低开关晶体管所需要的功率。 尽量减小 外部总线的带 宽也有助于 降 低功耗。外部总线的活动越少, 消耗的电力就越少。对于嵌入式视觉应用而言 , 增加内存容量将减少带宽 , 从 而降低功耗 , 尽管这会 增加设计的总体面积。 设计师还可以利用针对CNN 图形的压缩技术来 尽量减小 带宽 并降低功耗 , 因为这可以减少计算量和内存使用量。

更少的功耗,更高的TMAC/s

低功耗要求并不限于采用小型CNN图形的设计。例如,自动驾驶车辆也可能需要较高的嵌入式视觉性能 -- 一台或多台以60 fps运行的800万像素摄像机可能需要20至30 TMAC/s的计算能力 -- 所有这些 都需要 在 尽 可能低的功率预算内实现。请注意,这些TMAC/s要求也可能被列示为每秒万亿次运算(TOP/s)。 由 于 一个MAC循环包含两次运算(一次乘法运算,以及一个累加运算),所以,MAC/s在转换 成Ops/s应当乘 以二。

对于这样的应用而言,只有当其能够扩展到更高级别的性能时 , 为实现超低功耗而采用专用CNN 才有所裨 益。嵌入式视觉处理器(例如Synopsys的EV6x系列)以两种方式解决了这一挑战 – 首先在每个CNN 引擎 内扩展MAC的数量 , 然后在总线结构上扩展多个CNN引擎实例 (例如 , 采用量身定制的NoC或标准的AXI)。 图3的顶部显示了搭载880 MAC CNN的EV61处理器 , 适用 于像低功 耗物联网智能家 居设备 这样的小 型应 用。EV61可以集成880 MAC、1760 MAC或3520 MAC CNN引擎 , 以满足 特定的应用 需求。对于需要超高性能的应用 , 可以在AXI总线上或者量身定制的高性能NoC结构上实例化多个EV处理器(图3的底部),以便 在嵌入式应用中为更多的MAC提供超高效的性能/功耗特性。

图3:Synopsys的DesignWare EV6x处理器可以实施一个880 CNN引擎,以实现更小的设计,并在AXI总线上提供更高的CNN性能。DesignWare EV6x处理器目前已经被部署在多种低功耗、高性能的应用中,包括消费者面部识别以及大型汽车应用等。

图3:Synopsys的DesignWare EV6x处理器可以实施一个880 CNN 引 擎,以实现更小的设计,并在AXI总线上提供更 高的CNN 性能。 DesignWare EV6x处理器目前已经被部署在多种低功耗、高性能的 应 用中,包括消费者面部识别以及大型汽车应用等。

小结

为了在ASIC或SoC中实现超低功耗并同时提供卓越卷积神经网络(CNN)图形性能,设计人 员 正在 转 向 专用CNN引擎。在诸如ZeBu服务器这样的大规模原型系统中实施一项设计,与依赖IP提供商提供的粗略(back-of-the-envelope) 估算相比较,前者是一种更精确的方法,可以确定并比较 嵌入式 处理器 之 间的 功 耗。一套紧密集成的处理器和CNN引擎,例如DesignWare EV6x 嵌入式视觉处理器系列,能够提 供经 过 验 证的、可测量的效率、性能和功耗。