Training or Inference?

Training or Inference?

Graphcore’s machine intelligence processors support both training and inference. If you’re thinking about it in terms of training and inference, though, you’re probably thinking about hardware for machine learning in the wrong way.

上述文字来自“Machine Learning Processor for Both Training and Inference”(Machine learning processors for both training and inference)。这篇Blog介绍了Graphcore对我们常常说的Training和Inference一些看法,值得思考。下面原文翻译一下。如果对Graphcore的IPU感兴趣,可以参考解密又一个xPU:Graphcore的IPU

IPU是用于Training还是Inference?我对于这个问题的回答,可能让一些人经验,下面我来解释一下。
我们应该把焦点放在可以支持核心(Core)或网络边缘(Edge)连续学习(continuous learning)的硬件上,而不是从Training和Inference的角度来谈论机器智能硬件。
当然,Graphcore的IPU支持当今的机器学习Training和Inference的方法。 然而,我们设计了IPU来帮助创新者开发下一代机器智能系统。 随着时间的推移,下一代系统将持续不断学习和改进,在未来的系统中,我们将会看到,Training和Inference之间的区别会越来越小。
Training or Learning
当婴儿出生时,我们并不是让他们做好来训练他们。人们不需要看成千上万的标签图片,才能识别出一只猫。当他们第一次见面时,一个小孩几乎会马上认出一只猫。当一只小狗走进去的时候,他们会很快学会差异,并能区分两者。
很明显,今天的机器学习系统相对来说还是不成熟的。我们现在能够训练比普通人更准确地识别特定领域的对象或单词的分类系统,但是通常需要大量的标签数据才能做到这一点,并且无法持续从新的经验中学习。
机器智能系统正在发展之中,可以理解上下文,并重用已经学到的知识。我们可以把这理解为认知记忆。人类并不存储我们眼睛捕获的每个场景的完整的像素位图(bitmap)。相反,我们使用中心凹视觉系统连续扫描场景,而我们的大脑给我们呈现出场景的表示(Representation)。同时,我们也不会将这张照片存储为完整的位图。这似乎是合乎逻辑的。我们很有可能将记忆存储为高级表示和概念(concepts)。当我们受到一些触发的时候,会回忆起这个特定的内存,重新计算这个场景。
为了使这类系统成为可能,机器智能应用将需要更灵活的计算机硬件。这个新的硬件应该允许创新者建立能够以不同的方式学习和使用知识的系统。因此,可以使机器智能系统能够改善和提供越来越好结果。这些系统不仅将被训练,而且还将成为学习系统(Learning System),即使部署后也可以快速进化。
Inference or Deployment?
前馈卷积神经网络(CNN)得到广泛应用,以建立更准确的分类系统 - 例如图像识别。这是一个Inference任务,所以我们倾向于将机器智能系统看作是实现Inference的系统。
然而,Inference是对于一个可以快速发展的更为复杂的机器智能系统的一个非常窄的描述。下一代机器智能系统将具有认知记忆,将并行执行不同种类的预测和推理任务,并进行基于知识的判断。
例如,在自动驾驶市场,我们希望汽车能从他们在路上遇到的新情况中持续进行学习。如果一辆自动驾驶的汽车看到一个球滚到路上,跟着一个孩子,我们希望它知道一个球在路上意味着很有可能会有一个孩子跟随。
同时,我们不是将这种新知识保留在一辆汽车中,而是希望能够分享这些知识,也许在晚上连接到云中的学习系统,来更新通用的知识系统,以便在第二天早上的分享跟所有汽车的下一个版本的模型中包含这种新的知识。理想的情况是,我们希望另一辆汽车,如果看到玩具拖拉机出现在道路上,它会想到后面可能跟着一个小孩,而且应该像以前它看到一个球一样来处理。
使用Inference作为机器智能应用的描述太过狭隘,我们应该更多地以部署机器智能的角度来思考问题。
Machine Intelligence in the Core and at the Edge
如果Training和Inference工作被更复杂的机器智能系统所替代,它们在部署以后还能持续的进行学习,那么我们应该如何考虑支持这些新系统的硬件?最明显的细分是考虑在云中的机器智能计算 - 互联网的核心(Core) - 和发生在边缘(Edge)的智能处理,不管是嵌入产品或边缘服务器,它们在本地支持嵌入式应用与一些特定的智能任务。
核心机器智能需要灵活和可扩展(flexible and scalable)。核心工作负载会有很大差异。可能需要非常大量的计算来支持特定的学习任务,或者可能只需要少得多的智能处理来支持特定任务的部署(Deployment)。
云将需要支持许多不同的用户和许多不同的智能任务,所有操作都并行运行。智能机器能够纵向(Scale up)和横向(Scale out)扩展对于核心计算将是至关重要的。
虽然延迟(latency)和高可用性(availability)对于核心计算也很有必要,但保证实时响应是最重要的因素,那么智能处理就需要更靠近边缘或需要嵌入设备当中。
自动驾驶汽车还是一个很好的例子。Level 5的自动驾驶需要大量的本地智能处理。与云的移动互联网连接是不实用的。系统需要实时反应,处理复杂情况,并在发生危险时迅速作出响应。我们需要在本地进行大量信息处理。
在其他消费产品中,可能会在边缘设备与核心(云端)之间分离智能。例如,扫地机器人可能会遇到从未见过的新物体。机器人返回其供电站,连接到云端,并获得帮助,以了解这个新对象是什么,这种处理是可以允许的。一旦知识模型被更新,它可以继续其任务,躲避留在地板上的酒杯。这些消费类设备在内部仍然需要一定程度的智能处理,以便它们可以自主运行,但可以减少这些处理,来优化成本,功耗和功能。
Looking ahead
在过去的两年中,机器智能已经取得高速发展。互联网正在从文本和静态图片转移到语音和视频。非结构化数据的大量增长正在为领先的互联网玩家带来挑战。由于机器学习技术已经超越了传统的分类方法,机器智能已被这些企业快速采用并部署。这导致了对新机器学习方法的大量投资,而这些方法现在已经开始对几乎每个行业产生影响。
创新速度继续加快,我们也将很快有新的硬件平台,使机器学习的创新者能够不断突破极限。目前的先Training然后做Inference的方法,将让位于可以学习并且在部署之后能够持续进化的机器智能系统。机器智能将大大改变计算。我们将会思考能在Core部署的灵活和可扩展的机器智能;部署在Edge的高效、快速响应的机器智能;以及消费产品中嵌入的机器智能。
因此,灵活,高效的智能处理器的潜力巨大。

[END]


推荐阅读

Deep Learning Hardware - 我的文章

解密又一个xPU:Graphcore的IPU


题图来自Graphcore,版权归原作者所有

欢迎关注我的微信公众号:StarryHeavensAbove

编辑于 2017-07-24

文章被以下专栏收录