了解人工智能领域的人都知道,图像处理单元(GPU)常被用来运行机器学习程序。而GPU比较适合运行完整的程序,而Graphcore这家创业公司力争要在芯片领域与英特尔和英伟达开始竞争。而他们提出的概念不是CPU,也不是GPU,而是IPU——智能处理单元。 所有最新的机器学习框架的有一个共同点,不管是TensorFlow、MxNet、Caffe、Theano、Torch还是其他的框架,他们均使用计算图像的概念来实现提取过程。图像正是描述在机器学习系统中创建的模型的最好方法。这些计算图像由用于描述顶点之间的通信路径的“边”(突触)以及连接的计算单元的“顶点”(神经元)组成。 与标量的CPU或矢量的GPU不同,Graphcore智能处理单元(IPU)是一个图像处理器。这家英国公司已经于2016年获得了3000万美元的投资,投资者包括博世、三星等巨头。 著名科技媒体wired曾撰写文章,介绍了Graphcore专为机器学习应用程序设计的Poplar软件框架,是如何创建了机器学习的“计算图”的。 AlexNet数据集训练的深度学习图像 该文介绍了Graphcore的软件框架Poplar,并概述了AlexNet图像的结构。随后,为了更好地使大家理解,该公司的科研人员又在博客中详述了该机器学习模型的工作原理。 wired文章中看到的图像,是从部署在IPU上的机器学习模型Poplar的内部图像处理框架中生成的。Poplar本身由两个关键组成部分组成:图像编译器(Graph Compiler)+图像引擎(Graph Engine) 在Poplar中,图像允许你自己定义计算的过程,其中顶点数代表操作,边数描述这些操作之间的通信。例如,如果要对2个数字求和,可以定义一个顶点,它具有2个数的输入(要相加的数字),一些计算(2个数字相加的函数)和一个输出(结果)。通常,顶点操作要复杂得多,由很多小程序(通常称其为codelets)来定义。而图像提取则非常具有吸引力,因为它不对计算结构做出假设,它将计算分解成组件块,并行处理器(例如IPU)可以利用这些组件块获得高性能。 Poplar使用这种简便的图像提取来构建出这些超大的图像。图像的程序化成像意味着我们可以根据所需的特定计算进行调整,以确保研究人员可以最有效地使用IPU资源。 这也使得科研人员可以在Poplar中实现对库的构建,j2直播,并提供了常见的外部接口。就拿上面的加法器那个简单的例子而言,我们可以写一个用于添加数字的库函数。如果我们将Poplar中不同大小的输入可视化的话,atv直播,看起来就像下面这张图。注意,只有一个顶点类型可以重复使用,但顶点之间的连接可以形成更复杂的计算。 Poplar图像编译器使得科研人员能够有效地将这些图像编译到IPU图像处理器中。Graphcore利用它构建图像库,特别是神经网络库(POPNN)。POPNN包含了针对各种图元的高度优化的顶点类型集合,包括诸如卷积,池化和全连接层等基元,他们可以被组合成各种复杂的机器学习模型。下图是在MNIST上训练的全连接网络。 MNIST是一个非常简单的计算机视觉数据集,在机器学习领域中,就类似于编程里的“hello world”那么简单。用于学习此数据集的简单网络,有助于理解那些图像。通过将图像库与TensorFlow等框架集成,在机器学习应用中,Graphcore采用能够充分利用IPU性能的最简单的方式。 (责任编辑:本港台直播) |