化石燃料作为不可再生资源、储量有限,同时过度使用往往会造成环境破坏、温室效应等诸多问题。为了应对能源危机,许多国际组织和政府正在积极寻求解决这一问题的办法。实践证明,可再生清洁能源可有效缓解世界面临的能源趋于枯竭问题,继续让能源服务于人类的繁衍和发展。当前,全球能源正在向高效、清洁、多元化的特征方向加速转型推进,全球能源供需格局正进入深刻调整的阶段。
而随着世界从化石燃料向可再生能源转型,能源产业面临着一个问题——可再生能源不如石油和天然气稳定,因为它们取决于晴天或有风这样的天气状况。这意味着当我们完全转型为可再生能源时,可能会有供应无法总是满足需求的担忧。因此能源产业需要一种智能科技,确保供给与需求之间在任何时刻都有着平衡。这就是人工智能的用武之地。
当人工智能遇上能源问题,赛灵思灵活自适应如何加速机器学习?来看看专家 Quenton Hall 是怎么说的。本文为 Quenton Hall 的客座文章,他是赛灵思公司资深的工业、科学、视觉及医疗应用的 AI 系统架构师。
在 2014 年,斯坦福大学教授 Mark Horowitz 发表了一篇题目为“计算的能源问题(以及我们该怎么办)”的论文。这篇具有深远意义的论文,讨论了当前半导体行业所面临的最热门的、与登纳德缩放比例定律 (Dennard Scaling )和摩尔定律 (Moore’s Law) 失效相关的挑战。
如果可以的话,我想借用并改编一下 Mark 的论文标题,这样我就可以就机器学习推断应用为什么应该考虑专用硬件,分享一下我的一些观点。
首先,让我们考虑一下问题的症结所在。大约在2005 年,处理器内核时钟频率的增长进入了瓶颈。缩小工艺尺寸和降低内核电压不再像以前一样能够为我们带来优势。其根本的问题,就是计算已经达到了功率密度(W/mm2)的极限。
Versal ACAP ,赛灵思业界首款自适应计算加速平台
如果我们在同一个裸片上放置更多的内核,我们就可以在相同的功耗预算下增加运算数量,但其前提是我们还要在一定程度上降低时钟频率,以抵消额外内核所消耗的能量。AMD 和英特尔都是在 2005-2006 年期间发布了他们的首个双核处理器,这并不是巧合。然而,随着我们继续尝试增加内核的数量,我们必须考虑每个运算所消耗的能量和每个运算所需的芯片面积。此外,我们还需要确保我们能够通过 N 来有效地实现并行算法,其中 N 是内核的数量。对于所有的算法来说,这一问题的通用解决方案,或者说“计算饱和的灵丹妙药”仍然是一个难以捉摸的问题,现在最好的解决方法就是应用“自适应硬件”。
事实证明,无论您的处理器设计是使用多核 CPU、GPU 还是 SoC 实现的,在处理器级的总体功耗分布都将大致相同。所以假若我们估算出以下的情况便较为接近真实情况:
在上面的分析中,我们没有考虑的是还存在另外一个总体优化的方式,那就是专用硬件加速器优化的实现方式。我们可以对专用硬件进行优化以极高效地执行特定的功能。通常情况下,这种硬件是为了减少外部存储器访问而设计的,其同时减少了时延与功耗。我们可以对专用硬件进行优化,以便给定算法的数据运动部分使用本地化存储器 (BlockRAM、UltraRAM) 来进行中间结果的存储。
高效加速器的设计是多维度的设计问题,其中包括:
利用 Mark Horowitz 提供的数据点,我们可以考虑图像分类器在不同空间限制下的相对功耗。虽然您会注意到 Mark 的能耗估计是针对 45nm 节点的,但业界专家建议,这些数据点将继续按当前的半导体工艺尺寸进行调整。也就是说,无论工艺尺寸是 45nm 还是 16nm,与 FP32 运算相比,INT8 运算的能量成本仍然低一个数量级。
源自Bill Dally(斯坦福)Cadence 嵌入式神经网络峰会
功耗可按以下方式进行计算:
功耗 = 能量 (J) / 运算 * 运算 / s
从这个等式中我们可以看出,只有两种方法能够降低功耗:要么减少执行特定运算所需的功耗,要么减少运算的次数,或者一起减少。
对于我们的图像分类器,我们将选择ResNet50作为一个目标。ResNet 提供了近乎最先进的图像分类性能,同时与众多具有类似性能的可比网络相比,它所需的参数(权重)更少,这便是它的另一大优势。
为了部署 ResNet50,我们每次推断必须大约 77 亿运算的算力。这意味着,对于每一幅我们想要分类的图像,我们将产生 7.7 * 10E9 的“计算成本”。
现在,让我们考虑一个相对高容量的推断应用,在该应用中,我们可能希望每秒对 1000 幅图像进行分类。坚持沿用 Mark 的 45nm 能量估算,我们得出以下结论:
功耗 = 4pJ + 0.4pJ / 运算 * 7.7B 运算 / 图像 * 1000 图像 / s
= 33.88W
作为创新的第一维度,我们可以将网络从 FP32 量化到 8 位整数运算。这将功耗降低了一个数量级以上。虽然在训练期间 FP32 的精度有利于反向传输,但它在像素数据的推断时间几乎没有创造价值。大量研究和论文已经表明,在众多应用中,可以分析每一层的权重分布并对该分布进行量化,同时将预量化的预测精度保持在非常合理的范围内。
此外,量化研究还表明,8 位整数值对于像素数据来说是很好的“通用”解决方案,并且对于典型网络的许多内层,可以将其量化到 3-4 位,而在预测精度上损失最小。由 Michaela Blott 领导的赛灵思研究实验室团队多年来一直致力于二进制神经网络 (BNN) 的研究与部署,并取得了一些令人瞩目的成果。(如需了解更多信息,请查看 FINN 和 PYNQ)
如今,我们与DNNDK的重点是将网络推断量化至 INT8。现代赛灵思 FPGA 中的单个 DSP 片可以在单个时钟周期内计算两个 8 位乘法运算,这并非巧合。在 16nm UltraScale+ MPSoC 器件系列中,我们拥有超过 15 种不同的器件变型,从数百个 DSP 片扩展到数千个 DSP 片,同时保持应用和/OS 兼容性。16nm DSP 片的最大 fCLK 峰值为 891MHz。因此,中型 MPSoC 器件是功能强大的计算加速器。
现在,让我们考虑一下从 FP32 迁移到 INT8 的数学含义:
功耗 = 0 .2pJ + 0.03pJ / 运算 * 7.7B 运算 / 图像 * 1000 图像 / s
= 1.771W
Mark 在演讲中,提出了一个解决计算效率问题的方法,那就是使用专门构建的专用加速器。他的观点适用于机器学习推断。
上述分析没有考虑到的是,我们还将看到 FP32 的外部 DDR 流量至少减少四倍。正如您可能预料到的那样,与外部存储器访问相关的功耗成本比内部存储器高得多,这也是事实。如果我们简单地利用 Mark 的数据点,我们会发现访问 DRAM 的能量成本大约是 1.3-2.6nJ,而访问 L1 存储器的能量成本可能是 10-100pJ。看起来,与访问内部存储器(如赛灵思 SoC 中发现的 BlockRAM 和 UltraRAM)的能量成本相比,外部 DRAM 访问的能量成本至少高出一个数量级。
除了量化所提供的优势以外,我们还可以使用网络剪枝技术来减少推断所需的计算工作负载。使用赛灵思Vitis AI 优化器工具,可以将在 ILSCVR2012(ImageNet 1000 类)上训练的图像分类模型的计算工作负载减少 30-40%,精度损失不到 1%。再者,如果我们减少预测类的数量,我们可以进一步增加这些性能提升。现实情况是,大多数现实中的图像分类网络都是在有限数量的类别上进行训练的,这使得超出这种水印的剪枝成为可能。作为参考,我们其中一个经过剪枝的 VGG-SSD 实现方案在四个类别上进行训练,需要 17 个 GOP(与原始网络需要 117 个 GOP 相比),在精度上没有损失!谁说 VGG 没有内存效率?
然而,如果我们简单地假设我们在 ILSCVR2012 上训练我们的分类器,我们发现我们通常可以通过剪枝减少大约 30% 的计算工作负载。考虑到这一点,我们得出以下结论:
功耗 = 0.2pJ + 0.03pJ / 运算 * 7.7B 运算 / 图像 0.7 * 1000 图像 / s
= 1.2397W
将此值与 FP32 推断的原始估计值 33.88W 进行比较。
虽然这种分析没有考虑到多种变量(混合因素),但显然存在一个重要的优化机会。因此,当我们继续寻找遥遥无期的“解决计算饱和的灵丹妙药”时,考虑一下吴恩达断言“AI 是新电能”的背景。我认为他并不是在建议 AI 需要更多的电能,只是想表明 AI 具有极高的价值和巨大的影响力。所以,让我们对 ML 推断保持冷静的头脑。对待机器学习推断应保持冷静思考,既不必贸然跟风,也无需针对高性能推断设计采用液态冷却散热。
“一点灵Xi”
赛灵思官方自媒体
打造灵活应变
万物智能的世界