当前,软件进步的速度已经远远超过了芯片制造商可以实现的进步,这使得他们不知道该从何处开始,更不要说如何将它们已经年老的智慧整合起来。
【编者按】本文选自The Next Platform,由机器之心编译,作者:Nicole Hemsoth,参与:Rick、吴攀
在信息技术漫长的历史发展过程中,一直以来都是软件在努力跟进硬件的高速发展——以便开拓新的功能和大胆地实现从未有过的基准。
但是,随着机器学习和深度学习对静态应用程序的替代,我们进入了一个新时代:软件进步的速度已经远远超过了芯片制造商可以实现的进步,硬件设备制造商正在争先恐后地追赶。
这个问题本身就已经足够重大了,而且它是一种完全不同的架构上的问题,而不是通用设备曾经涉足的任何领域。不断缩小的芯片尺寸和不断增长的可靠性与速度已是司空见惯,但是随着新算法的出现和初具规模,以及不可思议地年轻且丰富的代码生态环境的涌现和进化,芯片制造商甚至不知道该从何处开始,更不要说如何将它们已经年老的智慧整合起来。
应对这个过渡期的一个简单方法是购买专业知识,相对更难的是自己开发构建。而且因为机器学习的代码基础非常丰富且在快速改变,现在还不存在什么标准的"正确方法"。据华盛顿大学计算机科学教授、《主算法(The Master Algorithm)》的作者 Pedro Domingos 说,在这所有的问题中间的根本分歧是设备想要满足新型用户的方式与部署代码实际所需的硬件之间的差异。
“过去没有让人信服的理由去生产机器学习芯片,但这种情况已经改变。”Domingos告诉The Next Platform。随着机器学习和深度学习的复兴,在GPU的硬件和软件上的成果得到了大规模地证明,这样发展下来,从而为其它研究领域的加速发展提供了路径。而且也正巧,GPU非常擅长深度学习所需要的基于矩阵乘法的问题。
我们需要能够通过从大规模数据中提取出重要模式以便减少信息负载的计算机。这具有很多深刻的和令人着迷的科学问题:一台计算机如何自动决定对于目标知识哪种表征是最好的?它可以如何将真正的规律和机缘巧合区分开?可以如何利用预先存在的知识?计算资源有限的计算机如何学习?我们可以通过怎样的方式理解所得到的结果?
这些问题汇集起来让NVIDIA尤其在深度学习训练的市场中有了一个明确的起点,但正如我们在过去几年所见过的报道那样,其它专用架构(包括FPGA、定制ASIC、神经形态芯片等)也在迎合这一部分市场的不同硬件需求上看到了机会。当然,英特尔也看到了机会,抢先拿下了Nervana Systems和Movidius——这两家都是研发带有为机器学习优化过的软件的硬件的设备制造商。尽管在争夺多种机器学习用户的处理器份额上存在这样的追赶和战争,但通用处理器玩家和不断演进的多样化机器学习社区的需求仍旧存在根本上的脱节。
“现在的大公司——英特尔和英伟达——仍然还在试图搞清楚这个领域。这是一种不同的思维方式。从机器学习的角度看,我们可以说出需要从硬件制造商那里得到什么具体的基本能力,但其中的问题是更深层次的……搞机器学习的人可以告诉做硬件的人他们想要什么,但做硬件的人也需要告诉研究机器学习的人他们实际上能做到和不能做到什么。这样的互动才能得到有价值的结果。”而现在的情况是,先把硬件设备做出来,然后看哪种方法的研发是一种浪费——甚至在快速演化的代码基础上的应用价值也更少。
“深度学习只是一种类型的机器学习。不能因为某种芯片在深度学习上表现好就意味着它也适合其它类型的机器学习。”Domingos说,“硬件制造商真正需要考虑的问题是当一股仍旧较新的机器学习浪潮到来时,硬件可以如何足够灵活地支持它,而如果存在一些可被部署在硬件中的基本元素,那么它们也就可以随时间改变。”在过去五年这个机器学习的新黄金时代期间,有一些基本元素并没有发生太大的变化。Domingos说,通过关注这些方面,英特尔等公司可以获得早期的立足点。
微芯片的发明过去是且现在仍然是一件激动人心的事;它是超级可靠的,它是完全确定性的;而且因为固态电子器件是如此可靠,它能让我们不断研发新事物。没有其它领域有这种了不起的天赋。化学工程没有,机械工程也没有——它们必须忍受所有的垃圾和噪声以及会碎裂的事物。但在计算机科学领域内,我们并不是活在真实世界中——而是一个我们开发程序的世界中。而机器学习正在将我们带回真实世界。它是关于统计的,它是关于概率的。而且我们不会总是知道为什么这会有效或为什么它不会一直有效。
这可能会让我们机器学习领域里面的人感到迷惑,但像英特尔这样的公司——那里的人们习惯于可靠但僵化的东西——对机器学习抱有一种非常不同的心态。“对于以统计学作为开始的机器学习,不是所有东西都需要被固定和定义的。这里有一个巨大的机遇,但这种做事方式的心理转换——应用中80%的时间有效vs.几乎100%的时间有效——总比没有任何东西好,而且也好过于拥有一堆只能抓取5%的潜在使用案例的预编程规则。”
但通用硬件的阵营目前正在大力开发机器学习,而它们这么做却形成了软件上的劣势;害怕错过一个可能有利可图的市场。毕竟就在不久前,英特尔刚刚声明其在数据中心运行的超过半数的工作负载将会拥有一个机器学习组件。技术层面上听起来很夸张——人们不得不想要知道英特尔所说的机器学习意味着什么。这是一个包罗万象的对高级分析的定义?或者实际上是作为一个顶层智能带——叠加在所有其它数据库、数据管理和其他工具与应用程序顶层的一层新技术?如果这不算夸张,我们是否可以说,我们将在未来五年内看到静态分析的死亡?无论哪种方式,大公司正在大踏步地在这一广阔领域抢夺先机——有几家同时押注了几种不同的机器学习负载;事实情况也在证明着这一说法:英特尔的Knights Mill和对Nervana/Movidius的收购以及英伟达为深度学习训练和推理所研发的众多芯片(Pascal、M40/M40、Tesla系列等)。
因此我们已经理解了,在广泛的实际价值方面,通用处理方法的发展仍然滞后,仍然在延长机器学习的应用名单,这会给我们带来什么,又会让我们失去什么?一个答案是寻求定制ASIC,这方面有一些创业公司(尤其是那些专注于深度学习的公司)将其视为前进的方向。
“有关机器学习的关键一点是:该问题具两面性;机器学习所产生的学习和模型。一旦你学习了一个模型,那真的只是一个简单的程序,而且它很容易在一个ASIC中实现。但问题是你不知道那会是什么,直到你有了数据——这意味着这会是一种在学习的第一部分不同的ASIC。”那样前期代价就太大了,此外模型的发展会让没有快速重新配置能力的ASIC毫无用处——而FPGA应该在这方面效果很好 。
数据决定方法。更好的算法是灵活的,而更灵活的算法在ASIC中更难实现。这与我们在计算机科学中过去已经习惯的不同,但这是机器学习的本质;它不是确定的。这是硬件公司的学习曲线。它需要一种完全不同的思维方式。
事实上FPGA尤其是深度学习神经网络的另一种可能的加速器——深度学习神经网络可以被看作是一种“柔软(soft)”版的神经网络。和使用定制ASIC一样,其问题在于:直到收到数据通知否则我们无法知晓该问题。换句话说,你可以从一个FPGA或神经网络中得到的所有东西就是一个子网络(subnetwork)。因此尽管它或许可以在部分工作负载效果良好,但却不能完成所有工作。
当然,GPU、FPGA和定制ASIC不是目前唯一有希望的硬件发展趋势。Domingos指出神经形态设备也是一个有希望的领域。“使用数字器件来构建用于深度学习的神经元的效率已经远比用一般硬件和软件组合高了。意见分歧就在这儿,但在很好地处理这些工作负载上,这是一个很有前途的研发高效半导体器件的路径。”
Domingos的希望就是,我们将开始看到一些融入硬件的核心元素,以及那些为了进一步统一软件工具以支持不同机器学习负载的核心元素。“我们会看到,软件层面的统一框架将迁移到硬件层面(逻辑、图形模型、贝叶斯网络等)。它们必须在关键领域成为机器学习的标准,尤其是图形和相似度计算。这是一个会产生进步的地方。”Domingos说到,但他也同意,在硬件方面仍然是任何人都可以参与的——而且涉及到很多不同的领域。