nGraph 深度神经网络模型编译器

程序名称:nGraph

授权协议: Apache-2.0

操作系统: 跨平台

开发语言: C/C++

nGraph 介绍

英特尔的人工智能产品团队宣布开源 nGraph,这是一个面向各种设备和框架的深度神经网络模型编译器。有了
nGraph,数据科学家能够专注于数据科学研发,不需要担心如何将 DNN 模型部署到各种不同设备做高效训练和运行。

nGraph 目前直接支持 TensorFlow、MXNet 以及 neon,并可间接地通过 ONNX 支持
CNTK、PyTorch、Caffe2。用户能够在不同的设备上运行这些框架: 英特尔架构、GPU 和 英特尔 Nervana 神经网络处理器(NNP)。

为什么建立 nGraph

当深度学习框架作为模型训练和推断的工具首次出现时,在设计上是围绕 kernel
为特定设备优化。结果,把深度学习模型部署到其它更先进的设备时,会在模型定义暴露出许多细节问题,从而限制了其适应性和可移植性。

使用传统的方法意味着算法开发者面临把模型升级到其他设备时的沉闷工作。使一个模型能够在不同框架上运行也非常困难,因为开发者必须把模型的本质从对设备的性能调整中分离出来,并转化到新框架中的相似运算,最终在新框架上为优选的设备配置做必要的改变。

我们设计的 nGraph 库充分地减少了这些工程的复杂性。虽然通过该项目以及英特尔的 MKL-DNN
这样的库,能够为深度学习原语提供优化核,但仍有多种编译器启发式的方法能够带来进一步的优化。

nGraph 是如何工作的?

安装 nGraph 库,并使用该库编写或编译一个框架来训练模型和执行模型推理。将 nGraph
指定为框架后端,以在任意支持的系统上用命令行运行该库。我们的中间表征(Intermediate
Representation,IR)层可以处理所有的设备抽象细节,从而让开发者集中于数据科学、算法和模型的研究,不需要花费太多精力在写代码上。

从更加详细的角度来说:

  • nGraph 核心创建了计算过程的一种强类型和设备无关的无状态图表征。图中的每一个节点或运算对应计算的一个步骤,其中每个步骤从 0 或更多张量的输入中生成 0 或更多张量的输出。我们的思想是 nGraph 运算可以作为深度学习框架中的复杂 DNN 操作的构建模块,且它能根据需要而衡量是高效编译和推导训练计算还是推断计算。

  • 我们为每个支持的框架开发了框架桥梁(framework bridge);它作为 nGraph 核心和框架之间的媒介起作用。目前我们已经开发了 TensorFlow/XLA、MXNet 和 ONNX 的框架桥梁。由于 ONNX 仅仅是一种交换格式,因此 ONNX 的桥梁将通过执行 API 进行增强。

  • 在 nGraph 核心和多种设备之间工作的变换器有着类似的作用;变换器使用通用的和设备特定的图转换处理设备抽象。得到的结果是一个函数,可以从框架桥梁执行。变换器是可分配和可解除分配的,可按桥梁的方向读取和写入张量。我们目前已有英特尔架构、英特尔 NNP、英伟达 cuDNN 的变换器,并正积极开发着其它设备的变换器。

nGraph 官网

https://github.com/NervanaSystems/ngraph

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


欧盟第7框架计划(FP7)的LarKC项目的目标是开发大规模知识加速器(LarKC,其发音为“lark”),LarKC被设计为一个大规模分布式不完备推理平台 ,该平台用于突破语义万维网(Semantic Web)推理系统目前面临的知识处理规
Salad 是一种有效且灵活的实现著名的异常检测方法回文构词法王et al . 2006(RAID)。Salad
multilanguage 是一个多语开发工具包,用于缓存多语系统的多语值,它拥有良好的性能,并且能防止内存泄露。
go-cortex 是一个服务,通过倾听你的句子,并视图理解你的意思,然后执行相应的动作。它使用 Wit.ai
DKPro Core 是基于 Apache UIMA 框架之上的自然语言处理(NLP)的软件组件。DKPro Core 提供了这样的第三方工具以及原NLP组件的包装。
NLTK 会被自然地看作是具有栈结构的一系列层,这些层构建于彼此基础之上。那些熟悉人工语言(比如
ERNIE 是基于持续学习的语义理解预训练框架,使用多任务学习增量式构建预训练任务。
Algorithm research 基于 AC 有限状态自动状态机的过滤服务。 AC 编译及使用方法 1. 编译之前请先确认安装好 libevent
spaCy 是一个 Python 和 CPython 的 NLP 自然语言文本处理库。 示例代码: >>> import spacy.en
Lango 是自然语言处理库,类似乐高游戏,可以把各个语言块构建在一起工作。
SyntaxNet 是一个框架,即学术圈所指的SyntacticParser,他是许多NLU系统中的关键组件。在这个系统中输入一个句子,他会自动给句子中的每一个单词
FudanNLP主要是为中文自然语言处理而开发的工具包,也包含为实现这些任务的机器学习算法和数据集。
HanLP: Han Language Processing 汉语言处理包 HanLP 是由一系列模型与算法组成的 Java 工具包,目标是普及自然语言处理在生产环境中的应用。HanLP
TextTeaser是一个自动摘要算法,结合了自然语言处理的力量和机器学习产生好结果。
专门针对中文文档的simhash算法库 简介 此项目用来对中文文档计算出对应的 simhash 值。 simhash 是谷歌用来进行文本去重的算法,现在广泛应用在文本处理中。
Lacona 是语言无关的 JavaScript 语言解析器。Lacona 可以根据一个任意但是定义良好的模式来预测自然语言。也就是说,你告诉 Lacona
UBY是一个大规模的统一的文章资源,为自然语言处理(NLP)基于ISO标准词汇标记框架(LMF)。
CRF是著名的条件随机场开源工具,也是目前综合性能最佳的CRF工具。CRF本身已经是个比较老的工具了,但鉴于其性能较好,仍然是自然语言处理很重要的一个工具。
OpenNLP 是一个机器学习工具包,用于处理自然语言文本。支持大多数常用的 NLP 任务,例如:标识化、句子切分、部分词性标注、名称抽取、组块、解析等。
LingPipe是一个自然语言处理的Java开源工具包。LingPipe目前已有很丰富的功能,包括主题分类(Top