做人工智能,软件设计>芯片设计?
来源:电子工程专辑 发布时间:2022-06-30 分享至微信

针对构建灵活且强大的人工智能硬件的困难以及软件对AI性能的重要性这些话题的讨论,有谁比SiFive公司的Chris Lattner更适合呢?他是LLVM编译器基础架构的创建者,曾在苹果、特斯拉和谷歌领导开发团队。Chris两年前加入SiFive,担任工程和产品总裁,致力于用于人工智能和机器学习的RISC-VIP产品。

先看一下构建支持人工智能的处理器所面临的挑战!

无论是在数据中心,还是面对边缘人工智能,如今都面临着持续增加的挑战。工作负荷的发展非常非常快,今天正在设计的一些东西,比如矩阵乘法或卷积加速器,可能并不总是有价值的,新型人工智能模型不断涌现。业界现在更多地谈论基于注意力的网络、转换器等诸如此类的事物。考虑到芯片开发周期的长度,如何设计一款既具有足够的适应性能来加速当今不同类型工作负荷的芯片,同时又可以应对人工智能所需的未来发展呢?

CHRIS LATTNER:

的确,这是个大问题。这真的切入了人工智能目前最大挑战之一的核心,即研究方面,人们在学术界和工业研究实验室中提出的模型令人惊讶,都是很酷的新东西,但它们不能总是得到部署。与此同时,即使在训练和研究方面,很多研究都被引导到最适合团队可以使用加速器的地方,这是一个非常有趣的事,我们都看到了人工智能给每个方面带来的机会和影响,但也受到各方面的阻碍。

所以我们需要从整个行业出发来解决问题的不同部分。硬件设计周期确实需要2-3年,所以我们要做的不能只为运行MobileNet或运行Inception V1构建一个优化的解决方案,必须从架构方面考虑问题,并且了解工作负载的发展方式,了解事情的发展方向,我们确实需要优化矩阵乘法和卷积,但可能无法做到,因为正在运行Bert并且在网络中间有一个注意力层,如果做不到,就会脱离PCI总线上的内存层次结构,然后最终完全失去加速器带来的好处。

所以这个问题有两个方面,一个是硬件问题,一个是软件问题。

硬件问题是需要在与加速器相同的内存层次结构中使用灵活的、类似CPU的技术。这意味着您会说,我更喜欢在我的设备上以完全加速的、全速的、峰值TOPS方式运行2D卷积或2D矩阵乘法或元素智能运算。无论您认为是什么,这就是在做一款人工智能加速器。

但是随后就会遇到奇怪的新事物,那个自定义操作,那个使算法更加稀疏的特殊方法,或者研究人员提出的任何有十倍改进的方法。必须能够快速运行它,但我发现了一个问题,硬件回退最终从这里开始,就像使用并行芯片设计实现的完全优化的2D退回到主机,在许多情况下,这是在跨存储器层次结构复制数TB的数据,同时正在损失大量的功率和性能。或者,退回到一个不起眼的小标量内核。因此,将从2D加速降低到比如一次处理一个浮点数或一次一个8位整数,而这实际上已经没有了吞吐量。突然间,你遇到了阿姆达尔定律,因为正在加速问题的主要部分,然后演变成一个大问题,加速器的价值也就失去了。

所以在矩阵和标量之间的空间中有一个点,它们被称为向量。

因此,我真正相信的事情之一,也是SiFive正在做的事情,就是提供混合计算解决方案,可以在其中进行高性能矩阵运算。但是当回退时,会得到矢量的全部力量,所以它不一定像运行完全专用的定制芯片那么快,但它也不会差2个数量级,所以相信这一点,它能提供获得不断变化的工作负载、全面的通用处理、大计算吞吐量的灵活性,而且还使其接近已有的数据,从而节省电量并确保不会因为全面推送数据而降低性能。

现在谈谈后半部分,这是另一个非常重要的部分,即软件方面,因此另一个主要问题是通用性、可用性和可部署性方面的问题,比如人工智能的现实情况是,有很多加速器声称有很多很多TOPS。

然而,把所有的数字都乘以实例数,乘以频率,经过这个简单的数学运算得到的理论TOPS结果实际上并不重要。真正重要的是运行模型的吞吐量,或者训练模型的吞吐量。事实证明,实际使用硬件解决问题的吞吐量既受硬件约束,也受软件方面的约束。所以这就是编译器、运行时以及软件堆栈的所有其他方面真正重要的地方,但人们通常不会谈论它们,因为这很容易解释。将这些数字相乘就能获得峰值TOPS的理论吞吐量。

但归根结底是要面向产品并且以客户为中心,这也是客户愿意看到的,所以这也是我非常喜欢MLPerf之类东西的地方,它们真的试图把这个行业提升到一个对用户更重要的位置。

但我仍然认为这是机器学习基础设施和机器学习行业仍在增长且还不很成熟的领域之一,还有很多工作要做。

SALLY WARD-FOXTON:

是的,确实如此。读者有点习惯像您说的那样,将TOPS作为衡量性能的指标来讨论,但在现实世界中,谈论的却是诸如有效利用硬件之类的事情。您刚说到这也受软件的约束,这可不是经常听到的观点,能告诉读者更多关于软件在这里的重要性以及这意味着什么吗?

CHRIS LATTNER:

哦,是的,我很高兴谈论这个话题,下面让我们看看人工智能的软件……

我们可以在整个行业中看到这一点。根据所关注的行业的不同部分,症状也大不相同。因此,一方面可以看到人工智能加速器公司的爆炸式增长,他们敞开大门开发芯片,却忽视了软件,最后他们实际上无法将其变成产品。我认为我们已经看到100多家AI加速器公司,其中许多公司会因为软件问题而倒闭,这是一方面。

真是很不幸,这真的很难!这是与生俱来的问题,但我认为这值得我们认真考虑。

在训练方面,也会遇到挑战,比如与英伟达竞争以及CUDA对行业的锁定。虽然CUDA的主导地位在某些方面对英伟达有利,但从技术角度来看,我认为它阻碍了另一种创新。这意味着什么,这种局面会导致什么,我认为英伟达的产品很棒,所以不要误会我的意思——我没有反对他们,我对他们为提升人工智能所做的一切和推进许多事情都印象深刻。但我也相信竞争和创新带来的可靠替代品和许多人工智能框架确实都在围绕CUDA展开,而且因为它们围绕着CUDA,这使得即使非常相似的产品也变得非常困难,例如那些来自AMD的产品应用于同一领域。

如果看移动侧,我认为问题更严重。在移动侧确实没有部署人工智能的好方法。在我看来,我们拥有的最好的是一个名为TensorFlow Lite的框架。TensorFlow Lite有许多限制和问题;通过它部署新模型非常困难。所以这将成为一个巨大的挑战,特别是移动领域,比如安卓,有大量的硬件多样性,并且很难为应用程序开发人员设定目标,因此人工智能领域中的软件总体上确实不成熟。即使在英伟达的CUDA阵营中,我认为还有很多技术尚未部署,许多编译器的进步以及我们在研究中看到的其他类似事物尚未对产品产生影响。

不过在这个领域中,令人激动人心的是,这些东西发展得非常快,所以我认为这是一个挑战,但我不认为它是阻碍或障碍。我认为,作为人工智能社区的一员,看到事情发展得如此迅猛确实令人兴奋。

SALLY WARD-FOXTON:

是的。我知道您是软件优先意识或软件优先思维的粉丝。您能就这方面给我们详细讲讲所说的软件优先是什么意思,为什么这对人工智能来说如此重要?

CHRIS LATTNER:

好的,这个问题很好。在这里软件是一件大事,它对不同的人可能意味着不同的东西。我在软件方面有很深的背景,但并不是我对此过于偏心。我的意思是当SiFive说在构建软件优先产品时,说的是我们正在解决问题,我喜欢人工智能——但人工智能真的不是重点,人工智能只是一个实现细节。这是解决一些非常重要问题的最佳途径。

因此,归根结底,研究人员训练模型也是将该模型最终部署到产品中的一种实施细节。我们喜欢人工智能的一个原因是它能使体验变成可能,否则……您无法编写一个FOR循环来检测一只猫。所以,有这方面的课程,几乎所有在人类世界中与你互动的东西最终都比其他方法和软件能更好地服务于人工智能。

现在,这对我来说意味着设备变得更加个性化,人工智能应该会迅速崛起并以多种不同的方式、在我们使用的许多不同电子产品中得到广泛应用。

但是对人工智能来说,是否有方法可以解决将其集成到应用中的问题。如果是在移动体验中,要做的就是尝试从相机上取景。你试图检测人脸,然后试图给某人戴上一些有趣的帽子并将其显示在屏幕上。

因此,与现有软件、操作系统、驱动程序以及应用的集成真的非常重要。这就是我的所思所想,而你会再次回到将TOPS与实现的性能相乘。

这是生态系统中的另一个巨大差距,如果您正在处理一个与CPU分开运行的相当分布式且并行的加速器,与之通信的API不应该是同步API,而应该是异步API。即使是这样简单的事情,对这个行业来说仍然是一个挑战。因此,在SiFive公司,我们正在尝试从应用向产品方向构建,并将硬件和软件构建在一起,以便它们可以正常工作、正常部署、并能运行模型和作进一步扩展,也就是说,这是一种不同的方法。有一种以矩形方式布局门电路的新颖方法,让我们看看可以如何使用它。

SALLY WARD-FOXTON:

对。软件优先是鼓励客户工作的一种方式吗?这是你们的工作方式,但你们是否也鼓励客户朝这个方向发展?它如何与客户正在做的事情相适应?

CHRIS LATTNER:

我认为我们看待人工智能的很多方式都是“它只是管用”之类的方式。因为大多数人工智能加速器的实现远离像英伟达这样的巨头以及数据中心的范围,比如你看边缘人工智能之类的东西。真的很有趣……如何看待手机,如何看待物联网设备,如何看待智能相机。这些都是性能和电源效率至关重要的产品。因此,加速器至关重要,对于实现我们想要的体验非常重要。

另一方面,尝试采用研究人员训练过的模型并将其部署到其中一个加速器上的做法并不好。让我礼貌地说,这……不是太好。

很快就会发现,从各种加速器公司那里得到的工具,当给它们一个以前从未见过的模型时,这些工具就会崩溃,在很多情况下,必须付钱给这些公司来移植模型,它们甚至不会运行最新的模型,因为它们……例如,您提到了注意力。他们不会做softmax。因此,这会带来许多挑战,再次,要为产品提前购买加速器,并且希望确保它具有实现目标指标和每秒帧数或其他所需的性能。但不久您就会发现,在尝试部署模型或尝试部署模型的改进版本时,它甚至无法编译,甚至无法构建。

所以在SiFive公司试图做的是说,好吧,它确实管用。我们运行TensorFlow Lite所做的任何事情,例如,我们当前的产品运行TensorFlow Lite所做的一切,并且在重要的事情上都非常高效。但是你不会遇到这样的尴尬:你走上前说,嘿,我有一个合理的模型,但工具崩溃了,我却不知道为什么。

这只是一种非常不同的方法,这实际上是关于让人工智能变得重要并使其易于访问,使其规模化,这是有关于减少障碍和......同时仍然能为所有这些域提供高性能和灵活性以及RISC-V的功能。

SALLY WARD-FOXTON:

我知道SiFive已经推出了一款产品。SiFive Intelligence X280就是一款用于人工智能工作负荷的核心设计,相信它已非常先进。您能否告诉我们一些关于它的设计如何适应不断发展的工作负荷所需的灵活性,它如何适应未来,以及该软件如何能在这方面提供真正帮助?

CHRIS LATTNER:

是的,这是一个很好的问题,所以让我退后一步,谈谈SiFive的起源。SiFive是一家由RISC-V的创造者创立的公司,所以RISC-V是一个CPU ISA。它的基因已经流淌在我们的血管中。这就是我们正在做的很多事情——驱动、推动和构建RISC-V生态系统、高性能内核、人工智能,这个领域有很多事情要做。因此,当查看X280时,必须了解的一件事是SiFive不是一家SoC公司,我们是一家IP公司,会出售掉芯片公司。SiFive构建IP的真正差异化方式之一是,构建可配置的IP,因此X280与其说是一个产品,不如说是一个产品系列。我们可以做的是,可以用许多不同配置来构建X280。可以看到,我们与一家名为Tenstorrent的公司赢得了一个公共设计,后者是一家由JimKeller等业内大佬领导的大型数据中心训练加速器公司。这可不是偷懒!他们正在开发第二代或第三代产品,我的意思是,他们正在不断破冰前行。他们正在解决这个高端训练问题,或全标线芯片,或近乎此类的东西。我的意思是这是该领域中的一个极端。

另一方面,我们有一些客户正在使用X280并将其部署到电池供电的智能相机中。它归结为两件事。一个是你拥有X280和硬件设计以及内核本身的可扩展性,它是可配置和可扩展的,我们可以用它做很多事情并以多种不同的方式使用它,而且你也拥有RISC-V的功能,以及与之配套的软件。在构建人工智能软件堆栈时,让底层由RISC-V驱动是相当有价值的。

这是很多人工智能加速器公司并不真正了解的地方,所有加速器大致上都必须有一个控制处理器,要启动和做事、编排、与主机通信等诸如此类的东西,硬件团队很自然地会说,嘿,太好了,我们就是要构建这样的大型加速器。哦,我们需要一个控制处理器,所以我会放下手头的VLIW,帮我的团队定制设计,或者我会拿一些零碎的开源东西亲自构建。或者你可以用其它公司的东西......这些公司对构建一个小的CPU通常很感兴趣,但你会得到一些不稳定的东西!

您将无法获得工具链。你没有C编译器。你得不到可以为其构建内容的LLVM或GCC,所以现在当你为加速器构建软件堆栈时,最终发生的是你经历了这些自然的一系列演进步骤,其中:首先你需要启动它,需要一个固件团队——很好,你可以做。然后你开始,我需要写数字内核,如果我从硬编码加速器中卸载,我需要这样做——突然我需要运行softmax或其他什么,或者在这个东西上运行一些稀疏算法。好吧,你可以在汇编中写…但是C不是很好吗?C++不是很好吗?这整个工具生态系统真的很棒吗?

随着人工智能编译器的不断发展,我们正在收获MLIR和TVM之类的技术。在这个领域,您现在需要另一个级别的软件抽象,并且……哦,是的,顺便说一下,调试器、调试和跟踪、安全性以及所有其他东西都要与现代设计相结合。因此,在RISC-V下构建可为您提供开箱即用的所有功能。事实证明,作为ISA的RISC-V是一种非常灵活的设计,可以自由裁剪,你还知道SiFive内核可以减少到15,000个门之类的。这在现代设计中实际上是不可数的……但是你可以编写,可以有一个与之适配的性能模型,或者可以在仿真中逐步完成。所有这些都伴随着,如果是一个人工智能加速器团队,永远不会真正投资于小型控制处理器,因为这不是公司或团队的主要任务。所以事实证明,当他们不得不提出整个软件堆栈时,这真的会拖累软件团队。

如今,已经看到一些非常可靠且非常有趣的产品进入这个领域,所以这并非不可能,但X280带来的一件事是,因为它采用了RISC-V,我们的客户喜欢可以通过交易得到所有这些。他们得到了一个高性能的向量设计,然后可以卸载奇怪的算法,他们得到了矩阵加速,知道了BFloat16和其他现行行业标准数据类型和类似的东西。

作为产品的X280给我们带来了无限可能。由于它是可配置和可扩展的,因此允许人用户根据自己的用例调整产品,这是其它方法无法做到的。

作者:Sally Ward-Foxton
EET电子工程专辑原创

END

往期热文回顾
俄罗斯国产化芯片,为什么不与中国合作?
罗永浩没勇气再造手机,准备进军这个行业

上海第一批复工企业白名单公布

Arm架构导致安卓手机过热?

为何你的流片会失败?


评测中心

长按图片,扫码免费领取

点分享
点收藏
点点赞
点在看
[ 新闻来源:电子工程专辑,更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj]
存入云盘 收藏
举报
全部评论

暂无评论哦,快来评论一下吧!