TensorFlow阅读报告汇总.pdf

上传人:白大夫 文档编号:5424622 上传时间:2020-05-06 格式:PDF 页数:13 大小:297.28KB
返回 下载 相关 举报
TensorFlow阅读报告汇总.pdf_第1页
第1页 / 共13页
TensorFlow阅读报告汇总.pdf_第2页
第2页 / 共13页
TensorFlow阅读报告汇总.pdf_第3页
第3页 / 共13页
TensorFlow阅读报告汇总.pdf_第4页
第4页 / 共13页
TensorFlow阅读报告汇总.pdf_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《TensorFlow阅读报告汇总.pdf》由会员分享,可在线阅读,更多相关《TensorFlow阅读报告汇总.pdf(13页珍藏版)》请在三一文库上搜索。

1、- 1 - TensorFl ow 论文阅读报告 1.基本信息 题目: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems 来源: Google Research 时间: 2015.9 作者: Mart?n Abadi, Ashish Agarwal, Paul Barham 2. 摘要 TensorFlow 是一个表达机器学习算法的接口,并且是执行算法的实现框架。 使用 TensorFlow 表示的计算可以在众多异构的系统上方便地移植,从移动设备 如手机或者平板电脑到成千的GPU 计算集群

2、上都可以执行。 该系统灵活, 可以被 用来表示很多的算法, 包括深度神经网络的训练和推断算法。也已经被用于科研 和应用机器学习系统在内的若干计算机科学领域或者其他领域中,例如语言识 别、计算机视觉、机器人、信息检索、自然语言理解、地理信息抽取和计算药物 发现。 3. 引言 基于第一代可扩展分布式训练和推断系统 DistBelief 的经验,构建了 TensorFlow第二代大规模机器学习模型的实现和部署的系统。TensorFlow 使用类似数据流模型的计算, 将这些计算映射到不同的硬件平台,例如使用包含 一个或者多个 GPU 显卡的装有 Android 和 iOS 的单个机器,或运行在数百台

3、包含数千个 GPU 的大规模训练系统。拥有一个单一的系统可以扩展分布到众多 - 2 - 的平台上可以大大简化真实场景中机器学习系统的使用,正如用分离的系统进行 大规模训练和小规模的部署,会产生巨大的维护代价和较差的抽象效果。 TensorFlow 的计算被表示为含状态的数据流图,在让这个系统足够灵活能够快 速地实验研究中产生的新模型, 并同时充分地提升产品级训练的性能和部署机器 学习模型健壮性。为扩展神经网络训练搞更大的部署环境,TensorFlow 允许通 过复制和并行执行一个核心模型数据流图,使 client 简单地表达不同类型的并 行,依赖不同计算设备合作更新一个共享的参数或者其他的状态

4、。对计算描述 的微妙变动可以使用较低的代价来达到和尝试很多不同的并行的法。对比 DistBelief,TensorFlow 的编程模型更加灵活,性能也更好,支持在大规模的 异构硬件平台上训练和使用很多的模型。 4. 主要技术 1、编程模型和基本概念 TensorFlow 的计算由一个有向图描述, 这个图中由一个节点集合组成。 该 图表达了数据流计算, 作出了一些类型的节点保持和更新持久状态和让分支及循 环控制结构类似于 Naiad 的行为方式的扩展。客户一般都会使用 TensorFlow 支持的前端语言( C+ 或者 Python)构建一个计算图。下图表示一段样例使用 Python 构建并执行

5、了一个 TensorFlow 的计算图: 下图表示结构计算图: - 3 - 在一幅 TensorFlow 图中,每个节点 (node)有一个或者多个输入和零个或 者多个输出,表示一种操作(operation )的实例化。流过图中正常的边(输出 到输入)的值都是张量( tensor ),任意维度的数组其中基础元素类型是指定的 或者在图的构造过程中自动推断出来的。特别的边,我们称之为控制依赖 (control dependencies),同样也存在在图中:这类边上没有数据流过,但是 他们表示源节点必须在目标节点的控制依赖开始执行前完成运行。由于我们的模 型包括可变状态, 控制依赖可以被直接用来确保

6、 happens-before 关系。我们的 实现同样会插入控制依赖来确保独立操作之间的顺序,比如说作为控制内存使用 最高峰值的方式。 1)操作和核( kernel ) 一个操作有一个名字。它表示一个抽象的计算(比如说,“矩阵相乘”或者 “相加”)。一个操作可以有属性(attribute),所有的属性必须提供或者在 图构造的过程中推断出以实例化一个节点来执行操作。属性通常的使用方式是让 操作在不同的张量元素类型上多态 (例如,两个 float 类型的张量和两个 int32 类型的张量)。核( kernel )是一种操作的特别实现,可以运行在一个特定类型 的设备上(如 CPU 或者 GPU )。

7、TensorFlow 的 binary 定义了可以通过注册 - 4 - (registration)机制实现的操作和核的集合上, 这个集合可以通过连接额外的 操作/ 核的定义 / 注册。下表表示内置于 TensorFlow 核心库的一些操作类型。 2)会话( session ) 客户端通过创建会话( session )和 TensorFlow 系统进行交互。为了创建一 个计算图,会话接口支持外部(external)方法来提升当前由包含额外节点和边 的会话图(当会话创建时初始的图是空的)。另一个由会话接口提供的主要的操 作就是 Run,以需要计算的输出名称和替换某些输出节点的张量的操作集合作 为

8、其参数输入。 通过控制Run 的参数,TensorFlow 的实现可以计算所有节点的 必须执行传递闭包来计算需要的输出,然后安排执行合适节点来保证他们的依赖 关系。大多数TensorFlow 的使用都是针对一个图启动一个会话,然后执行整个 图或者通过Run 多次调用执行分离的子图。 3)变量( variable ) 在大多数计算中,图都是执行多次的。大多数的张量在一次执行后不会存活。 然而,变量( variable)是一种特别的操作,可以返回一个在图执行若干次过程 中存活的持久化的可变张量的句柄。这个句柄可以传递给一系列特定的操作,例 如 Assign 和 AssignAdd(等同于+=)就可

9、以改变其引用的张量了。对应 TensorFlow 在机器学习中的应用,模型的参数典型地就存放在变量引用的张量 中,并作为模型训练图的Run 的一部分进行更新。 2、实现 TensorFlow 系统的主要部分就是客户端, 它使用了会话接口来和master 及一个 或者多个的worker processes 进行通信,每个worker process 负责按照master - 5 - 的要求执行对一个或者多个计算设备(CPU 或者)的任意访问和在这些设备上 进行图节点的计算。我们有本地和分布式实现的TensorFlow 接口。本地实现通 常是客户端、 master 和 worker 都是在同一台机

10、器上单一的操作系统进程上运 行。分布式实现采用了本地实现的很多的代码,但是扩展了对客户端、 master 和 worker 可以在不同的机器的不同的进程上运行的场景支持。 1)设备 设备是 TensorFlow 的计算核心。 每个 worker 负责一个或者多个设备, 每个设 备有一个设备类型和一个名字。 设备名字由识别设备类型的部分,在 worker 中 的设备索引,以及在分布式设定中,worker 的 job 和任务的标志构成。 2)张量 张量是一种有类型的、 多维度数组。支持若干张量元素类型, 包含大小为从 8 bit 到 64 bit 的带符号和无符号整型, IEEE 浮点数和双精度类

11、型、复数类型和字 符串类型。后台存储通过一个分配器进行管理, 该分配器由张量所处的设备确定。 3)变量 变量维护图执行过程中的状态信息。 通常会将一个统计模型中的参数表示为一组 变量。例如, 你可以将一个神经网络的权重作为某个变量存储在一个 tensor 中。 在训练过程中 , 通过重复运行训练图 , 更新这个 tensor 。 4)Fetch (输入) 为了取回操作的输出内容, 可以在使用 Session 对象的 run() 调用 执行图时 , 传入一些 tensor, 这些 tensor 会帮助你取回结果 . 在之前的例子里 , 可以单 个节点 state, 也可以取回多个 tensor

12、。 5)Feed(输出) feed 使用一个 tensor 值临时替换一个操作的输出结果. 可以提供 feed 数据 作为 run() 调用的参数 . feed 只在调用它的方法内有效, 方法结束 , feed 就 会消失。 6)单设备执行 - 6 - 单一的 worker进程运行在单一的设备上。 图上的节点按照代表节点之间的顺序 执行。每个节点上设置一个计数来记录这个节点上还没有执行的依赖。一旦这个 计数变为0,节点就可以被调度使用,并会加入到待续的队列中。待续队列按 照某个非指定的顺序处理,指派节点执行的kernel 到设备对象上。当一个节点 完成执行,所有依赖这个完成节点的节点计数都会增

13、加。 3)多设备执行 (1)节点的放置 给定计算图, TensorFlow 实现的主要责任之一就是将计算映射到可用的设 备集合上。该置放算法的输入是一个代价模型,包括对每个图节点的输入和输出 张亮的规模的估计, 和对每个节点在给定其输入张量时的计算时间。置放算法首 先运行模拟的图的执行过程,对每个节点使用贪心策略选择一个设备。 置放算法从计算图的源点开始, 在系统中的每个设备上模拟相应的活动。对 每个在遍历中抵达的节点, 会考虑可选设备的集合。 对那些拥有多个可选设备的 节点,置放算法使用一种贪心策略来检查在每个可能的置放节点需要的完成时 间。节点操作完成最快的设备会被选作该操作的设备,置放决

14、策会继续针对图中 其他的节点进行处理。 (2)交叉设备通信 之前是根据设备划分节点, 现在是根据发送和接受划分节点。可以保证资源设备 到目的设备中需要的张量数据只被传输一次,目的设备仅为张量分配一次内存。 3)分布式执行 分布式执行和多设备执行非常相似。布局算法之后,每个设备创建一个子 图。发送和接受节点对在工作进程中使用远程通讯机制例如TCP 、RDMA 等在机器 - 7 - 边界之间移动数据。 3、扩展 该部分介绍了程序模块中一些更高级的功能。分别是:梯度计算、部分执行、 设备限制、控制流、输入操作、队列、容器。 4、优化 该部分介绍了 TensorFlow 系统中用于提升性能和资源利用率

15、的优化。包括: 通用子表达式消除、控制数据通信和内存分配、异步kernel 、用于 kernel 实现 的优化库、有损压缩。 5. 总结 1、TensorFl ow 基本使用 1、使用图 (graph) 来表示计算任务 . 2、在被称之为会话 (Session) 的上下文 (context) 中执行图 . 3、使用 tensor 表示数据 . 4、通过 变量 (Variable) 维护状态 . 5、使用 feed 和 fetch 为任意操作输入和输出数据. 2、使用步骤 1)构建图 构建图的第一步 , 是创建源op (source op). 源 op 的输出被传递给其它op 做运算。 Pyth

16、on 库中, op 构造器的返回值代表被构造出的op 的输出 , 这些返回 值可以传递给其它op 构造器作为输入。 2)在一个会话中启动图 构造阶段完成后 , 才能启动图 . 启动图的第一步是创建一个Session 对象, 如果无任何创建参数 , 会话构造器将启动默认图.Session 对象在使用完后需要关 闭以释放资源 . 除了显式调用close 外, 也可以使用“with“ 代码块来自动完 - 8 - 成关闭动作。 3)计算图 TensorFlow 程序通常被组织成一个构建阶段和一个执行阶段. 在构建阶段 , op 的执行步骤被描述成一个图. 在执行阶段 , 使用会话执行图中的op。例如

17、, 通常在构建阶段创建一个图来表示和训练神经网络, 然后在执行阶段反复执行 图中的训练op。 TensorFlow 支持 C, C+, Python 编程语言 . 目前 , TensorFlow 的 Python 库更加易用 , 它提供了大量的辅助函数来简化构建图的工作, 这些函数尚未被 C 和 C+ 库支持。 3、安装:支持 Linux 和 Mac(Linux 安装示例) 1、安装 Python的工具包 pip 2、安装 TensorFlow 3、安装 Python的沙箱工具 virtualenv(为了不来回修改各种环境变量) 4、将 TensorFlow安装到 virtualenv 中 4

18、、应用 整个系统是分布式的, 不同节点可映射到不同主机上 (包括手机到超级计算 机),或者将不同数据,分别在CPU 和 GPU 中计算。 其灵活体现在: 1. TensorFlow 是一套通用计算架构: o“深度学习”由系统核心之上的一组库支持 o对其他机器学习算法同样适用 o能应付高性能计算( HPC )任务 o抽象能力强,隐藏了底层设备和硬件,又可在需要时暴露 2. 易于扩展: o核心系统定义了一组标准Operation及 Kernel (与设备相关的操 作实现) - 9 - o易于定义新的 Operation 及 Kernel 1)优点 1、TensorFlow 支持异构设备分布式计算,

19、能够在各个平台上自动运行模型, 从电话、单个 CPU / GPU 到成百上千 GPU 卡组成的分布式系统。目前其支持 CNN、RNN 和 LSTM 算法,这都是目前在图像,语音和自然语言处理中最流 行的深度神经网络模型。 2、TensorFlow支持多种编程语言,提供了很多深度学习模型库,易使用。 3、在很多指标上, TensorFlow 要比 DistBelief 要快一倍,更灵活。 4、TensorFlow 在架构设计,跨平台可移植性,对工业界的帮助有很大潜在可 能性。比如语音识别、自然语言理解、计算机视觉、广告等等都可以应用这种 深度学习算法。 2)缺点 1、TensorFlow 是一个

20、程序库,供数据分析人员使用,但是只有Python 和 C+ 接口(单机版工具包) 。TensorFlow不是一个工具,没有GUI,必须得依靠程序 调用来运行。 2、不支持 Windows,没有 Windows 的官方安装指南, 可以在 Linux 和 Mac 环境 下使用。 3、现公布的版本只支持单机,不支持多机的分布式环境。因此无法支持大规模 数据或模型的高速高精度学习。 4、Tensor Flow缺乏公开的评测数据, 没有在专业的 dataset上进行性能测试, 也 没有与其它类似框架进行比较,具体性能如何有待进一步探讨。 5、其他机器学习开放平台 1)Facebook 基于 Torch

21、的深度学习插件 Torch 作为一个协助机器学习技术开发的开源环境,一直以来是很多人工智 能项目的核心,不管是在学校研究或者是类似 Google 、Twitter 和 Intel这样 的公司,都采用这一框架。 开源代码 &工具: Torch、iTorch 、fbcunn 、fbnn、fbcuda 、fblualib。 - 10 - 主要技术: 1、基于 FFT的卷积层:在训练ConvNets中卷曲占用了大部分的计算时间, 因此 Facebook 已经花了相当大的工程努力提高GPU卷积层。这项工作成效 显着,达到目前公布的最快代码的23.5 倍。 2、多 GPU 之上的并行化: Facebook

22、一直努力实现在多GPU 上并行训练神经 网络模型的能力,通过数据并行和模型并行模块(fbcunn 的一部分),实现 代码自动调度模型在多个GPU 上的最大化加速。 3、快速 Temporal 卷积,速度相比Torch 的 cunn 实现快 1.5 倍至 10 倍。 4、用于神经语言模块(Neural Language Models)和文字嵌入的快速 LookupTable。比在 Torch/ NN 下快很多。 5、Hierarchical SoftMax模块,使得现在分类百万类成为实际可行的策略 作用:对于训练图像识别,自然语言处理或其他应用程序的大规模深度 学习系统(特别是卷积网络) ,fb

23、cunn 很有帮助。 效果:加快了基于 Torch 的深度学习项目的运行速度,允许在更短的时 间训练规模更大的神经网络,加快研究项目。 2)微软分布式机器学习工具包DMTK DMTK (Dstributed Machine Learning Toolkit) 当前包括以下组件: 1、DMTK 分布式机器学习框架:它由参数服务器和客户端软件开发包 (SDK) 两部分构成。 2、LightLDA:LightLDA 是一种全新的用于训练主题模型,计算复杂度与主 题数目无关的高效算法。 3、分布式词向量:为两种计算词向量的算法提供了高效的分步式实现:一 种是标准的word2vec 算法,另一种是可以对

24、多义词计算多个词向量的新算 法。 微软 DMTK开源版则支持分布式、异构、异步计算集群环境部署。DMTK 在算法方面实现了创新,可以用更少的资源,训练出大N个数量级的模型。 该工具包使机器学习的开发者只需要专注于数据、模型和模型训练等机器学 习的核心逻辑部分。 3)IBM 开源机器学习平台SystemML - 11 - SystemML 是灵活的,可伸缩机器学习 (ML) 语言,使用 Java 编写。机器 学习 (ML) 是指无需显式的编程即可让计算机学习的能力。SystemML 先进的机 器学习主要基于两方面: 1、SystemML 语言,声明式机器学习 (DML) 。SystemML 包含

25、线性代数原语,统 计功能和 ML 指定结构,可以更容易也更原生的表达 ML 算法。算法通过 R 类 型或者 Python 类型的语法进行表达。 2、SystemML 提供自动优化功能,通过数据和集群特性保证高效和可伸缩。 SystemML 可以在 MapReduce 或者 Spark 环境运行。 优点: 1、可定制算法 2、多个执行模式,包括单个,Hadoop批量和 spark 批量 3、自动优化 4)百度深度机器学习开源平台 开源项目 DMLC :Deep Machine Learning in Common ,目的是提供更优质和 更易使用的分布式机器学习系统。关键技术如下: 1、Xgboo

26、st:速度快效果好的Boosting 分类器模型。可以解决分类器数千次迭 代运算产生的计算瓶颈。单机采用多线程来加速树的构建,并依赖rabbit部件 进行分布式计算。 2、 CXXNET: 极致的 C+ 深度学习库。包含灵活的公式支持和极致的C+ 模板编程: 核心思想是 expression template ,它通过模板编程技术将开发者写的公式自动 展开成优化过的代码, 避免重载操作符等带来的额外数据拷贝和系统消耗。同时 提供了通用的分布式解决方案, 通过单机多卡和多机多卡在不同的数据下的一致 性来达到算法速度和系统性能的最佳平衡。 3、Minerva :高效灵活的并行深度学习引擎,提供一个

27、高效灵活的平台,快速实 现一个高度定制化的神经网络。 4、Parameter Server :组件参数服务器,通过降低网络通信开销,如异步执行、 灵活的数据一致性模型、选择性通信、缓冲与压缩。以及容灾措施,如服务节点 和计算节点采用不同的容灾策略、使用一致性哈希和链备份提高系统性能。 未来规划:开发组件虫洞。 目的是对所有组件提供一致的数据流支持,无论 - 12 - 数据以任何格式存在网络共享磁盘。此外,它还提供统一脚本来编译和运行所有 组件。使得用户既可以在方便的本地集群运行任何一个分布式组件,又可以将任 务提交到任何一个包括Amazon EC2 、Microsfot Azure 和 Goo

28、gle Compute Engine 在内的云计算平台,并提供自动的容灾管理。 6、比较 表 1 功能特性 TensorFlow 一个用来编写和执行机器学习算法的工具。计算在数据流图中完成,图中 的节点进行数学运算,边界是在各个节点中交换的张量(Tensors- 多维 数组)。 TensorFlow负责在不同的设备、内核以及线程上异步地执行代 码,目前支持CNN 、RNN和 LSTM等图像、语音和自然语言处理(NLP )领 域最流行的深度神经网络模型。 DMTK 一个分布式机器学习框架。件开发包(SDK)两部分构成。参数服务器支持 存储混合数据结构模型、接受并聚合工作节点服务器的数据模型更新、

29、控 制模型同步逻辑;客户端软件开发包负责维护节点模型缓存( 与全局模型 服务器同步 ) 、本地训练和模型通讯之间的流水线控制以及片状调度大模 型训练。 它包含 DMTK 框架、 LightLDA 和分布式词向量 (Word Embedding) 三个组件。 SystemML 一门灵活的、可伸缩的机器学习 (ML) 语言,支持描述性分析、分类、聚 类、回归、矩阵分解以及生存分析等算法。DML中指定的算法能够根据 数据和集群特性使用基于规则和基于成本的优化技术动态地编译和优化。 表 2 执行环境与模式 TensorFlow 能够在台式机、服务器或者移动设备的CPU 和 GPU 上运行,也可以使 用

30、 Docker 容器部署到云环境中。在处理图像识别、语音识别和语言翻译 等任务时, TensorFlow依赖于配备图像处理单元(GPU )的机器和被用 于渲染游戏图像的芯片,它对这些芯片依赖度比想象中的高。当前开源的 版本能够运行在单机上,暂不支持集群。操作系统方面,TensorFlow能 够运行在Linux 和 MacOS 上。 DMTK 采用了传统的客户端-服务器架构,有多个服务器实例运行在多台机器上 负责维护全局模型参数,而训练例程(routines )则使用客户端API 访问 并更新这些参数。 为了适应不同的集群环境,DMTK 框架支持两种进程间 - 13 - 的通信机制: MPI 和

31、 ZMQ 。应用程序端不需要修改任何代码就能够在这 两种方式之间切换。DMTK 支持 Windows和 Linux (测试环境为Ubuntu 12.04 )两种操作系统。 SystemML 有多种执行模式。在独立模式下, SystemML能够运行在单台机器上,这 样数据科学家就能够在本地开发算法,不需要分布式集群。另外还可以将 算法分发到Hadoop或者Spark上,从而利用已有的资源和技能。 SystemML能够运行于Windows 、 Linux 以及 MacOS 上。 表 3 实现语言、 API 接口及文档 TensorFlow 核心是使用C+编写的,有完整的Python API 和 C

32、+ 接口,同时还有一个 基于 C的客户端API。目前 TensorFlow 的 Python API 需要 Python 2.7, 对于 Python 3的支持正在开发中。在TensorFlow 的官网上Google 提供 了 完整的 API 接口说明、 白皮书与 示例教程(包括针对初学者和专 家的)。 DMTK 使用 C+编写的,提供了一个客户端API 和 SDK 。 DMTK的官网对 DMTK 框架、 LightLDA 、分布式词向量的应用场景、下载、安装、配置、运行以 及性能等方面都做了详尽的介绍。 SystemML 使用 Java 语言编写,开发人员能够使用类似于R或者 Python

33、的语法表达 算法,通过Java、Scala 以及Python 操作 SystemML。文档方面, SystemML基本集中于GitHub 上,包括构建、测试、独立模式运行命令以 及一个线性回归的示例。 表 4 应用场景 TensorFlowGoogle 已将 TensorFlow 用于 GMail(SmartReply ) 、搜索( RankBrain ) 、 图片(生成图像分类模型-Inception Image Classification Model) 、 翻译器(字符识别)等产品。 DMTK Microsoft并没有在DMTK的官网上透露其在内部的应用情况,但是从其 功能特点以及定位来看或许更倾向于自然语言处理方面,例如文本分类与 聚类、话题识别以及情感分析等。 SystemML SystemML 是 IBM 研发了超过十年的机器学习技术,沃森( Watson)在几 年前的大型活动里就整合了很多SystemML的机器学习功能,当然目前开 源的 SystemML依然在孵化阶段。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1