TensorFlow 2.0将把Eager Execution变为默认执行模式,你该转向动态计算图了

crazyladybug509 发布于1月前 阅读75次
0 条评论

8 月中旬,谷歌大脑成员 Martin Wicke 在一封公开邮件中宣布,新版本开源框架——TensorFlow 2.0 预览版将在年底之前正式发布。今日,在上海谷歌开发者大会上,机器之心独家了解到一个重大的改变将会把 Eager Execution 变为TensorFlow 默认的执行模式。这意味着TensorFlow 如同 PyTorch 那样,由编写静态计算图全面转向了动态计算图。

谷歌开发者大会

在谷歌开发者大会的第二天,主会场全天都将进行TensorFlow 专场的演讲。

来自 Google Brain 的软件工程师冯亦菲在分享TensorFlow 编程接口的新动态时着重介绍了 tf.keras,tf.data 等高层库,总结了TensorFlow 团队对开发者使用TensorFlow 的一系列建议,包括:

  • 用 Eager 模式搭建原型

  • 用 Datasets 处理数据

  • 用 Feature Columns 提取特征

  • 用 Keras 搭建模型

  • 借用 Canned Estimators

  • 用 SavedModel 打包模型

其中,在介绍 Eager 模式时,她提到,在TensorFlow 2.0 版本中,Eager 模式会成为默认执行模式,让开发者更简洁高效地搭建原型。

在演讲结束后的交流中,冯亦菲提到TensorFlow 2.0 beta 版将会在今年年底公开,而正式版预计于明年 Q1 或 Q2 问世。Eager 模式变为默认设置之后,开发者可以在原型搭建完成后,利用 AutoGraph 把在 Eager 模式下搭建的模型自动变成计算图。开发者也可以进一步对 AutoGraph 生成的计算图进行优化,或者关掉 Eager 模式自己构建计算图。

我们注意到,在两个月之前刚刚发布的 AutoGraph  已经离开 tf.contrib 成为了正式的 TF 库的一部分,在设计文档中,工程师提到,「为了 TF 2.0 做准备,我们将 AutoGraph 从 tensorflow / contrib / autograph 移动到了 tensorflow / python / autograph。AutoGraph 仍可在 tensorflow.contrib.autograph 下访问,直到 tensorflow.contrib 被取消。」

谷歌开发者大会的「熟面孔」,Google AI 软件工程师金安娜同样出现在了今年的主题演讲中,她提到TensorFlow 工程师会将自己的最新的设计提议放在TensorFlow Community 的 Request for Comments 中,她鼓励开发者前往浏览,并针对工程师的最新设计思路给出自己的意见。

例如,Martin Wicke 关于 sunset tf.contrib 的提议就仍然在反馈阶段,有诸多开发者在该条 pull request 下提出了自己的意见。

RFC 的地址如下:

https://github.com/tensorflow/community/tree/master/rfcs

在今天下午的演讲中,会有更多来自谷歌的工程师分享与 Eager 模式相关的设计思路和设计细节。

TensorFlow 历程

TensorFlow 是由 Google Brain 团队在谷歌内部第一代 DL 系统 DistBelief 的基础上改进而得到的,这一通用计算框架目前已经成为最流行的机器学习开源工具。

TensorFlow 的前身 DistBelief 是谷歌 2011 年开发的内部 DL 工具,基于 DistBelief 的 Inception 网络获得了 2014 年的ImageNet挑战赛冠军。虽然 DistBelief 当时在谷歌内部已经应用于非常多的产品,但它过度依赖于谷歌内部的系统架构,因此很难对外开源。经过对 DistBelief 的改进与调整,谷歌于 2015 年 11 月正式发布了开源计算框架TensorFlow 0.5.0。相比于 DistBelief,TensorFlow 的计算框架更加通用、计算资源安排更加合理,同时支持更多的深度学习算法与平台。

在TensorFlow 开源后,基于 TF 的项目在第一年里面层出不穷:超过 480 人为 TF 做出了直接贡献,其中包括谷歌开发者、外部研究者、独立开发者、学生和其它公司的资深开发者。当时,TensorFlow 已经成为了 GitHub 上最受欢迎的机器学习项目。

在开源的第一年中,TensorFlow 增加了对分布式训练、iOS、树莓派开发板的支持,并且还与广泛使用的大数据架构相结合。此外,谷歌还发布了当时表现最好的图像分类模型 Inception-ResNet-v2,并且还回答了 GitHub、StackOverflow 和TensorFlow mailing list 上数以千计的问题。

去年 2 月份在首届TensorFlow 开发者大会中,谷歌正式发布了TensorFlow 1.0。在速度上,它在 64 个 GPU 上分布式训练 Inception v3 获得了 58 倍提速。在灵活性上,TensorFlow 1.0 引入了高层 API,例如 tf.layers、tf.metrics 和 tf.losses 等模块,同时通过 tf.keras 将 Keras 库正式整合进 TF 中。

此后,TensorFlow 发布了非常多的重要更新,包括动态图机制 Eager Execution、移动端深度学习框架TensorFlow Lite、面向 JavaScript 开发者的机器学习框架TensorFlow.js,以及自动将 Python 转化为 TF 计算图的 AutoGraph 等。

在TensorFlow 2.0 的规划中,Eager Execution 变为默认执行模式可能对开发者有比较大的影响,因为我们不再需要编写完整的静态计算图,并打开会话(Session)运行它。相反,与 PyTorch 一样,Eager Execution 是一个由运行定义的接口,这意味着我们在 Python 上调用它进行计算可以直接得出结果。这种方式非常符合人类直觉,因此可以预想TensorFlow 的入门在以后会简单地多。

以下为 8 月中旬谷歌大脑成员 Martin Wicke 在公开邮件中透露的TensorFlow 2.0 的规划:

TensorFlow 2.0 的规划

自 2015 年开源发布以来,TensorFlow 已经成为世界上使用最广泛的机器学习框架,面向广泛的用户和用例。此后,TensorFlow 随着计算硬件、机器学习研究和商业部署的快速发展而不断更新。

为了反映这些快速变化,谷歌开发者已经开始研究下一个版本的TensorFlow。TensorFlow 2.0 将是一个重要的里程碑,重点关注易用性。以下是用户对TensorFlow 2.0 的一些期望:

  • Eager execution 将是 2.0 的核心功能。它把用户对编程模型的期望与TensorFlow 实践更好地结合起来,应该会使TensorFlow 更容易学习和应用。

  • 支持更多的平台和语言,并通过交换格式的标准化和 API 的对齐来改善这些组件之间的兼容性和对等性。

  • 将删除过时的 API 并减少重复,以免给用户带来困惑。

据邮件称,谷歌计划年底之前发布TensorFlow 2.0 的预览版。

兼容性与连续性

TensorFlow 2.0 提供了一个纠错并改正的机会,而这些改进在语义版本控制中是不允许的。

为了简化转换,TensorFlow 团队将创建一个转换工具,该工具需要更新 Python 代码以使用与TensorFlow 2.0 兼容的 API,或者在无法自动转换时发出警告。在向 1.0 过渡的过程中,类似的工具发挥了巨大的作用。

不是所有的改进都能自动进行。比如,TensorFlow 不赞成使用一些没有直接对接的 API。对于这种情况,我们将提供一个兼容模块 (tensorflow.compat.v1),其中包含完整的TensorFlow 1.x API,它会在TensorFlow 2.x 的周期里得到维护。

磁盘兼容性

谷歌表示,他们不打算对 SavedModels 或 GraphDef 存储进行重大更改,计划 2.0 中能包含所有当前内核。然而,2.0 的变化意味着在与新模型兼容之前,原始 checkpoint 中的变量名必须要进行转换。

tf.contrib

TensorFlow 的 contrib 模块已经超出了单个存储库可以维护和支持的范围。较大的项目最好分开维护,我们将把较小的扩展与TensorFlow 主代码一起孵化。因此发布TensorFlow2.0 之后,我们将停止发布 tf.contrib。在接下来的几个月里,我们将与 contrib 各自的所有者合作制定详细的迁移计划,包括如何在TensorFlow 的社区页面和文档中宣传你的TensorFlow 扩展。对于每一个 contrib 模块,我们有以下选择:a)将项目整合到TensorFlow 中;b)将其移动到一个单独的存储库;c)将其彻底移除。这确实意味着所有的 tf.contrib 将被弃用,今天,TensorFlow 将停止添加新的 tf.contrib 项目。

查看原文: TensorFlow 2.0将把Eager Execution变为默认执行模式,你该转向动态计算图了

  • bluepanda
  • tinycat
需要 登录 后回复方可回复, 如果你还没有账号你可以 注册 一个帐号。