分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018

栏目: 后端 · 发布时间: 6年前

内容简介:Google 开发者大会 (Google Developer Days,简称 GDD) 是展示 Google 最新开发者产品和平台的全球盛会,旨在帮助你快速开发优质应用,发展和留住活跃用户群,充分利用各种工具获得更多收益。2018 Google 开发者大会于 9 月 20 日和 21 日于上海举办。:point_right:2018 年 9 月 21 日 周玥枫(Google Brain 软件工程师)带来一场《分布式 TensorFlow:Distribution Strategy API》的演讲,本文将

Google 开发者大会 (Google Developer Days,简称 GDD) 是展示 Google 最新开发者产品和平台的全球盛会,旨在帮助你快速开发优质应用,发展和留住活跃用户群,充分利用各种 工具 获得更多收益。2018 Google 开发者大会于 9 月 20 日和 21 日于上海举办。:point_right: Google 开发者大会 2018 掘金专题

2018 年 9 月 21 日 周玥枫(Google Brain 软件工程师)带来一场《分布式 TensorFlow:Distribution Strategy API》的演讲,本文将对演讲做一个回顾。

为什么要分布式训练?

分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018

如上图所示,在单个 GPU 训练 Accuracy 需要花费 87 个小时。但是在实际的生产环境中,我们花费如此多的时间在单个模型的训练上。如果我们把时间从几天压缩到几个小时的话,在同样的时间里,可以训练更多的模型,尝试更多的想法,生产力将大大提高,所以使用分布式训练是实际生产环境所需要的。

Distribution Strategy API

分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018

目标:

  • 简单易用 - 极少的代码修改
  • 优秀的开箱性能
  • 多功能 - 支持不同的分布式架构和 API

用Keras 训练 ResNet50 (非分布式)

train_dataset = tf.data.Dataset(...)
eval_dataset = tf.data.Dataset(...)
model = tf.keras.applications.ReyNet50()
optimizer = tf.train.GradientDescentOptimizer(learning_rate = 0.1)

model.compile(loss = "categorcial_crossentropy",optimizer = optimizer)

model.fit(train_dataset, epochs = 10)
model.evaluate(eval_dataset)
复制代码

用Keras 在多个 GPU 上训练 ResNet50 (在 TensorFlow r1.11 中可用)

train_dataset = tf.data.Dataset(...)
eval_dataset = tf.data.Dataset(...)
model = tf.keras.applications.ReyNet50()
optimizer = tf.train.GradientDescentOptimizer(learning_rate = 0.1)

strategy = tf.contrib.distribute.MirroredStrategy()
model.compile(loss = "categorcial_crossentropy",optimizer = optimizer, 
    distribute = strategy)

model.fit(train_dataset, epochs = 10)
model.evaluate(eval_dataset)
复制代码

通过对比我们可以发现,仅仅只是对两行代码的修改就能实现多 GPU 的训练。即使用 MirroredStrategy API 无需修改 input pipeline ,无需修改模型、训练循环就可以实现多 GPU 训练,并且无缝支持 Checkpoints,metrics, summaries.

MirroredStrategy

仅仅通过两行代码的修改,就能实现多 GPU 训练, MirroredStrategy 做了些什么?

  • 数据并行
  • Mirrored Variables(镜像变量)
  • ALL- reduce
  • 同步训练

数据并行

分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018

Mirrored Variables(镜像变量)

分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018

ALL - reduce

分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018
分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018

同步训练

分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018
  • 每个设备都有模型 (模型为两层)
  • 每个设备拿到数据的一部分,用本地镜像变量进行计算
  • 用 ALL - reduce 交换梯度,对梯度就行求和,并用求和结果来更新本地的镜像变量
  • 只有当镜像更新之后才会进行下一步,从而保证了一致性

多 GPU 性能

分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018

在 Cloud TPU 上用 keras 训练 ResNet50 (Coming up in TF r1.12)

分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018

同样只需要修改上图中方框标记的两行代码,就可以实现云端 TPU 的拓展。

TPUStrategy

分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018

拓展到多机

分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018
分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018

部署到集群

分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018

推荐使用 kubernetes 部署集群

分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018

Collective ALL-Reduce Strategy

Collective Ops具有以下几个特点:

  • 自动选择最佳算法,融合梯度
  • 支持插件,可以添加支持新的架构和算法
  • 容错(Future)

同时,Collective 支持多种 All - Reduce 算法。

Ring All - Reduce

分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018

Hierarchical All - Reduce

分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018

其他多机架构

分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018

实现示例如下:

分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018

同样只需要修改少量的代码,就可实现我们想要的效果。

分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018
通过 Kubernetes

可以设置 PS 数量

新的分布式训练方法

分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018
我们可以在笔记本上构建我们的模型,集群跑 TensorFlow

服务并提供接口,笔记本通过接口来实现分布式训练。

分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018

如上图所示,启动集群。

代码实例如下:

分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018

在笔记本上启动之后,我们可以查看到运行日志。可以通过关闭进程来结束训练,也同样可以修改模型用同样的集群来进行训练。


以上所述就是小编给大家介绍的《分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

文本上的算法——深入浅出自然语言处理

文本上的算法——深入浅出自然语言处理

路彦雄 / 人民邮电出版社 / 2018-3-1 / 69.00元

本书结合作者多年学习和从事自然语言处理相关工作的经验,力图用生动形象的方式深入浅出地介绍自然语言处理的理论、方法和技术。本书抛弃掉繁琐的证明,提取出算法的核心,帮助读者尽快地掌握自然语言处理所必备的知识和技能。本书主要分两大部分。第一部分是理论篇,包含前3章内容,主要介绍一些基础的数学知识、优化理论知识和一些机器学习的相关知识。第二部分是应用篇,包含第4章到第8章,分别针对计算性能、文本处理的术语......一起来看看 《文本上的算法——深入浅出自然语言处理》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具