机器学习重心转向软件

源节点: 1600819

随着为云和边缘提供最有效的加速架构的竞赛继续,新的机器学习 (ML) 架构继续吸引大量关注,但注意力开始从硬件转移到软件工具。

现在最大的问题是软件抽象最终是否会战胜硬件细节来决定谁是未来的赢家。

“从历史上看,机器学习源自强调特定最终应用的地方,例如汽车的对象检测或使用语音的自然语言理解,”物联网、计算和安全产品营销经理 Sree Harsha Angara 说道。 英飞凌。 “现在,机器学习已经开始扩展到多种类型的应用程序,这更加强调设计工具和软件框架。”

机器学习系统的设计者开始对机器学习软件开发套件(SDK)提出更多要求,一些供应商正在使用他们的软件来隐藏硬件细节。最终,具有良好软件的不太优化的硬件可能会比具有较少软件的更好的硬件更成功。

我们以前来过这里
长期以来,编译器和其他开发工具在软件方面一直被认为是理所当然的。但在 80 世纪 XNUMX 年代初的硬件领域,设计人员主要依靠手动方式进行设计。尽管如今这种情况已经发生了变化,但实现这一目标的道路却崎岖不平。可编程逻辑市场是设计软件最早立足的领域之一。

起初,PLD 软件只是为了消除繁忙的工作。在可编程逻辑器件 (PLD) 的早期,工程师会计算出逻辑,然后找出可编程阵列中需要哪些连接。这些字面意思是手写在“熔丝图”中,然后可以将其输入编程设备中以物理配置设备。

随着 Monolithic Memories 引入可编程阵列逻辑(PAL),发生了巨大的变化。有两件事推动了 PLD 行业的整体发展。首先是架构上的改变,降低了成本并提高了速度。但更具影响力的是,它首次发布了所谓的 PAL 汇编器,称为 PALASM。

这消除了绘制连接的繁琐过程。相反,人们可以输入布尔方程(对于工程师来说更自然),然后让工具计算出编程细节。这有助于在业务中创造一个严重的拐点。

几年后,PLD 市场出现了新的进入者,提供了更多的架构可编程性。总会有这样的设备无法实现的逻辑,因此人们开始竞相提出最灵活、同时又快速又便宜的架构。

当 Altera 发布其带有 MAX-PLUS 设计软件的新架构时,一个重要的转折点出现了。工程师们努力寻找该架构的功能界限,并感到惊喜。预计编译失败的方程实际上起作用了,因为该软件现在所做的不仅仅是将布尔方程转换为连接。相反,它还通过应用其他方法来转换这些布尔方程 德摩根定理 把不能做的事情变成可以做的事情。

这是一个游戏规则的改变者,它显着提高了软件业务方面的风险。尽管你可能会尝试指出硬件中的架构弱点,但只要软件掩盖了这些弱点,那就是一场失败的争论。

到那时,该业务一直由硬件公司主导,其中 AMD 处于领先地位(已收购 Monolithic Memories)。但硬件公司不擅长开发软件,而且他们也不喜欢这样做。因此,AMD 没有在软件方面苦苦挣扎,而是将工作外包给了一家小型软件公司。事实证明这是一个战略错误,该公司最终倒闭,将一些技术出售给 AMD 新近分拆出来的 Vantis 子公司(最终没有成功),并将一些技术出售给赛灵思(Xilinx),当时赛灵思是一个新来者,其精美的 FPGA(非常成功)。

最终,软件决定了胜利者。硬件功能遵循跨越式模式,而工具被证明是差异化因素。

“历史上充斥着卓越的 FPGA 硬件架构,但它们都失败了并且不再存在,部分原因是缺乏有效的工具链,” 西门子EDA。 “如果你没有有效利用该平台的软件,那么硬件平台再好也没有用。”

机器学习的并行?
如今,所有人的目光都集中在人工智能上,公司正在努力寻找可在云端或边缘运行的机器学习加速器的最佳架构。虽然云实例占据主导地位, 边缘实现 凭借其严格的功率和成本要求,激发了更多的创造力。

但理解这些架构之间差异的影响变得越来越困难。感觉好像伟大的想法已经过去了,公司不断推动和拉动不同的参数,以找到性能、功耗和成本的最佳平衡点。

“人们遇到的问题是,他们拥有这些硬件解决方案,但无法对其进行优化或获得他们想要的利用率水平,”推理产品销售和营销副总裁 Dana McCarty 说道。 弹性逻辑.

机器学习始终包含软件元素,因为训练和实施机器学习解决方案的整个想法绝非易事。 Caffe 和 TensorFlow 等早期机器学习框架的存在使人工智能应用程序变得实用且可供更多开发人员使用。

即便如此,创建完整的设计仍需要大量工作——尤其是边缘应用。 先进的 提供了一个在测试数据上使用人工智能的示例——例如,这种应用远没有视觉那么突出。

Advantest 技术与战略副总裁 Keith Schaub 表示:“我们获得了这个庞大的未经清理的数据集,需要花费数周时间手动检查它并手动应用工具。” “你有数百个特征,有时有 1,000 个甚至更多,你正试图找出与你的预测相关的最重要的特征。他们通过回归方法和[主成分分析]得出这些结果。然后你就得到了这个具有 12 个特征的静态模型。”

这只是高级特征工程。下一部分是将模型有效地映射到特定设备上,这可能会出现竞争优势。 Flex Logix 高级营销总监 Sam Fuller 表示:“你必须能够将该模型有效地桥接到你的加速器上,能够做到这一点的公司将会获胜。”

虽然基于云的引擎在很大程度上依赖于完整的浮点硬件,但许多边缘硬件通过专注于整数实现来节省功耗和成本。这意味着采用设计和经过训练的参数并对它们进行量化——将它们从浮点转换为整数。这会引入一些错误,可能会损害推理准确性,因此可能需要使用所需的整数格式重新训练。显然,随着时间的推移,直接训练整数变得更加容易。

减少这些设计的尺寸和能耗也需要付出努力。人们可能会通过设计来识别那些可能太小而无关紧要的参数,然后将它们修剪掉。这最初是一个手动过程,需要重新评估准确性以确保修剪过程不会对其造成太大影响。

然后就是针对所使用的任何类型的处理器调整软件“内核”的问题。这通常是为网络中的每个节点编写的裸机代码。一些架构选择仅关注用于推理的通用指令的处理元素。其他人则保持“完全可编程性”,因此可以在推理之外更灵活地使用它们。

如果您碰巧有数据流架构,那么您可能需要对硬件进行分区并将不同的层和节点分配给不同的区域。

这些只是实现功能齐全的机器学习应用程序必须处理的一些事情。其中一些是手动的,但软件自动化的数量逐渐增加。

下一阶段:硬件保密
去年以来,行业发生了明显变化。在 Linley 处理器会议或 Hot Chips 等会议上,公司一直在宣布新产品,并对软件进行更多讨论。值得注意的是,在某些情况下,他们确实不谈论底层硬件。

当然,这可以发生在会议等公共论坛上。有时,公司仅根据保密协议向合法的销售潜在客户透露详细信息。但谈话的基调似乎越来越倾向于这样的方向:“不要担心细节。软件会解决这个问题。”

这极大地改变了销售讨论,从试图说服潜在客户微妙的架构差异将产生有意义的结果,转变为设计经验提供证据的讨论。您能否比以前更快地实施试验设计?您是否以最少的手动迭代达到了目标性能指标(成本、速度、功率、准确性等)?您能否在几乎不需要人工干预的情况下实现良好的实施?

如果所有这些问题的答案都是肯定的,那么硬件如何实现这一点还重要吗?如果软件可以根据需要快速执行转换,那么底层门是否存在需要软件转换的限制还重要吗?如果另一种架构有更多的花哨功能,但完成设计需要付出更多的努力,那么这些额外的功能值得付出这些努力吗?

依靠工具来说话的公司打赌,他们的客户实际上并不关心幕后的内容 - 只要与优秀的软件配合使用,它就可以完成所需的工作以及所需的速度、功率、准确性和成本。

机器学习历史会重演吗?
就像人一样,公司也往往有个性。有些是面向硬件的,而另一些则是面向软件的。任何机器学习产品显然都需要其中一些,但感觉优势可能正在向软件方向发展。这意味着将软件作为产品中的明星,而不是作为一个烦人但必要的客串跑龙套。这也意味着硬件和软件需要一起设计。

机器学习对软件缓冲细节的需求可能比 FPGA 更大。即使有工具,FPGA 也是由硬件工程师设计的。另一方面,机器学习模型是由数据科学家设计的,他们与硬件有很多不同的层次。因此工具需要弥合抽象差距。

“除非你说他们的语言,否则你就没有机会,”人工智能和软件产品营销总监 Nick Ni 说。 赛灵思。 “每个供应商都在谈论 TensorFlow 和 Python 支持,因为他们没有其他办法。不管你喜欢不喜欢,你都得支持。但为了支持如此高的框架,你必须做到介于两者之间的一切。”

PLD 行业的另一个失败是设计了巧妙的架构,但后来却发现为其构建软件极其困难。最成功的硬件和软件团队通力合作,根据需要调整硬件,以实现流畅且强大的软件算法。

图 1:设计工具的演变,从手动设计开始,逐渐消除单调乏味、实际操作设计的能力,最后优化设计。在后期阶段,硬件/软件协同设计对于成功至关重要。来源:Bryon Moyer/半导体工程

图 1:设计工具的演变,从手动设计开始,逐渐消除单调乏味、实际操作设计的能力,最后优化设计。在后期阶段,硬件/软件协同设计对于成功至关重要。来源:Bryon Moyer/半导体工程

对于机器学习来说也是如此。如果一个巧妙的硬件技巧很难在软件中利用,那么它可能永远不会被使用。最终,最成功的产品可能是与其工具完美匹配的架构,并且放弃了工具无法有效使用的任何功能。

Quadric.io 首席技术官 Nigel Drago 在去年秋天的 Linley 处理器大会上表示:“公司的基本前提之一是软件的需求必须驱动硬件的设计。”

在同一次会议上,Roviero 高级副总裁 Ravi Setty 提到了软件在定义公司架构中的作用。 “我们在硬件中增加了 5% 的复杂性,以实现编译器 90% 的简单性。硬件对任何神经网络信息完全不可知。编译器拥有所有知识。而硬件——它只是一个执行引擎。”

虽然工具的作用越来越大,但我们还没有达到它们完全掩盖硬件的程度。仍有丰富的建筑探索组合尚未解决。与许多设计自动化轨迹一样,我们正在进入许多设计可以自动完成的领域,需要手动调整才能充分利用硬件。

在市场的现阶段,具有软件抽象的更通用的架构与专用架构之间也存在紧张关系。 “虽然软件驱动的通用硬件解决方案可以提供更大的灵活性,但当某个维度(面积、功耗、速度、成本)更为重要时,此类解决方案常常会输给专用硬件,”西门子 EDA 的 Clubb 指出。

这可能会给针对专用硬件的软件带来挑战。 “每种架构都有独特的优势,并针对特定用例进行了优化,”西门子 EDA 战略与发展高级经理 Anoop Saha 解释道。 “但用户面临的挑战仍然存在——他们如何在特定的硬件架构上编译他们的网络?如果他们能够做到这一点,他们如何针对特定硬件进行优化并利用可用的不同组件?特定于硬件的优化和灵活性需要由软件以更自动化的方式处理。”

工具统治吗?
最终,长期的硬件赢家将是那些提供最佳设计体验的人,只有足够的硬件才能帮助开发人员做出设计决策。这确实是当今 FPGA 的工作方式。事实上,在某些情况下,有些事情理论上 FPGA 硬件可以做,但软件却不允许。

机器学习似乎也在走类似的道路。英飞凌的 Angara 表示:“在功耗和速度方面提供显着优势的硬件创新正在将自身包装在通用软件框架或 API 下。” “这意味着它们在运行机器学习方面提供了显着的收益,而无需承受‘不复杂’软件的痛苦。”

工程师是否会停止考虑硬件还有待观察。 “机器学习‘编译器’是否能够足够智能,以通用硬件平台为目标,从而使硬件变得无关紧要?可能不会,”克拉布说。 “机器学习硬件专业化在锁定解决方案的灵活性和可重编程性方面当然有优点和缺点。当通用解决方案不能满足应用需求时,富有创造力的架构师和硬件设计师总是需要设计更有效的解决方案。”

然而,规模化和市场规模可能会影响这一点。当综合还是新事物时,有许多工程师认为他们总能比工具做得更好。这可能是真的,但随着设计规模的扩大、生产力期望的提高以及工具的改进,它变得不切实际。

因此,虽然硬件在某种程度上总是很重要,但从长远来看,就像可编程逻辑一样,软件工具往往最终会成为王者。

来源:https://semiengineering.com/ml-focus-shifting-toward-software/

时间戳记:

更多来自 半导体工程