Tensorflow分布式训练原理

2023-11-09

以下文章摘录自:

《机器学习观止——核心原理与实践》

京东: https://item.jd.com/13166960.html

当当:http://product.dangdang.com/29218274.html

(由于博客系统问题,部分公式、图片和格式有可能存在显示问题,请参阅原书了解详情)

————————————————

版权声明:本文为CSDN博主「林学森」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/xuesen_lin/

 

 

1.1        Tensorflow分布式训练

1.1.1        Tensorflow的分布式原理

1.1.1.1       Google DisBelief

我们分析tensorflow的分布式原理,不得不先提到Google的另一个系统DisBelief——因为tensorflow的一些分布式核心理念都来源于后者。简单来讲,DisBelief是Google内部开发的第一代面向深度学习的分布式系统。虽然DisBelief具备较好的扩展性,但它对一些研究场景的支持却不够灵活,所以Google才又设计出了第二代深度学习分布式系统——也就是大家所熟知的TensorFlow。它相比第一代系统不仅速度更快,更为灵活,而且更能满足新的研究场景需求。据悉这两套系统都被广泛应用于Google的技术产品中,例如语音识别,图像识别及翻译等。

在DisBelief的设计框架中,主要包含了如下两个核心元素:

l  Parameter servers

Parameter servers负责保存和更新模型状态(例如参数),同时可以根据worker计算出的梯度下降数值来更新参数

l  Worker replicas

Worker replicas的主要任务是执行具体的计算工作,它会计算神经网络的loss函数以及梯度下降值

 

Tensorflow作为Google的第二代深度学习分布式系统,不但很好地继承了DisBelief的上述设计,而且做了不少功能上的扩展改进和性能上的优化。例如在灵活性方面,Tensorflow与DisBelief最大的区别在于:后者的ps和worker是两个不同的程序,而在tensorflow中ps和worker的运行代码几乎完全相同。

DisBelief的核心实现可以参考下图的描述。


 

图  Google DisBelief系统

引用自Tensorflow dev summit

 

下图是Tensorflow的分布式示意图:

: http://ww1.sinaimg.cn/large/9c506fcagw1f52tn9s36qj20n00gygnk.jpg

图  Tensorflow分布式示意图

1.1.1.2       分布式TF的基本概念

我们先针对tensorflow分布式实现中的几个重要概念进行讲解,这样大家后续再遇到它们时就不会“一头雾水”了。

(1) Tensorflow Cluster

Tensorflow cluster指的是一系列针对graph进行分布式计算的task任务,其中每一个task又和server相关联——而server则包含了一个用于创建session的master节点和一个用于graph计算的worker节点。

(2) Task

前面我们提到了Cluster是task的集合,大家肯定会有疑问——那么task又是什么呢?简单来讲,task就是主机上的一个进程。而且大多数情况下,一台机器只运行一个task。

(3) Job

Tensorflow的一个cluster也可以被划分为1个或者多个jobs,然后每个job则包含了1个或者多个tasks,所以job是task的集合。那么为什么会有job这个概念,它想解决什么样的问题呢?

这是因为在分布式深度学习框架中,存在两种job——即Parameter Job和Worker Job。根据之前的讲解,我们应该知道前者用于执行参数的存储和更新工作,而后者则负责实际的图计算。当参数数量太大时,就需要多个tasks来协同了。

(4) Parameter server和Worker replicas

Parameter server和worker replicas的概念我们在前面DisBelief小节已经做过解释,这里就不再赘述了。

(5) Client

Client一般由Python或者C++编写,它通过构建Tensorflow graph和Session来与cluster交互。

(6) Master service

Master service实现了tensorflow::Session接口,同时负责协调1或3个worker services。

(7) Worker service

Worker service实现了worker_service.proto,它利用本地设备来执行Tensorflow graph中的一部分。Tensorflow中的所有server都会实现Master service和Worker service。

如下示意图所示:

图  Tensorflow分布式核心元素示意图

 

1.1.2        单机多GPU下的并行计算

Tensorflow相比于其它机器学习平台的一个明显优势还在于其强大的并行计算能力。那么应该怎么理解这个“并行”的概念呢?通俗来讲,“并行”就是指任务可以被拆分成多份,同步执行计算过程,从而有效降低任务耗时。

不过在机器学习这个场景下,我们认为“并行”还可以被进一步细分。下面我们为大家逐一分析各种可能的Tensorflow程序的运行情况。

(1)   一对一的情况(任务不拆分)

也就是1个任务(不拆分)在1个CPU/GPU上运行的情况,此时并不涉及并行计算。如下示例图所示:

图  一对一的情况(任务不拆分)

 

那么我们怎么指定一个Task是在CPU上或者GPU上运行呢?事实上Tensorflow已经帮大家充分考虑到了这一点,并提供了tf.device接口来满足开发者的需求。而且Tensorflow还提供了log_device_placement选项来打印出每步运算操作的硬件承载体。

下面我们结合范例来做详细讲解。如下代码段所示:

import tensorflow as tf

 

var_a = tf.constant([2], name='var_a')

var_b = tf.constant([3], name='var_b')

var_c = var_a + var_b

 

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

print (sess.run(var_c))

如果你的tensorflow程序是在CPU上执行了的话,那么会有类似如下的输出:

Device mapping: no known devices.

add: (Add): /job:localhost/replica:0/task:0/device:CPU:0

var_b: (Const): /job:localhost/replica:0/task:0/device:CPU:0

var_a: (Const): /job:localhost/replica:0/task:0/device:CPU:0

而如果是在GPU上执行了的话,输出就变成了:

Device mapping:

/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: GeForce GT 650M, pci bus id: 0000:01:00.0, compute capability: 3.0

add: (Add): /job:localhost/replica:0/task:0/device:GPU:0

var_b: (Const): /job:localhost/replica:0/task:0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tensorflow分布式训练原理 的相关文章

  • 机器学习模型的可解释性——LIME

    以下文章摘录自 机器学习观止 核心原理与实践 京东 https item jd com 13166960 html 当当 http product dangdang com 29218274 html 由于博客系统问题 部分公式 图片和格式
  • chatgpt平替,清华chatglm本地化部署

    ChatGLM 6B 是一个开源的 支持中英双语的对话语言模型 基于 General Language Model GLM 架构 具有 62 亿参数 因为我的cpu跑不了 在linux服务器端进行部署 前提是conda已经安装并配置好 因为
  • Pytorch深度学习(四):用Pytorch实现线性回归

    用Pytorch实现线性回归 一 概念 1 准备数据集 2 使用Class设计模型 3 构建损失函数和优化器的选择 4 进行训练的迭代 二 完整代码如下 一 概念 上图主要介绍了使用Pytorch解决问题的四个步骤 1 准备数据集 1 准备
  • 【机器学习】Excel对数据线性回归分析

    目录 一 实验目的 二 高尔顿数据集 1 父子身高 2 母子身高 三 Anscombe四重奏 四 参考 一 实验目的 1 线性回归练习 父亲高则儿子高 父亲矮则儿子矮 即父亲与儿子身高相关 且为正相关 母高高一窝 父高高一个 即母亲的身高比
  • 人工智能和机器学习

    机器学习 1 什么是机器学习 在进行特定的编程的情况下 给与计算机学习能力的领域 机器学习是从数据中自动分析获得模型 并利用模型对未知数据进行预测 2 机器学习与人工智能 2 1人工智能发展的三个阶段 1980年代是正式形成时期 1990
  • Tensorflow分布式训练原理

    以下文章摘录自 机器学习观止 核心原理与实践 京东 https item jd com 13166960 html 当当 http product dangdang com 29218274 html 由于博客系统问题 部分公式 图片和格式
  • 【机器学习】鸢尾花Iris数据集进行线性分类

    目录 一 实验准备 二 线性分类 1 原始数据 2 训练模型 3 绘制决策边界 4 设置参数C 三 鸢尾花数据集分类 1 取萼片的长宽作特征分类 2 取花瓣的长宽作特征分类 四 参考 一 实验准备 安装python3 6 3 7 Anaco
  • Python 人脸表情识别

    人脸表情识别 一 图片预处理 二 数据集划分 三 识别笑脸 四 Dlib提取人脸特征识别笑脸和非笑脸 参考 环境搭建可查看Python人脸识别微笑检测 数据集可在https inc ucsd edu mplab wordpress inde
  • 什么是主动学习(Active Learning)?定义,原理,以及主要方法

    数据是训练任何机器学习模型的关键 但是 对于研究人工智能的企业和团队而言 数据仍是实现成功的最大障碍之一 首先 您需要大量数据来创建高性能模型 更重要的是 您需要标注准确的数据 虽然许多团队一开始都是手动标注数据集 但更多团队已逐渐实现数据
  • 自动机器学习是什么?概念及应用

    自动机器学习 Auto Machine Learning 的应用和方法 随着众多企业在大量场景中开始采用机器学习 前后期处理和优化的数据量及规模指数级增长 企业很难雇用充足的人手来完成与高级机器学习模型相关的所有工作 因此机器学习自动化工具
  • 人工智能基本常识:让深度学习技术更加人性化

    近年来 人工智能技术日臻成熟 现在 许多产品和服务都依靠人工智能技术实现自动化和智能化 因此它与我们的日常生活息息相关 无论是为我们带来各种便利的家用设备 还是我们一直在使用的产品制造方式 人工智能的影响无所不在 几乎在我们生活的方方面面推
  • 澳鹏干货解答!“关于机器学习的十大常见问题”

    探索机器学习的常见问题 了解机器学习和人工智能的基本概念 原理 发展趋势 用途 方法和所需的数据要求从而发掘潜在的商机 什么是机器学习 机器学习即教授机器如何学习的过程 为机器提供指导 帮助它们自己开发逻辑 访问您希望它们访问的数据 机器学
  • 什么是“人机协同”机器学习?

    人机协同 HITL 是人工智能的一个分支 它同时利用人类智能和机器智能来创建机器学习模型 在传统的 人机协同 方法中 人们会参与一个良性循环 在其中训练 调整和测试特定算法 通常 它的工作方式如下 首先 对数据进行人工标注 这就为模型提供了
  • 互操作性(Interoperability)如何影响着机器学习的发展?

    互操作性 Interoperability 也称为互用性 即两个系统之间有效沟通的能力 是机器学习未来发展中的关键因素 对于银行业 医疗和其他生活服务行业 我们期望那些用于信息交换的平台可以在我们需要时无缝沟通 我们每个人都有成千上万个数据
  • 详解数据科学自动化与机器学习自动化

    过去十年里 人工智能 AI 构建自动化发展迅速并取得了多项成就 在关于AI未来的讨论中 您可能会经常听到人们交替使用数据科学自动化与机器学习自动化这两个术语 事实上 这些术语有着不同的定义 如今的自动化机器学习 即 AutoML 特指模型构
  • 互操作性(Interoperability)如何影响着机器学习的发展?

    互操作性 Interoperability 也称为互用性 即两个系统之间有效沟通的能力 是机器学习未来发展中的关键因素 对于银行业 医疗和其他生活服务行业 我们期望那些用于信息交换的平台可以在我们需要时无缝沟通 我们每个人都有成千上万个数据
  • 详解数据科学自动化与机器学习自动化

    过去十年里 人工智能 AI 构建自动化发展迅速并取得了多项成就 在关于AI未来的讨论中 您可能会经常听到人们交替使用数据科学自动化与机器学习自动化这两个术语 事实上 这些术语有着不同的定义 如今的自动化机器学习 即 AutoML 特指模型构
  • 人工智能 AI 如何让我们的生活更加便利

    每个人都可以从新技术中获益 一想到工作或生活更为便利 简捷且拥有更多空余时间 谁会不为之高兴呢 借助人工智能 每天能够多一些空余时间 或丰富自己的业余生活 为培养日常兴趣爱好增添一点便利 从电子阅读器到智能家居 再到植物识别应用和智能室内花
  • AI在保护环境、应对气候变化中的作用

    对于AI生命周期数据领域的全球领导者而言 暂时搁置我们惯常的AI见解和AI生命周期数据内容产出 来认识诸如世界地球日这样的自然环境类活动日 似乎是个奇怪的事情 我们想要知道 数据是否真的会影响我们的地球环境 简而言之 是 确实如此 但作为一
  • AI在广告中的应用——预测性定位和调整

    营销人员的工作就是在恰当的时间将适合的产品呈现在消费者面前 从而增加他们购买的可能性 随着时间的推移 营销人员能够深入挖掘越来越精准的客户细分市场 他们不仅具备了实现上述目标的能力 而且这种能力还在呈指数级提升 在AI技术帮助下 现在的营销

随机推荐

  • JVM-垃圾收集算法

    目录 1 分代收集理论 2 标记 清除算法 3 标记 复制算法 4 标记 整理算法 1 分代收集理论 分代思想也很简单 就是根据对象的生命周期将内存划分 然后进行分区管理 当前商业虚拟机的垃圾收集器大多数都遵循了 分代收集 Generati
  • 登录工程三:现代Web应用中的身份验证实践

    登录系统 首先 我们要为 登录 做一个简要的定义 令后续的讲述更准确 之前的两篇文章有意无意地混淆了 登录 与 身份验证 的说法 因为在本篇之前 不少 传统Web应用 都将对身份的识别看作整个登录的过程 很少出现像企业应用环境中那样复杂的情
  • 2023华为OD机试真题【开租建站】

    题目 当前IT部门支撑了子公司颗粒化业务 该部门需要实现为子公司快速开租建站的能力 建站是指在一个全新的环境部署一套IT服务 每个站点开站会由一系列部署任务项构成 每个任务项部署完成时间都是固定和相等的 设为1 部署任务项之间可能存在依赖
  • Excel:Excel中对特殊字符的转义和处理

    对引号转义 excel公式中用两个引号代表一个引号 abc abc 会得到abc abc abc 会得到字符串 abc 处理换行符 公式中如果需要字符串换行 这样写 换 CHAR 10 行 在单元格里输入换行符 用Alt Enter输入 在
  • pywinauto 使用

    Pywinauto是基于Python开发的 用于自动化测试的脚本模块 主要操作于Windows标准图形界面 它可以允许你很容易的发送鼠标 键盘动作给Windows的对话框和控件 其中 最主要功能为对windows标准控件的一系列动作可编程处
  • tiny-cnn执行过程分析(MNIST)

    在http blog csdn net fengbingchun article details 50573841中以MNIST为例对tiny cnn的使用进行了介绍 下面对其执行过程进行分析 支持两种损失函数 1 mean squared
  • JWT介绍

    JWT介绍 1 1 jwt原则 最简单理解 jwt本质就是 把用户信息通过加密后生成的一个字符串 JWT的原则是在服务器身份验证之后 将生成一个JSON对象并将其发送回用户 UserName Chongchong Role Admin Ex
  • Ubuntu安装scrapy

    先检查是否安装过lxml openSSL 没有的话 得安装依赖包了 安装lxml 参考官网安装 http lxml de installation html 如果python是2 x的 用以下命令 sudo apt get install
  • unity 动画控制

    播放控制 Animator animator animator speed 0 停止播放 animator speed 1 倒放 animator Play stateName 0 0 播放指定状态 stateName是Animator窗口
  • 使用opencv画一些几何形状:cv2.line(),cv2.circle(),cv2.rectangle(),cv2.putText()

    1 cv2 line 划线 cv2 line img 10 10 510 510 0 255 0 5 img 图像 起点坐标 终点坐标 颜色 线的宽度 2 cv2 circle 画圆 cv2 circle img 50 50 10 0 0
  • css自学框架之图片懒加载

    首先解释一下什么叫图片懒加载 图片懒加载是一种在页面加载时 延迟加载图片资源的技术 也就是说图片资源在需要的时候才会加载 就是在屏幕显示范围内加载图片 屏幕显示范围外图片不加载 一 关键函数 用到的关键函数 globalThis Inter
  • 我是废物...

    我是废物
  • 【数据手册】CH340G芯片使用介绍

    1 概述 CH340是一系列USB总线适配器 它通过USB总线提供串行 并行或IrDA接口 CH340G集成电路提供通用的MODEM信号 允许将UART添加到计算机上 或将现有的UART设备转换为USB接口 2 特征 全速USB接口 兼容U
  • Bugku-CTF (web 持续更新) ——新手ctf记录

    目录 1 滑稽 2 计算器 3 GET 4 POST GET和POST的区别 5 矛盾 6 alert 7 你必须让他停下 8 game1 9 网站被黑 10 本地管理员 X Forwarded For 11 eval 12 变量1 13
  • Linux下的bochs安装

    强烈建议使用ubuntu系统 apt get指令太好用了 安装各种依赖相当简单 1 首先到bochs网站上下载一个linux版本bochs 在安装之前需要安装一些依赖 sudo apt get install build essential
  • JavaScript原生实现事件监听及手动触发

    事件监听 标签中的onxxx 比如
  • AOM联盟:AV1完成1.0版定稿

    在2018年第一季度结束前 AOM联盟完成了AV1 1 0版定稿 这是这一新兴生态的最新胜利 文 包研 图 AOM官网发布消息 今天 AV1的规格 参考代码和绑定格式向开发者开放 来源 AOM官网 北京时间3月28日晚间消息 AOM联盟宣布
  • Docker存储卷(一)详解

    目录 什么是存储卷 为什么要用存储卷 Docker存储卷的特性 Docker为容器提供了两种存放数据的资源 storage driver Data Volume bind mount 实例 docker managed volume 实例
  • getevent/sendevent 使用说明

    这两天准备写一下input子系统的分析 过程中发现了两个好工具 呵呵 就是本文介绍的主角 getevent用于获取当前系统input设备的一些参数和实时事件的数据 sendevent用于发送input事件 这样在调试的时候遇到有的样机按键坏
  • Tensorflow分布式训练原理

    以下文章摘录自 机器学习观止 核心原理与实践 京东 https item jd com 13166960 html 当当 http product dangdang com 29218274 html 由于博客系统问题 部分公式 图片和格式