如何优化边缘机器学习的功耗和性能
共 1 个回答
人工智能和机器学习(AI/ML)发展至今,早已逾越了“纸上谈兵”的范畴。从消费产品到金融服务再到制造创新,其在众多行业的实践中不断汲取经验,发展迅速。知名市场研究和咨询机构
Tractica近日针对“深度学习芯片组”进行了分析和预测,报告结果显示,机器学习 (ML)
算法正被广泛运用于训练神经网络的企业云系统,而诸如汽车、无人机和移动设备等边缘设备的 AI/ML 芯片组更是以三位数的速度持续增长(图
1)。AI/ML已然成为这些领域欲发挥价值的关键因素。
图 1:AI/ML 边缘设备上的市场数据
这样的市场增速意味着企业已经看到了针对功耗、性能和面积(PPA)进行优化的边缘硬件架构的爆炸式增长。ML 逐渐成为主流技术,而硬件设计团队却迎来了难题,他们往往无法在一次迭代中完成 AI/ML 系统的优化,有时不得不因为 RTL 设计周期过长而带来的成本压力而放弃最初的尝试。
将 AI/ML 转移到边缘的重点在于定制化设计,这些设计必须能同时满足低功耗和高性能两种关键要求。此外,如果传统 RTL 设计流程无法迎合紧迫的上市时间窗口,设计团队就必须改用新的设计和验证流程。
优化 ML 算法需要多次运行设计流程(图 2):
●算法工程师在机器学习框架(如 Tensorflow 或 Caffe)中设计和验证 ML 算法。 ●该步骤通常包括将算法从浮点数量化为定点,同时进行修剪,以降低复杂度。 ●接下来,硬件设计人员将实施算法,这一步需要构建足够复杂的硬件来满足 PPA 要求。
其中由于一些系统过于复杂,如果不先行构建则无法进行分析,对于手动编码的 RTL 设计流程来说这种操作是不切实际的,因为生成一个工作设计可能需要三到六个月的时间,再加上算法和硬件领域持续不断的变化,许多团队很可能会因此放弃最初的硬件尝试。
图 2:机器学习的设计流程
要为 ML 推理引擎构建定制化的硬件,设计团队需要面对一项重要挑战:牺牲功耗以换取可编程性。这在很大程度上归因于用于构建卷积神经网络 (CNN) 的网络逐层行为。CNN 对后期层的存储权重需求急剧增加,而特征图谱存储需求在早期层中最大,在后期层中却大幅降低。另外,在后期层中,准确实现网络所需的精度也趋于降低。
CNN这些存储和精度要求,导致“一刀切”的硬件实现方式效率低下。通用型解决方案可以提供较高的性能和较小的面积,但它是通过“平铺”ML
算法,并与系统存储器往返传递特征图谱的数据来实现的,这无疑会引起功耗的大幅增加。这些通用型解决方案为了获得可编程性还有可能牺牲一部分片上计算资源。
获得更高的功耗效率可能需要定制两个或多个硬件架构,以满足网络中不同层的存储器存储、计算需求和精度要求。这些计算引擎必须能够协同工作,需要复杂的片上存储器架构以及大规模并行性,还必须能访问高带宽系统存储器。
例如,网络的早期层可以映射到融合层架构或多通道滑动窗口架构。这些架构无需从片外存储器到系统存储器,也可以允许计算网络前几个层中的两层或更多层。由于它们仅在一个较小的特征图谱数据“窗口”上运行,因此需要的片上存储量相对较少;而对于后期层,多通道处理器件
(PE) 阵列架构则是一种兼顾功耗和性能的有效选择。
构建自定义硬件解决方案要求设计人员尝试不同精度的架构组合,在功耗、性能和面积之间找到最佳平衡,这在 RTL 中很难实现,因此,高等级逻辑综合 (HLS) 成为很多设计人员的最佳解决选择。
Mentor的Catapult HLS 能够使用 C++/SystemC 快速创建和验证复杂的硬件架构。HLS 使用位精度的数据类型在
C++ 仿真中对真实的硬件精度进行建模。这样一来,设计人员不仅可以在 C++/SystemC 中为 ML
硬件的逐位行为建模,还可以在几分钟内验证 ML 设计,而在 RTL 仿真中,这通常需要几小时甚至几天的时间。
Catapult HLS能够为设计团队提供的ML 硬件设计功能特性包括:
●自动存储器分区:用于创建ML引擎所需的复杂片上存储器架构,以实现性能目标。这些优化能够将 C++ 算法中的数组转换到并行运行的多个存储器内。 ●接口综合:可以将设计接口上的数组自动转换到高性能的 AXI4 主存储器,从而使核心硬件能够透明地访问系统存储器,这是抓取 ML 算法所用的数百万权重所需的。 ●架构代码更改和 HLS 优化:能够产生具有不同 PPA 特征的独特硬件。在架构优化过程中的一个重要步骤就是能够以交互的方式分析和评估这些权衡方案。 ●功耗优化:该工具可以自动优化其 RTL 输出的功耗,还会报告设计人员每个步骤的功耗,以便他们能够快速确定其设计的可行性。
架构优化流程的最后一步,可以将使用位精度数据类型设计的可综合 C++ 插回到 ML 框架(例如 TensorFlow),以便算法设计人员能够对照原始算法进行验证。
将机器学习转移到边缘对功耗和性能有着极高要求,曾经的解决方案无法满足现实所需:CPU 速度太慢,GPU/TPU
过于昂贵且功耗过高,连通用的机器学习加速器也可能被过度构建,这些都是横亘在最优功耗面前的重重障碍。为了满足下一代设计需求,在构建新的低功耗/高效存储器的硬件架构时采用HLS设计和验证流程,不失为实现生产计划的“最佳帮手”。
作者:李立基,Mentor,A Siemens Business亚太区技术总监 责编:Amy Guan
‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ END ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧
这样的市场增速意味着企业已经看到了针对功耗、性能和面积(PPA)进行优化的边缘硬件架构的爆炸式增长。ML 逐渐成为主流技术,而硬件设计团队却迎来了难题,他们往往无法在一次迭代中完成 AI/ML 系统的优化,有时不得不因为 RTL 设计周期过长而带来的成本压力而放弃最初的尝试。
认识挑战
要为 ML 推理引擎构建定制化的硬件,设计团队需要面对一项重要挑战:牺牲功耗以换取可编程性。这在很大程度上归因于用于构建卷积神经网络 (CNN) 的网络逐层行为。CNN 对后期层的存储权重需求急剧增加,而特征图谱存储需求在早期层中最大,在后期层中却大幅降低。另外,在后期层中,准确实现网络所需的精度也趋于降低。
潜在的架构解决方案
更优的设计和验证流程
架构优化流程的最后一步,可以将使用位精度数据类型设计的可综合 C++ 插回到 ML 框架(例如 TensorFlow),以便算法设计人员能够对照原始算法进行验证。
第5季上传资料活动,每月最高1000元京东卡(按月通过审核数量计算发放):
(1)每月上传40-100(含)个文档,奖励30元京东卡;
(2)每月上传101-150(含)个文档,奖励70元京东卡;
(3)每月上传151-200(含)个文档,奖励120元京东卡
(4)每月上传500+个文档,奖励200元京东卡;
(5)每月上传1000+个文档,奖励500元京东卡;
(6)每月上传2000+个文档,奖励1000元京东卡;
↓↓↓点击阅读原文,参加活动!
共 1 条
- 1
86问题数 60回答数