学界 | 谷歌提出基于强化学习的优化配置方法:可让TensorFlow更充分利用CPU和GPU

选自arXiv

作者:Azalia Mirhoseini等

机器之心编译

参与:吴攀、李泽南

众所周知,深度学习是非常计算密集的,合理分配计算资源对于提升运算速度、节省能源等有着至关重要的价值。近日,谷歌的一篇 ICML 2017 论文提出了一种使用强化学习优化设备配置的方法,据称可以在一些网络计算上实现优于专家优化的方法的表现。机器之心对本文进行了摘要介绍。

论文:使用强化学习的设备配置优化(Device Placement Optimization with Reinforcement Learning)

论文地址:https://arxiv.org/abs/1706.04972

摘要

过去几年,我们见证了神经网络的训练和推理推动着计算能力需求的增长。目前解决这种需求的常用办法是搭建异构分布式计算环境,其中包含 CPU 和 GPU 这样的硬件设备。重要的是,神经网络模型在设备上的计算资源分配通常是由人类专家依靠简单的探索和直觉做出的。在本文中,我们提出了一种为 TensorFlow 计算图学习并优化设备任务分配的方法。其中最关键的思路是使用序列到序列模型来预测 TensorFlow 图中哪些子集应该运行在哪些可用设备上,然后将预测分配的执行时间用作奖励信号以优化序列到序列模型的参数。我们的结果在用于 ImageNet 分类的 Inception-V3 任务、RNN LSTM 语言建模和神经机器翻译任务上的表现优于普通手动设备配置(device placement)方式。

图 1 :基于强化学习的设备配置模型概览

图 2:设备配置模型的架构

3.2 架构细节

我们使用了一种序列到序列模型(Sutskever et al., 2014)来预测设备配置,该模型带有 LSTM(Hochreiter & Schmidhuber, 1997)和一个基于内容的注意机制(Bahdanau et al., 2015)。图 2 展示了我们模型的整体架构,其可以分成两个部分:编码器 RNN 和解码器 RNN。

编码器 RNN 的输入是输入图(input graph)的指令的序列。我们通过连接它们的信息嵌入这些指令。具体来说,对于每一个图 G,我们首先收集其指令的类型。其指令的类型描述了其基本的计算,比如 MatMul 或 conv2d。对于每一种类型,我们都存储一个可调节的嵌入向量。然后我们记录输出张量的每个指令列表的大小,然后把它们连接成一个固定大小的填充了 0 的列表,称为输出形状(output shape)。我们也取其 one-hot 编码向量,其表征了那些将输入和输出指引到每个指令的指令。最后,每个指令的嵌入都是其类型、其输出形状和其 one-hot 编码的邻接信息的连接。

该解码器是一个带有固定时间步骤数量的 attentional LSTM(Bahdanau et al., 2015),这个数量等于图 G 中的指令的数量。在每一步,该解码器输出该设备(device)以运行在同一编码器时间步骤的指令。每个设备都有其自己的可调节嵌入,然后其被用作下一个解码器时间步骤的输入。

图 3:分布式和异步的参数更新与奖励评估

表 2:由基于强化学习的方法所找到的设备配置方式和基准方法的运行时间比较(单位:秒,越低越好)。

对于每一个模型,第一行给出了带有 1 个 CPU 和 2 个 GPU 的结果;第二行给出了带有 1 个 CPU 和 4 个 GPU 的结果。最后一列给出了基于强化学习的配置优于最快基准方法的运行时间的提升。为了减少方差,少于 10 秒的运行时间都测试了 15 次,这里给出的是平均值。OOM 是指内存不足(Out Of Memory)。

图 4:神经机器翻译图的基于强化学习的配置。上面是编码器,下面是解码器。设备用不同颜色表示,其中无色表示指令在 CPU 上运行,不同的其它颜色表示不同的 GPU。相比于专家精心设计的配置,这个配置在运行时间上实现了 19.3% 的提升。

图 5:Inception-V3 的基于强化学习的配置。设备用不同颜色表示,其中无色表示指令在 CPU 上运行,不同的其它颜色表示不同的 GPU。相比于专家设计的配置,这个配置在运行时间上实现了 19.7% 的提升。

本文为机器之心编译,转载请联系本公众号获得授权。

本文分享自微信公众号 - 机器之心(almosthuman2014)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-06-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏磐创AI技术团队的专栏

谷歌最强NLP模型BERT如约开源,12小时GitHub标星破1500,即将支持中文

BERT终于来了!今天,谷歌研究团队终于在GitHub上发布了万众期待的BERT。

13820
来自专栏数据派THU

教你用TensorFlow实现神经网络(附代码)

? 来源:云栖社区 作者:Pavel Surmenok 本文长度为2600字,建议阅读5分钟 本文帮助你理解神经网络的应用,并使用TensorFlow解决现实...

29380
来自专栏机器之心

业界 | OpenAI提出新型神经网络:自动计算词对象,实现实体消岐

31170
来自专栏Python中文社区

利用深度学习建立流失模型(附完整代码)

失去一个老用户会带来巨大的损失,大概需要公司拉新10个新用户才能予以弥补。如何预测客户即将流失,让公司采取合适的挽回措施,是每个公司都要关注的重点问题。

39920
来自专栏AI研习社

TensorFlow实现神经网络入门篇

如果你一直关注数据科学/机器学习,你就不能错过深度学习和神经网络的热潮。互联网公司正在寻找这方面的人,而且从竞赛到开源项目,都有巨额奖金。 如果你对深度学习所提...

38740
来自专栏AI科技大本营的专栏

学习笔记 | Fast.ai深度学习实战课程Lesson2——带你深入了解CNN

Fast.ai 深度学习是我们此前推出的系列课程,共9节课,并且已经进行了汉化。课程主讲人是资深深度学习研究者Jeremy Howard 教授,他本人连续两年在...

72680
来自专栏AI研习社

手把手教你用Python 和 Scikit-learn 实现垃圾邮件过滤

文本挖掘(Text Mining,从文字中获取信息)是一个比较宽泛的概念,这一技术在如今每天都有海量文本数据生成的时代越来越受到关注。目前,在机器学习模型的帮助...

44280
来自专栏企鹅号快讯

机器学习系统设计03-机器学习入门应用案例

@[Markdown, 机器学习] Github源代码下载 参考书籍:《机器学习系统设计》 应用案例说明 我们有一个数据集,是一个网站每小时的web访问量,随着...

25650
来自专栏新智元

谷歌最强NLP模型BERT官方代码来了!GitHub一天3000星

昨天,谷歌在GitHub上发布了备受关注的“最强NLP模型”BERT的TensorFlow代码和预训练模型,不到一天时间,已经获得3000多星!

35430
来自专栏数据科学与人工智能

【DS】Doc2Vec和Logistic回归的多类文本分类

Doc2vec是一个NLP工具,用于将文档表示为向量,是word2vec方法的推广。 为了理解doc2vec,最好理解word2vec方法。但是,完整的数学细节...

34440

扫码关注云+社区

领取腾讯云代金券