中文 英语

ML重心转向软件

硬件更快,但软件更容易,对于某些应用程序来说可能已经足够好了。

受欢迎程度

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

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

公司物联网、计算和安全产品营销经理Sree Harsha Angara表示:“从历史上看,机器学习来自一个强调特定终端应用的地方,比如汽车的物体检测或使用语音的自然语言理解。英飞凌.“现在,ML已经开始扩展到几种类型的应用程序,这更加强调设计工具和软件框架。”

机器学习系统的设计人员开始对机器学习软件开发工具包(sdk)提出更多要求,一些供应商正在使用他们的软件来掩盖硬件细节。最后,不太理想的硬件和良好的软件可能会比更好的硬件和更少的软件成功。

我们以前遇到过这种情况
在软件方面,编译器和其他开发工具一直被认为是理所当然的。但在80年代早期,当涉及到硬件时,设计师们被期望在很大程度上手工进行设计。虽然今天已经有所改变,但这是一条崎岖的道路。可编程逻辑市场是设计软件取得成功的第一个地方。

最初,可编程逻辑器件设计软件只是用来消除繁忙的工作。在可编程逻辑器件(pld)的早期,工程师们先计算出它们的逻辑,然后再计算出可编程阵列中需要哪些连接。这些都是手写的“引信图”,然后可以输入到编程设备中,对设备进行物理配置。

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

这样就省去了绘制连接图的繁琐过程。相反,人们可以输入布尔方程——这对工程师来说要自然得多——然后让工具来计算编程细节。这有助于在业务中创造一个严重的拐点。

几年后,PLD市场出现了新的参与者,提供了更多的架构可编程性。总有一些逻辑是这样的设备无法实现的,所以竞赛开始了,要拿出最灵活、又快又便宜的架构。

一个重要的转折点是,Altera发布了带有MAX-PLUS设计软件的新架构。工程师们努力寻找该架构的功能边界,并获得了惊喜。那些被认为编译失败的方程实际上起作用了,因为软件现在所做的不仅仅是将布尔方程转换为连接。相反,它还通过应用来转换布尔方程dm定理里把不能做的事情变成可以做的事情。

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

在这一点上,该业务一直由硬件公司主导,AMD是领导者(已经收购了Monolithic Memories)。但是硬件公司不擅长做软件,他们也不喜欢做软件。因此,AMD没有在软件上苦苦挣扎,而是将工作外包给了一家小型软件公司。事实证明这是一个战略错误,该公司最终倒闭了,将部分技术卖给了AMD新分拆出来的子公司Vantis(最终并不成功),将部分技术卖给了Xilinx,当时Xilinx是一个拥有精美fpga的新手(大获成功)。

最终,软件决定了胜者。硬件特性遵循一个跨越式的模式,而工具被证明是一个区别。

“历史上到处都是卓越的FPGA硬件架构,它们都是跌跌撞撞的,部分原因是缺乏有效的工具链,”amd首席产品经理Stuart Clubb说西门子EDA.“如果你没有软件来高效地利用这个平台,那么硬件平台再好也没用。”

与机器学习类似?
虽然云实例化占主导地位,边缘实现它们的强大功能和成本要求激发了更多的创造力。

但是,理解这些架构之间的差异所产生的影响变得越来越困难。我们几乎感觉不到那些伟大的想法已经被抛在脑后了,各家公司在不同的参数上推推搡搡,只为找到性能、功率和成本的最佳平衡点。

“人们遇到的问题是,他们有这些硬件解决方案,但无法优化它们或达到他们想要的利用率水平,”ibm推理产品销售和营销副总裁Dana McCarty说Flex Logix

机器学习总是有一个软件元素,因为训练和实现机器学习解决方案的整个想法绝非易事。早期机器学习框架(如Caffe和TensorFlow)的存在使AI应用程序变得实用,并为更多的开发人员所使用。

即便如此,创建一个完整的设计还需要做很多工作,尤其是对于边缘应用程序。效果显著提供了一个在测试数据上使用人工智能的例子——例如,一个远不如视觉突出的应用。

“我们得到了这么大的未清理的数据集,我们需要花几周的时间手动检查它,手动应用工具,”Advantest技术和战略副总裁基思·绍布(Keith Schaub)说。“你有数百个特征,有时1000个特征或更多,你试图找出与你的预测相关的最重要的特征。他们是通过回归方法和主成分分析得出这些结论的。然后你就有了这个有12个特征的静态模型。”

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

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

减少这些设计的尺寸和能源消耗也需要工作。人们可能会在设计中识别出那些可能太小而不重要的参数,然后将它们删除。这最初是一个手动过程,需要重新评估精度,以确保它没有受到修剪过程的严重影响。

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

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

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

下一阶段:对硬件保密
在过去的一年里,这个行业发生了明显的变化。在林利处理器大会(Linley Processor conference)或热芯片大会(Hot Chips)等会议上,各公司一直在发布新产品,并对该软件进行了更多讨论。很明显,在某些情况下,他们并没有谈到底层硬件。

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

这极大地改变了销售讨论,从试图说服潜在客户,细微的架构差异将产生有意义的结果,到设计经验提供证明。你能比以前更快地实现试验设计吗?您是否以最少的手工迭代达到了您的目标性能指标(成本、速度、功率、准确性等)?您能在几乎没有人工干预的情况下实现一个随时可用的实现吗?

如果所有这些问题的答案都是肯定的,那么硬件是如何实现的又有什么关系呢?如果软件可以根据需要快速地执行转换,那么底层门是否有需要软件转换的限制呢?如果另一个架构有更多的附加功能,但是完成一个设计需要付出更多的努力,那么这些额外的功能值得付出这样的努力吗?

依靠他们的工具进行对话的公司相信他们的客户真的不关心引擎下面是什么——只要配上好的软件,它就能完成所需的工作,以及所需的速度、功率、准确性和成本。

机器学习的历史会重演吗?
就像人一样,公司往往也有个性。一些是面向硬件的,而另一些是面向软件的。对于任何机器学习产品来说,两者中的一些显然都是必需的,但感觉优势可能会转向软件导向的产品。这意味着要把软件作为产品的核心,而不是恼人但必要的配角。这也意味着硬件和软件需要一起设计。

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

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

PLD行业的另一个失败是设计了聪明的架构,后来却发现为它开发软件非常困难。最成功的硬件和软件团队一起工作,根据需要对硬件进行调整,以实现流畅和强大的软件算法。

图1:设计工具的演变,从手工设计开始,逐步消除单调乏味,实际操作设计的能力,最后,优化它们。在后面的阶段,硬件/软件协同设计是成功的关键。资料来源:Bryon Moyer/Semiconductor Engineering

图1:设计工具的演变,从手工设计开始,逐步消除单调乏味,实际操作设计的能力,最后,优化它们。在后面的阶段,硬件/软件协同设计是成功的关键。资料来源:Bryon Moyer/Semiconductor Engineering

机器学习也是如此。如果一个聪明的硬件技巧很难在软件中发挥作用,那么它可能永远不会被使用。最终,最成功的产品可能是能够很好地与工具配合的架构,并且去掉了工具不能有效使用的任何特性。

“公司的一个基本前提是,软件的需求必须驱动硬件的设计,”Quadric说。io CTO Nigel Drego在去年秋天的林利处理器会议上发言。

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

虽然工具的作用越来越大,但我们还没有达到完全取代硬件的地步。还有许多建筑探索尚未解决。与许多设计自动化轨迹一样,我们正在进入许多设计可以自动完成的领域,需要手动调整才能最大限度地利用硬件。

在市场的这个阶段,在具有软件抽象的更一般化的体系结构和专门构建的体系结构之间也存在紧张关系。西门子EDA的Clubb指出:“虽然软件驱动的通用硬件解决方案可能提供更大的灵活性,但当某个维度(面积、功率、速度、成本)更为重要时,这种解决方案往往会输给专用硬件。”

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

工具说了算吗?
最终,长期的硬件赢家将是那些提供最佳设计体验的人,只提供足够的硬件来帮助开发人员进行设计决策。这当然是当今fpga的工作方式。事实上,在某些情况下,FPGA硬件理论上可以做一些软件不允许的事情。

ML似乎遵循类似的路径。英飞凌的Angara表示:“在功率和速度方面具有显著优势的硬件创新正在将自己包裹在一个通用的软件框架或API之下。“这意味着它们在运行机器学习方面提供了显著的好处,而不用担心‘简单’软件带来的痛苦。”

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

然而,规模和市场规模可能会影响到这一点。当合成技术刚刚出现的时候,有很多工程师认为他们总能比工具做得更好。这可能是对的,但随着设计规模的扩大,生产力期望的提高,以及工具的改进,它变得不切实际。

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



1评论

dev达特 说:

见解深刻,写得很好。

留下回复


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

Baidu