登录注册   忘记密码

AI是FPGA企业苦等的杀手级应用吗?

1984年,Xilinx的联合创始人Ross Freeman发明了FPGA。在过去的34年中,这类型产品取得了巨大的成功,甚至可以称得上是有史以来最重要的电子设备之一。但根据FPGA从几十个到数百万个LUT的演变的历史来看,FPGA并没有成为任何应用的最佳解决方案。


别误会我的意思。FPGA在灵活性方面做得非常好。FPGA通常可以做其他设备无法做到的事情,缩小其他不兼容协议之间的差距,动态重新配置以适应不断变化的要求和环境,并暂时替代尚未创建的ASIC和ASSP。如果你的应用需要FPGA这种灵活性,那么用其他任何东西都替代不了。


但所有这些灵活性要付出代价——价格,功耗和性能。最佳估计是所有这三个因素都比优化的专用硅要差十分之一。这意味着,如果你使用FPGA设计应用程序,并且你的应用程序是成功的,随着时间的推移,一旦你的要求不再变化并且确定了设计和架构,你将会考虑用更便宜、更快和更省电的东西取代FPGA。


对于许多应用程序,永远不会有这一天。在推动不再使用FPGA的时候,又会出现新的要求再重复这一过程。新设计需要新的FPGA并经历自己的成熟过程。因此,FPGA已经有许多可以存在数十年的应用领域,即使它们永远不是最佳的设计解决方案。


这对FPGA公司来说是一个问题,因为这限制了它们的成长潜力。他们的产品永远不会进入“摇钱树”阶段,大量订单并不会有什么作用。相反,FPGA厂商一直在争取赢得新的席位并重新赢得旧席位。他们永远在不断变化的情况下为广大客户提供重要的支持,只是为了保留他们已经赢得的业务。几十年来,一直在为思科这样的客户提供出色的芯片和服务的FPGA公司,在一次新的设计迭代中可能会Game Over,当竞争对手闯入并抓住你辛苦挣来的客户时,你会发现自己被踢到了路边。


因此,FPGA公司一直在追逐难捉摸的“杀手级应用”——FPGA最适合的应用,一些ASIC或ASSP没有机会介入并在市场爆炸时轻易地抓住资金。但要求很棘手。您需要找到一个问题,即FPGA的灵活性是解决方案中必不可少且持久的部分,并且专用/专业硬件无法被设计用来更好或更便宜地完成工作。这是一个很高的目标,但这从未阻止他们尝试。


现在,业界对人工智能应用的FPGA有很大的关注。 Xilinx和英特尔都在宣传FPGA作为卷积神经网络(CNN)深度学习应用加速器的强大功能。这些AI应用程序通常具有“训练”和“推理”阶段。 “训练”在大的数据集上执行来教网络的工作并建立最佳拓扑、系数等。训练通常只进行一次,并且使用大量服务器——通常使用GPU进行繁重的工作。训练需要大量的浮点计算,GPU最适合(到目前为止)提供所需的浮点性能。

一旦网络经过训练和优化,就可以将其部署到现场,在那里完成“推理”。推理与训练有不同的要求。训练通常在数据中心进行,推理通常在嵌入式应用程序中进行。训练对成本和功率不是特别敏感(因为它只在数据中心完成一次),那么推理可能对成本和功率都非常敏感,因为它将进行很多次,通常会被构建到具有严格的BOM成本限制的高容量的嵌入式系统,并且通常需要在电池或其他非常有限的电源上运行。


最重要的是,与训练不同,可以使用窄位宽定点计算进行推理。 

Helloooooo FPGA!你的杀手级应用可能刚刚到来。


事实证明,你可以使用FPGA LUT结构构建一个相当不错的神经网络推理引擎。定点数学与FPGA的最佳位置完美对齐,最重要的是(尽量抑制你的欢乐,FPGA营销人员)每个神经网络拓扑都是不同的。事实证明,用于各种应用的最佳神经网络具有非常不同的拓扑结构,因此用于汽车视觉的推理处理器可能与用于语言处理的推理处理器完全不同。


而且,谈到汽车视觉应用,有一个庞大的行业正在经历一段颠覆性的变革,而FPGA可能会扮演一个重要且不可替代的角色?天啊。 FPGA销售人员正内心哼着歌,眼里闪现着美元沿花园小径走。这最终可以吗? AI是可编程逻辑蜷缩可以在壁炉前的地毯上,只需要整天进行数钱的应许之地吗?


不过很遗憾,可能不是。


首先,众所周知,FPGA很难“编程”。世界上只有极少数的FPGA专家,维恩图显示那些人和AI应用专家确实有一个非常小的交叉点。这意味着AI专家需要一些巨大的帮助来创建其解决方案的FPGA实现。 Xilinx和英特尔都竭尽全力弥合这一专业技术差距,并采用各种解决方案。对于那些希望使用FPGA作为加速器的非FPGA专家来说,最常见的答案是使用OpenCL(类似于C语言,用于将GPU用作加速器)。这是一个可靠的战略。如果您想针对GPU销售FPGA,请设计一个使GPU代码可轻松移植到FPGA的流程。这样,你就可以预先克服编程挑战——或者至少让它变得更容易。


不幸的是,GPU加速器市场由一家公司--Nvidia主导。Nvidia为希望使用Nvidia GPU加速其应用程序的软件开发人员创建了一种名为CUDA(类似于OpenCL)的专有语言。当OpenCL出现时(名称中带有令人讨厌的“Open”)Nvidia宣布了对OpenCL的“支持”,但显然它们大部分努力都落后于CUDA,他们的CUDA客户非常乐意继续编写CUDA代码,非常感谢你。 CUDA和Nvidia在GPU加速市场的成功阻碍了OpenCL的采用,这大大减缓了OpenCL作为从基于GPU的加速到基于FPGA的加速的桥梁——这正是Nvidia想要达到的。


此外,许多神经网络专家尚未采用OpenCL或CUDA。他们需要更多帮助来减小他们训练有素的模型和基于FPGA的推理引擎之间的差距。许多公司正在攻击这个非常重要的问题,我们将来会对它们进行更多的讨论。但就目前而言,基于FPGA的神经网络推理基本上仅限于能够与其神经网络/ AI工程师一起部署FPGA专家的组织。事实上,这个问题很可能是我们早前撰写的Xilinx /戴姆勒联盟的驱动因素—— 戴姆勒可能需要Xilinx帮助在Xilinx硬件上实现其汽车专用AI算法。


除了编程问题之外,FPGA在不可替代性方面还存在另一个障碍。在大容量嵌入式应用(例如汽车)中,解决方案将随着时间的推移变得具体和有限。这意味着将不再需要FPGA的灵活性。如果行人识别网络被证明是有效的,那么该应用的硬件仍然可以硬化,可能会大大提高性能,降低功耗,并且(最重要的是)降低成本。 FPGA只用于最先进而系统、架构不断变化的芯片。


例如,我们与Lidar的制造商进行了交谈,他们在系统中使用了大量的FPGA。虽然他们正在生产汽车应用市场上性能最佳的系统之一,但他们的系统成本仍然是五位数。他们估计,在汽车大规模生产之前,他们需要将其减少到三位数(是的,相同性能降低两个数量级的成本),同时减少其面积和功耗。他们待办事项清单的第一条?不再使用FPGA进行设计。


我们怀疑在ADAS和AD市场之后的众多子系统中可能存在同样的情况,导致FPGA公司在赢得一席之地时暂时感到兴奋——随后在取得大量收益之前被弃用而失望。而且,这只是在汽车领域。任何FPGA都需要长时间执行相同的工作,它们很容易被更优化的特定于应用程序的解决方案所替代。


一点可能不是真的(或者至少可以看到效果延迟)是在AI应用程序的数据中心/云部署中。在那里,可能必须在同一硬件上部署各种不同拓扑神经网络,并且进一步优化的ASIC或ASSP解决方案将会更长。但即便如此,我们还是需要更多针对数据中心的专用FPGA。目前“做任何事情”的SoC FPGA具有各种各样的“将会很好”的功能,对于数据中心应用未使用的功能来说会过于膨胀。而且,鉴于最近eFPGA(嵌入式FPGA IP)技术的兴起,更多公司可能会选择没有独立FPGA费用(和巨大的利润)的设计数据中心级神经网络加速器。


由于Xilinx和英特尔都专注于为数据中心加速市场做出努力(预计现在任何时候都会爆炸),他们各自战略的这一方面将至关重要。但是,由于他们专注于数据中心,可能更有利可图的嵌入式机会(如汽车)应该更加难以捉摸。这看起来将会很有趣。

您的评论:

0

用户评价

  • 暂无评论