官方解读:TensorFlow 2.0中即将到来的全部新特性

选自Medium,做者:TensorFlow,机器之心编译。git

四天前,TensorFlow 2.0 预览版终于上线了,看来稳定版距离咱们也不会太远——按照官方说法会是今年的第一个季度。近日,TensorFlow 官方博客全面介绍了 2.0 版的全部新特性。为了让开发者们简单高效地搭建模型,2.0 版本通过了大幅度重建。github

做为最流行的深度学习框架,TensorFlow 已经成长为全球使用最普遍的机器学习平台。目前,TensorFlow 的开发者社区包括研究者、开发者和企业等。web

去年 11 月,TensorFlow 庆祝了本身的三岁生日。不久以后,也将迎来另外一个重要里程碑——TensorFlow 2.0。
浏览器

TensorFlow 2.0 将专一于简洁性和易用性,主要升级方向包括:安全

  • 使用 Keras 和 eager execution 轻松构建模型。性能优化

  • 在任意平台上实现稳健的生产环境模型部署。服务器

  • 为研究提供强大的实验工具。架构

  • 经过清理废弃的 API 和减小重复来简化 API。框架

谷歌表示,在过去几年里,TensorFlow 增长了不少组件。经过 TensorFlow 2.0 版本的大幅度重建,这些功能将被打包成为一个综合平台,支持从训练到部署的整个机器学习工做流程。下图简要展现了 TensorFlow 2.0 的新架构:机器学习

Note:虽然上图的训练部分侧重 Python API,可是 TensorFlow.js 也支持训练模型。TensorFlow 2.0 对其余语言也有不一样程度的支持,包括 Swift、R 语言和 Julia。

轻松构建模型

TensorFlow 团队近期宣布 Keras API 将成为 TensorFlow 中构建和训练模型的核心高级 API。Keras API 使得使用 TensorFlow 开启项目变得简单。重要的是,Keras 提供多个模型构建 API(Sequential、Functional 和 Subclassing),这样你能够选择适合本身项目的抽象级别。TensorFlow 的实现有多项加强,包括可直接迭代和直观调试的 eager execution,以及用于构建可扩展输入流程的 tf.data。

如下是工做流程示例(在接下里的几个月中,咱们将努力更新如下连接的指南):

  1. 用 tf.data 加载数据。用 tf.data 建立的输入线程读取训练数据。使用 tf.feature_column 描述特征特性,例如分段和特征交叉。还支持从内存数据(例如 NumPy)中方便地输入。

  2. 使用 tf.keras、Premade Estimators 构建、训练和验证模型。Keras 与 TensorFlow 的其他部分紧密集成,所以你能够随时访问 TensorFlow 的功能。一组标准的打包模型(例如,线性或逻辑回归、梯度加强树、随机森林)也能够直接使用(使用 tf.estimator API 实现)。若是你不想从头开始训练一个模型,你很快就能经过 TensorFlow Hub 的模块利用迁移学习来训练 Keras 或 Estimator 模型。

  3. 用 eager execution 运行和调试,而后在图形上使用 tf.function。TensorFlow 2.0 默认用 eager execution 运行,以便于轻松使用和顺利调试。此外,tf.function 注释透明地将 Python 程序转换成 TensorFlow 图。这个过程保留了 TensorFlow1.x 基于图形执行的全部优势:性能优化、远程执行,以及序列化、导出和部署的能力,同时增长了用简单 Python 表达程序的灵活性和易用性。

  4. 使用分布式策略进行分布式训练。对于大部分 ML 训练任务来讲,Distribution Strategy API 使得在不一样的硬件配置上分布和训练模型变得很容易,而无需改变模型定义。因为 TensorFlow 为一系列硬件加速器(如 CPU、GPU、TPU)提供支持,你能够将训练工做负载分配给单节点/多加速器以及多节点/多加速器配置,包括 TPU Pods。尽管这个 API 支持多种群集配置,但提供了在本地或云环境中的 Kubernete 集群上部署训练的模板。

  5. 导出至 SavedModel。TensorFlow 将在 SavedModel 上标准化,来做为 TentsorFlow Serving、TensorFlow Lite、TensorFlow.js、TentsorFlow Hub 等的交换格式。

在任意平台上实现稳健的生产环境模型部署

TensorFlow 老是会提供直接的产品化路径。不管是在服务器、边缘设备仍是网页上,也不论你使用的是什么语言或平台,TensorFlow 总能让你轻易训练和部署模型。在 TensorFlow 2.0 中,咱们正在经过标准化交换格式和调整 API 来改进跨平台和组件的兼容性和奇偶性(parity)。

  • TensorFlow Serving:容许经过 HTTP/REST 或 gRPC /协议缓冲区为模型提供服务的 TensorFlow 库。

  • TensorFlow Lite:TensorFlow 针对移动和嵌入式设备的轻量级解决方案提供了在 Android、iOS 和嵌入式系统(如 Raspberry Pi 和 Edge TPU)上部署模型的能力。

  • TensorFlow.js:支持在 JavaScript 环境中部署模型,例如经过 Node.js. TensorFlow.js 在 web 浏览器或服务器端部署模型,还支持在 JavaScript 中定义模型和在 web 浏览器中使用相似 Keras 的 API 直接训练模型。

TensorFlow 还支持其它语言(由更普遍的社区维护),包括:C、Java、Go、C#、Rust、Julia、R 等等。

为研究提供强大的实验工具

TensorFlow 使得从概念到代码和从模型到出版物中获取新想法变得更加容易。TensorFlow 2.0 结合了不少功能,可以在不牺牲速度或性能的状况下定义和训练最早进的模型:

  • Keras Functional API 和 Model Subclassing API:容许建立复杂的拓扑,包括使用残差层、自定义多输入/输出模型以及强制编写的正向传递。

  • 自定义训练逻辑:用 tf.GradientTape 和 tf.custom_gradient 对梯度计算进行细粒度控制。

  • 为了得到更强的灵活性和控制,低级 TensorFlow API 始终可用,并与更高级别的抽象一块儿工做,以实现彻底可定制的逻辑。

TensorFlow 2.0 新添了一些附加功能,让研究人员和高级用户可使用丰富的插件来进行实验,如 Ragged Tensors、TensorFlow Probability、Tensor2Tensor 等。

除了这些功能以外,TensorFlow 还提供了易于制做原型和调试的 eager execution,能够大规模训练的 Distribution Strategy API 和 AutoGraph,以及对 TPU 的支持,使 TensorFlow 2.0 成为一个易于使用、可定制和高度可扩展的平台,用于展开最早进的 ML 研究并将该研究转化为生产流水线。

TensorFlow 1.x 和 2.0 的区别

自咱们开源 TensorFlow 以来,到如今已经发展出不少个版本和 API 迭代。随着 ML 的快速发展,这个平台也有了巨大的进展,如今支持不少具备不一样需求的不一样用户。有了 TensorFlow 2.0,咱们有机会基于语义版本控制来清理和模块化平台。

这次的重大改变包括:

  • 删除 queue runner 以支持 tf.data。

  • 删除图形集合。

  • 变量处理方式的变化。

  • API 符号的移动和重命名。

此外,tf.contrib 将从核心 TensorFlow 存储库和构建过程当中移除。TensorFlow 的 contrib 模块已经超出了单个存储库能够维护和支持的范围。较大的项目最好单独维护,而较小的扩展将逐渐移至核心 TensorFlow 代码。一个特别兴趣小组(SIG)已经成立,以维持和进一步发展一些更重要的将来 contrib 项目。若是你有兴趣贡献,请联系如下 RFC:

github.com/tensorflow/…

兼容性和持续性

为了简化向 TensorFlow 2.0 的过渡,将会有一个转化工具来更新 TensorFlow 1.x Python 代码,以使用 TensorFlow 2.0 兼容的 API,或标记代码没法自动转换的状况。

不是全部的变化均可以彻底自动化进行。例如,一些被弃用的 API 没有直接的等效物。这也是咱们要引入 tensorflow.compat.v1 兼容性模块的缘由,该模块支持完整的 TensorFlow 1.x API(包括 tf.contrib)。该模块将会在 TensorFlow 2.x 的时间线内获得维护,并容许用 TensorFlow 1.x 编写的代码保持功能。

此外,SavedModels 或存储的 GraphDefs 将向后兼容。用 TensorFlow 1.x 保存的 SavedModels 将继续在 2.x 中加载和执行。然而,2.0 中的更改意味着原始检查点中的变量名可能会更改,因此使用 2.0 以前的检查点而代码已转化为 2.0 时,可能没法保证有效。详情可参阅 TensorFlow 2.0 指南:

github.com/tensorflow/…

咱们相信,TensorFlow 2.0 将为社区带来巨大的利益,咱们也尽了最大的努力来让转化变得简单。可是,咱们也发现迁移如今的线程须要时间,咱们很是重视社区当下在学习和使用 TensorFlow 方面的投入。咱们将在最近的 1.x 版本中提供 12 个月的安全补丁,觉得现有的用户提供足够的时间来过渡和利用 TensorFlow 2.0。

TensorFlow 2.0 时间线

TensorFlow 2.0 于今年年初发布预览版。你如今已经能够经过使用 tf.keras 、eager execution、预打包模型和部署库来开发 TensorFlow 2.0 了。Distribution Strategy API 也已经部分可用。

原文连接: medium.com/tensorflow/…
相关文章
相关标签/搜索