本文由半导体行业观察(id:icbank)翻译自「emerj」,作者:daniel faggella,谢谢。
我们与人工智能硬件公司groq的首席执行官兼创始人 jonathan ross就软件定义计算进行了交谈。本次采访是我们与kisaco research合作为9月17日和18日在加州山景城举行的人工智能硬件峰会所做系列报道的一部分。
软件定义计算是一种思考如何为机器学习功能优化计算的方法。ross谈到了gpu的一些优点和缺点,以及软件定义的计算机在未来的机器学习应用中可能出现的情况。
q:您能定义软件定义的计算吗?
jonathan ross:好的。感谢您的询问。“软件定义”一词已在某些硬件(尤其是网络)中使用过了。最近,几家不同的公司已使用它来描述他们对加速器的操作。他们谈论这个的原因是有一个概念,当您为机器学习构建自定义asic时,它们可能是不可配置的,也可能是不可编程的。
它的真正含义是机器学习,因为制造一个芯片需要相当长的时间,2到3年,而机器学习模型的变化如此之快,以至于您常常无法像研究人员提出新技术和新的机器学习模型那样快速地构建芯片。
所以要想制造出人们想要使用的东西,您必须让它非常灵活。所以软件定义的意思就是您要做的设备能够适应未来的变化。
在更高的层次上,当新技术可用时,经常发生的一件事就是人们开始利用现有的技术。一个例子是人们习惯于使用非常稀疏的机器学习模型。他们会将它们部署到大量的服务器上,对亚马逊和其他许多公司来说都是如此。
当他们开始使用能够处理更密集计算的设备时,发生了什么,我甚至不打算去定义,但是最终发生的事情是人们开始使用该更密集计算。因此,当涉及到软件定义时,您可以根据自己的喜好灵活地选择所需的灵活性,可以采用这些新技术并加以应用。但这也意味着研究人员可以进行实验,看看他们可以使用这些设备做什么,并自己提出解决方案。
例如,我们已经发现gpu在机器学习中已被广泛使用。原因是它们具有大量的计算密度。但是它们的内存带宽非常慢,这是一个问题。人们认为这将阻止非常昂贵的机器学习模型在您进行调整时继续获得性能提升。
结果是,研究人员开始利用额外的计算能力。在每次内存访问时他们会做更多的计算。就灵活性而言,您不仅能够支持ml研究人员过去一直在做的事情。他们还可以探索并更好地利用您给他们的硬件。
q:在业务领域中,这个软件定义的概念是否优于gpu
jonathan ross:当然是的。我有一个很好的例子。我们正在开发的硬件的独特功能之一就是它利用了称为batch size one的优势。这句话的意思是:“您还记得小时候玩的20个问题的游戏吗”
游戏是这样的,您有20个问题。每个人心里都有一个目标,一个人,然后您问问题,您将得到是或否的答案,直到您弄清楚那个目标是什么。
现在,我在谈论计算的密度。现在限制硬件使用的一个因素是,要想很好地使用它,常常需要在许多不同的输入上同时运行同一个程序。想象一下,您在街上开车,有三个停车标志。但是要获得真正的良好性能,您实际上必须在64个停车标志上运行才能识别它们并获得良好的性能。
所以如果您只有3个,它的花费和您有64个是一样的。现在假设您在玩游戏,有20个问题,64个输入,您要猜。这些问题一定很复杂因为您不是在猜这一项是什么,您是在猜这64项是什么。
我们正在构建的硬件和软件定义硬件的一个独特之处在于,它不是为任何特定的模型构建的。您可以更改在其上运行的模型的类型,并且可以通过分解模型来利用更小的批处理大小。
而不是同时在64个不同的项目上玩20个问题的游戏,您可以一次在一个项目上做,这使得它更便宜。现在您问,是动物,蔬菜,还是矿物答案并不总是肯定的,因为您总是有动物,蔬菜和矿物质。
假设您正在为一个潜在的保险客户做决定。您将会有一些关于客户的信息,如果您运行的模型必须考虑到有关该客户的所有可能的信息,那么它将是一个非常大的模型。但是,如果您可以查看一下自己所拥有的一点信息,例如关于客户的实际信息,然后选择适合该问题的合适大小的模型,那么它的成本将会降低,并且准确性也会更高。
另一个例子是,如果您试图制造一辆自动驾驶汽车并让沿着道路行驶,您可能会发现某物是一棵树,或者您可能会发现某物是某种标志。您可能不知道这是个停车标志。
当您能够在那个对象上运行一个非常特殊的模型时,对吧 场景中大概有200个物体,但您有三个符号。它的意思是,您可以在这三个符号上运行一个符号分类器,它是经过专门训练来识别这些符号的。
您也可以想象当您试图做出预测时的策略。例如,alphago模型的工作方式。随着游戏的发展,您实际上可以使用不同的模型,或者如果您认为游戏可以有几种不同的发展方式,则可以使用几种不同的模型,一些模式更有侵略性,一些模式不那么有侵略性。它真正的作用是允许您在同一个硬件上尝试很多不同的东西,而不必为每一个不同的东西定制硬件。
q:您认为这是如何渗透到工业领域的呢有没有一些空间可以让这个概念被更紧密地抓住,更快地被接受
jonathan ross:是的,我们拥有cpu和gpu已有很长时间了,这些都是可编程设备。我们也有其他类型的设备,比如fpga,它们也是可编程的,但在运行的时候并不是这样。要困难得多。有趣的是机器学习。具体来说,原因在于机器学习是一个开放的目标,人们不知道它将在哪里着陆。变化太快了。
我们特别关注的是模型变化很快的地方。如果您制造一个小型消费设备,一种音频触发装置,就像当您说话时打开您的门的设备,它不必变得越来越智能。
但是,当您在云端、超算、或自动驾驶汽车上部署一些东西时,因为没有人知道这些机器学习模型的最终公式,他们需要能够更新它们并进行更改。
此外,人们仍然在寻找机器学习的新用途,因为这是一个如此新的领域。从理论上说,我们在各个地方都看到了用例,部分原因是即使在这些地方,这些东西最终都会被强化或被修复,因此现在没有人知道它会是什么样子。
如果您想看看机器学习在哪些方面有用,那么只需看看做出概率决策或困难决策的任何地方。这与以往软件的工作方式大不相同。
问问您自己,您在哪里做出艰难的决定机器学习的另一个作用是它能让您同时拥有这两个矛盾的东西。它让您既有可重复的表现,又有创造力。如果您有一个机器学习模型,您把它应用到一个问题上,它通常会解决那个问题,但它可能会以一种没有人认为它能解决的方式来解决它。
q:您是否将软件定义的计算视为相同创造能力的扩展?
jonathan ross:完全正确。今天的机器学习研究人员提出了各种各样的想法。您经常会看到这些想法受到硬件的限制。gpu不是为机器学习而设计的。他们之所以可以这样做是因为它们非常并行,并且可以执行很多操作,但是今天这并不是您设计这种设备的方式。
因此,如果您查看许多流行的机器学习模型,会发现它们已经针对当今gpu的设计进行了优化。因此,当您拥有灵活的设备时,您可以处理这些设备,但也可以处理研究人员正在研究和试验的其他内容,这使他们可以自由地提出新的模型体系结构。
这在机器学习的早期尤其重要,因为这些东西在工业早期就固定下来了。因此,通过灵活性,它允许他们在所有东西被强化和修复之前进行试验。
另一方面,有趣的是,历史上有两种产业或产品。一种是如果您让他们具备某种能力,他们就足够好了。还有那些对更多的渴望永不满足的。计算绝对是一种永不满足的渴望。在计算机史上从来没有人说过,“我有足够的计算能力。我很好。”
有趣的一点是,我们很早就注意到,人们现在正在释放使用机器学习完成任务的能力,这在以前是不可能的,我们注意到,每次有改进,每次计算变得更便宜,变得更快,变得更节能时,人们实际上会花更多,而不是更少的钱。
我相信世界上大约7%的电力实际上用于为数据中心供电。就计算机在世界范围内的发展和重要性而言,这确实是一个飞速的增长。
因此,这是我们机器学习开始时的一个转折点,每当机器学习有所改进时,人们都希望得到更多。
q:您认为像您们这样的公司最终会开始专注于特定的领域和空间吗
jonathan ross:我们专注于制造如此灵活的设计的原因之一是它也使编程变得更容易。从长远来看,我们希望人们不会真正理解它下面是软件定义的计算。这个想法是,如果您能调整硬件,您就能让编程变得更容易。事实上,我们从编译器开始。
我认为,就采用而言,行业中将要发生的事情是,首先使用它的地方是他们需要绝对最优性能的地方,而现有的体系结构,即gpu,就是无法满足他们的要求。他们将能够通过调整硬件来适应他们想要做的每一件事。随着时间的推移,它会渗透到很多其他行业。
但这也很有趣,因为人们实际上在使用这个叫做auto ml 的东西,它使用机器学习模型来设计机器学习模型。最近的结果是,有效网络(由模型训练而成的模型)优于所有人工设计的模型。
这意味着如果您有一个非常灵活的硬件,人们训练这些机器学习模型的方式或者他们生成模型的方式,它们的结构和形状,实际上可以更好地利用这些硬件。
auto ml 正在迅速成为机器学习的规范。只是因为它有一个非常显著的优势,有能力重新配置硬件。另一个有趣的地方是我们可以在硬件运行非常快的时候重新配置它。这样就可以训练模型,并允许模型的运行,其中硬件实际上从执行的一部分变为执行的另一部分。在开始时,它可能看起来是一种方式,而在结束时,它可能看起来是另一种方式。