2016年11月17日,英特尔公司宣布推出一系列涵盖从前端到数据中心的全新产品、技术及相关投资计划,旨在拓展人工智能(AI)的发展空间并加速其发展速度。
英特尔首席执行官科再奇近期分享了英特尔对人工智能的前景及复杂性的洞察,他指出,人工智能需要众多的领先技术的支撑,以及一个可超出初期采用者范围的更大规模的生态系统。随着目前的算法日益复杂以及所需数据集的不断增加,科再奇表示,英特尔深刻知道如何满足需求且完全有能力提供所需的技术来驱动这一计算转型。
战略要点:英特尔® Nervana™ 平台
英特尔宣布将推出业内最全面的人工智能产品组合——英特尔® Nervana™ 平台。该产品组合旨在提高人工智能应用的速度和易用性,是构建高度优化的人工智能解决方案的绝佳基础,可帮助更多的数据专家在基于行业标准的技术上解决世界上最大的挑战。
目前,从已有的资料可知,在深度学习上,英特尔与Nervana首先会推出一个名为Nervana Graph(ngraph)的深度学习开放框架开发库。目前在Github上可获取的预览版包含三个部分:
- 一个用于创建计算 ngraphs 的API。
- 两个更高水平的前端API(TensorFlow 和 Neon),可在常用的深度学习工作流(workflows)上利用ngraph API。
- 一个用于转换的API,用于编译这些图形,并在GPU和CPU上执行。
Nervana官方网站介绍说,Theano 和 TensorFlow 计算图要求使用者在创建图形的同时要推论潜在的向量形状。这相当枯燥,并且容易出错。另外,这种方法还会削弱一个编译器重新排列坐标轴和与特定的硬件平台相匹配的能力。
ngraph的一个原理,就是能在一个足够高的抽象层中运行,其中转化器能在不需要一个“足够高效的智能编译器”的情况下执行命令,同时也能允许用户和前端更加容易地把这些块(block)组合在一起。
2017年上半年测试首款深度学习芯片(代号Lake Crest)
据介绍,当前,英特尔支持着世界上97%的运行着人工智能工作负载的数据中心服务器,同时提供最为灵活、性能最优化的解决方案产品组合,其中包括英特尔®至强®处理器、英特尔®至强融核™ 处理器、为工作负载优化的加速器如FPGA以及从Nervana收购的技术创新。
昨天,英特尔还公布了如何将Nervana的突破性技术集成至现有产品路线图的更多细节。英特尔将于2017年上半年测试第一款芯片(代号为Lake Crest),并在下半年向主要客户发售。此外,英特尔还在路线图中增加了一款新产品(代号为Knights Crest),它将紧密集成最高配置的英特尔至强处理器与Nervana创新技术。此外,Lake Crest处理器专门针对神经网络进行了优化,可为深度学习提供极高性能,并可通过高速互连网络提供前所未有的计算密度。
“我们期待英特尔Nervana 平台能够带来突破瓶颈的性能优势,从而大幅缩短训练复杂神经网络所需的时间”,英特尔执行副总裁兼数据中心事业部总经理柏安娜女士表示:“英特尔有望在未来十年内将性能提高100倍,从而大大加快新兴深度学习领域的创新步伐。”
下一代深度学习至强融合处理器:深度学习性能提高4倍
柏安娜女士还宣布,相较于前一代处理器,下一代英特尔至强融核处理器(代号为KnightsMill)的深度学习性能可提高4倍,计划于2017年上市。此外,英特尔宣布现已向特定云服务提供商合作伙伴提供下一代英特尔至强处理器(代号为Skylake)的初级版本,该处理器采用了英特尔高级矢量指令集AVX-512集成加速技术,将极大增强机器学习工作负载的推理性能。该平台系列预计于2017年中旬发布,届时还会增加其他增强功能和配置,以全面满足不同客户群体的需求。
除了芯片级的创新之外,英特尔还披露了其他人工智能布局,包括专为客户提供业务洞察而打造的解决方案方案——英特尔Saffron Technology™。Saffron平台采用了基于内存的推理技术和异构数据透明化分析方法,该技术非常适用于小型设备,可在物联网环境中实现本地智能分析并帮助推动先进的人工智能协作发展。
为简化人工智能的部署,英特尔还推出了通用智能API,可支持从边缘到云平台的英特尔分布式处理器产品组合,以及英特尔®实感™ 摄像头和 Movidius 视觉处理单元(VPU)。
英特尔Nervana人工智能委员会,Bengio成为创始会员
此外,英特尔和谷歌正式宣布双方建立战略联盟,旨在帮助企业IT部门根据业务需求构建开放、灵活、安全的多云基础设施。双方合作包括专注于Kubernetes*(容器)、机器学习、安全和物联网的技术集成。
为进一步推动人工智能研究和战略实施,英特尔还宣布成立英特尔Nervana 人工智能委员会,主要由业界和学术界的领先思想领袖组成。英特尔公布了四名创始会员分别为来自加拿大蒙特利尔大学的约舒阿·本希奥(Yoshua Bengio)、来自加州大学伯克利分校的鲁诺·奥尔斯豪森(Bruno Olshausen)和拉贝艾(Jan Rabaey)以及来自斯坦福大学 Ron Dror。
英特尔还将不遗余力推动人工智能的真正普及。为此,英特尔向广大开发者推出了英特尔Nervana人工智能学院,以方便其接受相关培训和使用工具。英特尔还推出了英特尔Nervana图形编译器来加速英特尔芯片中的深度学习框架的发展。
除了人工智能学院,英特尔还宣布与Coursera合作,为学术社区提供一系列人工智能在线课程。英特尔还将与Mobile ODT联合主办Kaggle 竞赛活动(预计于2017年1月份开展)。
跨平台深度学习开放框架 Nervana graph 的详细介绍
2016年8月9日,英特尔宣布收购深度学习初创公司 Nervana Systems,交易金额约为 4.08 亿美元。Nervana 由原高通神经网络研发负责人于 2014 年创建,拥有目前最快的深度学习框架 neon。3个月周后,英特尔与Nervana终于开始在深度学习上发力,推出跨平台高性能深度学习开放框架开发库ngraph。本文是Nervana官网上对ngraph所包含的API内容、原理和性能介绍。
下文作者为Nervana 算法团队成员Jason knight,由新智元编译。
基于我们多年以来维护最快速的深度学习库上的经验,以及一年以来在以图形为基础的设计上的迭代,我们现在希望分享预览版的 Nervana Graph(ngraph),本次发布包含三个部分:
- 一个用于创建计算 ngraphs 的API。
- 两个更高水平的前端API(TensorFlow 和 Neon),可在常用的深度学习工作流(workflows)上利用ngraph API。
- 一个用于转换的API,用于编译这些图形,并在GPU和CPU上执行。
与Theano和TensorFlow的对比
Theano 和 TensorFlow 计算图要求使用者在创建图形的同时要推论潜在的向量形状。这相当枯燥,并且容易出错。另外,这种方法还会削弱一个编译器重新排列坐标轴,与特定的硬件平台相匹配的能力。
相反,ngraph API 能让用户定义一系列的命名轴,在图形的绘制过程中,把这些轴添加到张量上,并在有需要的时候,通过此前的命名(而不是位置)对它们进行分类。这些轴能够根据特定的问题领域进行命名,来帮助用户解决具体任务。
这种灵活性进而将允许转化器在执行命令之前,对必要的重塑或重组进行推断。另外,这些推断的张量轴排序随后在整个计算图上会被进行优化,用于对潜在的运行时间和硬件平台的推断进行排序,来在本地对Cache 和运行时间或执行时间进行优化。
这些能力突出了ngraph的一个原理,就是能在一个足够高的抽象层中运行,其中转化器能在不需要一个“足够高效的智能编译器”的情况下执行命令,同时也能允许用户和前端更加容易地把这些块(block)组合在一起。
前端
绝大多数应用和用户并不需要ngraph API 所提供的全部的灵活性,所以我们还推出了一个更高水平的neon API,它会给用户提供一个可组合的接口,另外还有多个常用的构建模块,用于搭建深度学习模型。其中包括东西的有:常用的优化器、权值以及层类型,比如线性、批处理规范、卷积和RNN。
我们还用在MNIST数字、CIFAR-10图像和 Penn Treebank 文本语料库上训练神经网络的例子,呈现具体的使用。
下一代neon深度学习API,加上ngraph后端机械,最终将取代我们当前的neon库,同时仍然提供与此前一样领先世界的性能,以及广泛的开放模型目录。当性能,稳定性,可用模型和工具匹配当前可用的模型时,我们将进行此转换。预计这将在未来几个月内实现。
我们还意识到,用户现在已经知道并使用现有框架,并且可能希望继续使用/组合在其他框架中编写的模型。为此,我们演示了将现有TensorFlow模型转换为ngraph的能力,并使用ngraph转换器执行它们。这个输入者(importer)支持今天的各种常见操作类型,并将在未来版本中得到扩展。我们还计划在不久的将来实现与其他框架的兼容,敬请关注。
此外,我们希望强调,因为ngraph提供了深度学习计算和多个高性能后端的核心构建块,所以添加前端是一个简单的事情,对后端(或新后端)的改进自动利用所有现有和未来的前端。因此,用户可以继续使用他们喜欢的语法,同时受益于共享编译机制。
转换器
考虑到现有技术模型都要使用数百万甚至数十亿的参数和数周的训练时间,所以确保模型以最小的内存消耗快速执行是至关重要的。鉴于我们建立和维护最快的深度学习库的经验,我们对现代深度学习的复杂性感到庆幸:
- 内核融合/复合
- 高效缓冲区分配
- 训练与推理优化
- 异构后端
- 分布式培训
- 多个数据布局
- 新硬件提升(例如:Nervana Silicon Technology)
考虑到这些现实情况,我们设计了ngraph转换器,通过干净的API,把从前端获得的细节进行自动化和抽象,在允许强大的用户空间同时调整所有事物的情况下,但又不限制模型创建过程中抽象的灵活性。
在ngraph中,我们相信实现这些目标的关键在于站在巨人的肩膀上,吸取现代编译器设计的经验。在选择编译器优化的设置和顺序时,用于转换器时,可以提高灵活性。
这些操作原则增加了我们工具的灵活性,同时降低了复杂性。这使得贡献者更容易添加后端代码以支持外来模型,而不需要理解或修改系统中其他地方做出的假设。
每个ngraph转换器(或LLVM术语中的后端)都针对特定的硬件后端,并且被当成是一个接口,来将一个ngraph编译到一个计算机中。用户会把其看成是一个函数句柄评估,来进行衡量。
今天,ngraph带有用于GPU和CPU执行的转换器,未来,我们计划采用异构设备转换器,支持分布式训练。
一个简单的例子
现状与下一步的工作
由于这是一个预览版本,我们有很多工作要做。
目前我们包括以下示例:
- 使用MNIST和CIFAR-10的MLP网络。
- 使用MNIST和CIFAR-10的CNN。
- 使用Penn Treebank的基于字符的RNN。
在Nervana被英特尔收购之后,我们拥有一个快速增长的世界级专家团队,涵盖编译器,分布式系统,系统软件和深入学习等项目。我们正在积极努力:
1.几个性能方面的努力:
- 关于融合/复用和存储器共享的进一步工作
- 并发操作执行
- 流水线数据加载
2. 图形序列化/反序列化。
3. 进一步改进图形组合性的可用性/优化。
4. 为更受欢迎的前端添加额外的支持。
5. 分布式,异构后端目标支持。
6. 具备互操作性的C API,用其他语言也能够创建/执行图形。
7. 现代的,云原生模型部署策略
8. 支持增强学习的网络架构前端