中文 英语

使用fpga进行AI

标准fpga在人工智能方面有多好,基于fpga的专用设备与它们有何不同?

受欢迎程度

人工智能(AI)和机器学习(ML)正在以超过摩尔定律的速度发展。事实上,它们现在的发展速度比硅的设计速度还要快。

该行业正在寻找所有可能提供的设备,具有必要的精度和性能以及一个可以持续的电力预算。fpga很有前途,但它们也有一些必须克服的重大问题。

图形处理单元(GPU)使机器学习(ML)成为可能。与CPU相比,它提供了更强大的计算能力和更快的内存连接。数据中心迅速将其纳入到产品中,GPU供应商开发了软件来帮助他们的硬件得到有效使用。

Achronix战略和规划高级总监迈克•菲顿(Mike Fitton)表示:“gpu的适用性一直是ML发展的一个成功案例。“它们一直是推动最初开发和部署的引擎。这是由许多因素解释的,包括高浮点性能和强大的高级工具生态系统的易于开发。”

但是gpu是非常耗电的设备,这对于数据中心和边缘设备来说都是一个大问题。

AI算法的规模和复杂性一直在增长,而GPU的开发却未能跟上步伐。“gpu在高度常规的SIMD处理上表现良好,”Fitton补充道。“另一种选择是FPGA,它本质上是并行的和硬件可编程的,这些设备擅长于需要大量并行计算操作的特殊工作负载。”

fpga显著增加了并行计算元素的数量,可以将其置于更优化的配置中。它们将少量的分布式内存集成到结构中,使内存更接近处理。Synopsys高级产品营销经理Joe Mallet表示:“fpga开始在这一领域获得吸引力,因为它们可以比GPU做更多的处理。”“更重要的是,他们只需要四分之一的电力预算就能做到。因此,FPGA有史以来第一次被认为是低功耗的解决方案。”

fpga最重要的方面是其灵活性。西门子业务部门Mentor的战略营销经理戴夫•利德巴赫(Dave Lidrbauch)表示:“这体现在两个方面。“首先,它们包含许多不同类型的资源,包括硬核、IP、内存和可编程结构的LUT结构,这些结构非常适合许多神经网络(NN)架构。其次,随着时间的推移,对整个芯片或部分芯片进行现场重编程的能力已经变得越来越好。”

此外,fpga是可扩展的。Synopsys的Mallet补充道:“如果你的算法比GPU能处理的要大,或者适合FPGA,你也可以把FPGA串在一起。”“所以你可以扩展到非常大的算法或处理工作。你可以在一个子卡或服务器的每个插槽上放置一个、四个甚至八个或更多的fpga,并且能够以这种方式扩展。”

然而,由于fpga没有提供软件开发人员所习惯的自然编程模型,因此受到了影响。此外,它们并不能真正解决电力问题。Mentor的Lidrbauch说:“FPGA相当耗电。“每个设备上都有很多资源,根据算法在设备上的映射方式,其中许多资源可能不会被使用。您可能在ASIC中发现的细粒度功率域在FPGA上通常是不可用的。因此,如果我正在制作一个与英特尔处理器耦合的FPGA加速器,我将向云提供商支付设备成本和所消耗的功耗。如果我能减少电量,就能降低成本。”

这似乎是整个行业的共识。“FPGA在AI应用的性能和灵活性方面的优势是众所周知的。编程模式一直是最大的挑战,”Silexica产品副总裁Jordon Inkeles说。“编程模型的挑战不会被单一的流程解决。它将通过与开发人员的专业知识相匹配的流程组合来解决。HLS提取了硬件,使软件工程师能够成功,但直到最近才出现了来自Silexica的SLX FPGA等工具。在此之前,大多数HLS用户还是硬件工程师。HLS将为软件开发人员提供利用FPGA所需的灵活性。然而,TensorFlow和Caffe仍将处于更高的抽象级别,利用ML框架和库为数据科学家加速他们的算法。”

这两种设备都不是为人工智能设计的,而且在数据中心之外,这两种解决方案都太耗电且昂贵。Flex Logix首席执行官Geoff Tate表示:“一年后,没有人会用gpu或fpga来设计任何大批量的推理应用程序。“定制芯片将提供更高的单位吞吐量。客户要么有固定的美元预算,要么有固定的电力预算,他们希望在这些预算内得到更多。fpga和gpu是一个很好的中间点,但从现在开始,它们不会是最好的解决方案。”

新的方法是必要的。Arm机器学习集团副总裁丹尼斯•劳狄克(Dennis Laudick)表示:“我们看到fpga被用于机器学习,特别是在人工智能的早期阶段,当时未来的硬件需求非常不明确。”“随着机器学习技术和市场的稳定,我们看到整个市场和所有设备类别对优化机器学习解决方案的需求。随着兴趣的增加,我们也看到需求的增加。例如,有些只需要不频繁或低需求的ML,成本对他们来说是非常关键的。对于其他拥有GPU但无法证明NPU(神经处理单元)的额外硅面积的人来说,他们可以寻求具有改进ML支持的GPU。最后,当人们需要更高的性能或电源效率很重要时,他们通常可以求助于专用的NPU。然而,即便如此,他们也有各种各样的需求,这就是为什么不同的市场需要不同的设备。”

需要配置什么
在不断发展的市场中,可重构性仍然是一个关键要求。Mallet说:“市面上有很多针对音频、图像等的算法。“你基本上看到的是一堆乘法累积(mac)和内存以各种方式捆绑在一起。当你看到专门为这些类型的引擎开发的ASIC或soc时,你会看到非常相似的结构。你会看到mac与互连捆绑在一起,在基本级别上有一大块内存。在内存数量、I/O类型以及互连方式方面存在差异。在最基本的层面上,它们都是这样的。围绕它的内容将会改变。”

大多数芯片开发商不会公布他们的设计细节,但Flex Logix已经准备好了谈论他们的设计。Tate解释说:“我们有64个mac集群,能够以INT8的一半速度进行INT8xINT8或BF16xBF16。”重构在2微秒内完成。获得每美元或每瓦最大产量的方法是硬化一些东西。这样你就能获得更好的吞吐量,尽管这意味着它的可编程性会更低,但效率会更高。”


图1:Flex Logix AI芯片内部。源Flex Logix

这是一个非常不同的FPGA。“这是一个被设计成推理引擎的FPGA,”Tate说。“你看到的查找表是用于实现状态机的,它在给定层执行期间控制mac的操作。数据流将被来自SRAM的数据所主导,这些数据将通过可编程互连连接进入MAC集群,然后进入激活和查找表,然后返回到SRAM。这是一个专用的数据流路径。您还需要状态机来做一些事情,比如为输入增加地址寄存器,为输出增加地址寄存器,计算已经运行了多少个周期,并知道何时停止。它们相当简单,但查找表的速度相当快。”

分布式内存非常重要。Microchip Technology通信和人工智能/机器学习部门负责人尼拉姆•鲁帕雷利亚(Nilam Ruparelia)表示:“它需要一个分布式内存来保存中间结果和权重、求和产品等。”“AI是理想的结构,适合FPGA,因为它需要连续并行处理。FPGA的布局看起来非常相似,计算块中穿插着内存。fpga可以提供大规模的并行操作能力,mac。方程或多或少是静态的。权重和输入输出一直在变化,所以你不需要处理器。你只需要计算能力。”


图2:一个神经网络的例子。资料来源:Microchip Technology

这有助于解释fpga的持续强劲增长。“有了FPGA结构,我们有一个很大的优势,我们可以现场升级,”Ruparelia补充道。“我们可以加载全新的神经网络,你可以改变逻辑。使用ASIC,你可以改变神经网络中的方程,但底层引擎保持不变。构建一个能够同时覆盖不同网络的专用集成电路是非常困难的。我们看到一些应用需要同时操作多个神经网络。”

细节很重要。“当以机器学习为目标时,细微不同的架构选择可能会对性能产生巨大影响。例如,在构成ML的基本矩阵和向量数学运算中,有大量的数据局域性可以被利用,”Achronix的Fitton说。“数据局部性表现为共享权重,以及在相邻计算之间重用激活数据。通过将存储器和处理元素紧密集成,数据移动最小化,从而降低了功耗。性能得到了提高,因为路由资源不会被用于连接内存和MAC。这种优化方法在使用矩阵数学的相邻应用程序(如波束形成和雷达)中有额外的好处。”

性能是什么意思?
关于人工智能处理器性能的讨论将在以后的文章中进行,但过去对处理器性能的基本认知正在开始改变。泰特说:“不久以前,每个人都在谈论TOPS的表现。“但拥有更多的TOPS与拥有更多的吞吐量之间甚至没有松散的关联。”

为基准性能进行设计可能存在问题。“软件将继续快速变化,但你不能为还不存在的东西设计,”Tate补充道。“你必须为你所知道的最有代表性的工作量进行设计。”

性能转化为利用率。“你希望尽可能高效地使用MAC块,”Microchip Technology高级技术人员工程师和架构师杰米·弗里德(Jamie Freed)说。“如果你每个时钟周期都使用它们,那将是理想的。那就是100%的效率。但这是不现实的,它的效率通常在50%到80%之间。一些网络比其他网络有更多的层,其中一些层可能是不同的。如果你做了很多卷积,那么你就使用了很多MAC块,你会非常有效地使用它们。如果你将不同层和非线性函数混合在一起,这是通常发生的情况,那么你将使用更多的逻辑,而不是那么多的MAC块。”

fpga相对于固定处理器仍有优势。Fitton说:“它们在支持新的、正在出现的需求时具有优势,在这些需求中,处理资源可以根据新的算法需求、修改的数据流和可变的数值精度灵活修改。”“一个关键的要求是优化边缘处理的每瓦TOPS。这是通过在优化但灵活的乘法器宏中联合优化处理,以及任意宽度算术的细粒度可编程性来实现的。虽然fpga可以针对通用加速,但可以调整其架构以最大化性能,同时最小化成本和功耗。”

菲顿指出了三个需要创新的领域:

  • 高性能的接口:把大量的数据输入芯片。
  • 高效的数据移动:有必要在芯片上移动数据。
  • 高效的计算:以有限的成本和功率处理数据。

fpga的障碍
采用基于fpga的处理器的最大障碍是编程模型。“大多数在云端工作的人都是软件开发人员,他们并不真正理解时钟是什么,”Mallet说。“他们知道什么是中断。那么如何弥合这种差距呢?您必须有一个用于FPGA编程的IP库,以及供它们使用的标准API调用。如果您不开始标准化一些标准,或者采用一些现有的标准,那么它将使软件人员更加难以利用。当他们开始关注API的标准化时,最终目标是让软件开发人员更容易地利用不同的块,就像它只是一个库一样。”

为了解决这个问题,资金正在投入。Fitton表示:“fpga的一个发展领域是相对较低水平的软件工具。fpga通常使用低级RTL (VHDL或Verilog)编程,但随着高级工具和框架的出现,这种情况正在发生变化。投资的例子可以通过特定于供应商的框架看到,比如Intel One API,或者第三方工具,比如Mentor的High Level Synthesis (HLS),或者针对ML的目标框架,比如来自Mipsology的框架。这些举措的共同目标是利用可重新编程硬件的固有灵活性,同时提供更抽象的设计入口方法。”

人工智能为HLS增加了一些额外的皱纹。“十年前,HLS对什么可以合成,什么不能合成有很多非常严格的规定,”Lidrbauch说。“你如何确定哪些部分最适合做硬件,哪些部分应该继续做软件?”更复杂的是,我如何弄清楚这两者应该如何沟通?它们是否应该共享内存,是否应该使用数据总线或串行总线在它们之间直接通信?这对软件开发人员来说是一个真正的问题。这一领域将会有很多发展,真正推动人工智能的发展。硬件架构对于实现灵活性很重要,但HLS或Silexica等工具的下一个复杂级别可以识别部分C代码的意图——这些将是人工智能的启用元素。”

有关的故事
定义AI性能
在讨论人工智能时,性能意味着什么?许多人都在研究这个问题,但还没有形成统一的思路。
FPGA知识中心
关于fpga的头条新闻、特别报道、视频、博客等
FPGA设计权衡越来越困难
随着芯片尺寸的增长,优化性能和功耗需要一系列新的选项和方法的改变。
如何集成嵌入式FPGA
在SoC中添加eFPGA比仅仅添加加速器要复杂得多。



3评论

InAccel 说:

好文章!
的确,FPGA广泛采用的主要障碍是编程的复杂性。

康斯坦丁 说:

由于自然原因,FPGA无法达到与GPU/TPU媲美的性能水平。它们的频率和灵活性是原来的几倍,而且成本也很高。

fpga只能在非常狭窄的领域发挥作用
-低精度推断(int8或二值化)
-尖端应用,DNN引擎与相机/RF接口共享FPGA
-低延迟应用程序,其中单个请求推断时间比总吞吐量更关键

刘明亮 说:

信息的文章。好工作。

多年来,FPGA的编程和运行合成一直被广泛认为是一个重大挑战……

精通Verilog的嵌入式工程师的工作保障!

留下回复


(注:此名称将公开显示)

Baidu