https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih3dh8TfcreBO1iYiVYsVl0KyhxL_Lv77mGLB6xmLDXd4eFd-l9Az9Jx-U2mZRXopNOtJoRGYX8fFk_XdTSGjfVsKKat9erGMcIjOQ-G4ERedqcv7-z4urSJS-0XZrp1SUszOmi7U-GHc/s1600/model.png
TensorFlow 团队发布
感谢一个不可思议的多元社区,TensorFlow 已成长为
最受欢迎 且
被广泛采用 的全球机器学习平台之一。该社区包括
在 11 月,TensorFlow
庆祝了它的 3 岁生日,回顾了过去几年添加的功能。我们对另一个重要的里程碑——TensorFlow 2.0 感到兴奋。TensorFlow 2.0 将专注于简化和易用性,其特点包括以下更新:
- 使用 Keras 和 Eager Execution 进行简单的模型构建。
- 在任何平台上进行强大的生产模型部署。
- 强大的研究实验。
- 通过清理弃用的 API 和减少重复来简化 API。
在过去几年中,我们在 TensorFlow 中添加了许多组件。在 TensorFlow 2.0 中,这些组件将打包到一个综合平台中,该平台支持从训练到部署的机器学习工作流程。让我们使用下图所示的简化概念图来查看 TensorFlow 2.0 的新架构
简单的模型构建
在
最近的一篇博文中,我们宣布了
Keras,这是一种用于机器学习的用户友好型 API 标准,将成为用于构建和训练模型的中心高级 API。Keras API 使 TensorFlow 的入门变得容易。重要的是,Keras 提供了多种模型构建 API(Sequential、Functional 和 Subclassing),因此您可以为您的项目选择合适的抽象级别。TensorFlow 的实现包含一些增强功能,包括 Eager Execution(用于立即迭代和直观的调试)和 tf.data(用于构建可扩展的输入管道)。
以下是一个示例工作流程(在接下来的几个月里,我们将努力更新下面链接的指南)
- 使用 tf.data 加载您的数据。使用输入管道读取训练数据,这些管道是使用
tf.data
创建的。使用 tf.feature_column
描述特征特征(例如,分桶和特征交叉)。还支持来自内存中数据的便捷输入(例如,NumPy)。
- 使用 tf.keras 构建、训练和验证您的模型,或使用 预制 Estimators。Keras 与 TensorFlow 的其余部分紧密集成,因此您可以随时访问 TensorFlow 的功能。还提供了一组标准的打包模型(例如,线性或逻辑回归、梯度提升树、随机森林),可以直接使用(使用
tf.estimator
API 实现)。如果您不想从头开始训练模型,您很快就可以使用迁移学习来训练 Keras 或 Estimator 模型,使用来自 TensorFlow Hub 的模块。
- 使用 Eager Execution 运行和调试,然后使用 tf.function 获取图形的优势。TensorFlow 2.0 默认情况下使用 Eager Execution 运行,以提高易用性和平滑调试。此外,
tf.function
注释会将您的 Python 程序透明地转换为 TensorFlow 图表。此过程保留了 1.x TensorFlow 基于图表的执行的所有优点:性能优化、远程执行以及序列化、导出和轻松部署的能力,同时增加了以简单 Python 表达程序的灵活性和易用性。
- 使用分布式策略进行分布式训练。对于大型 ML 训练任务,分布式策略 API 使得在不同的硬件配置上轻松分布和训练模型,而无需更改模型定义。由于 TensorFlow 支持各种硬件加速器(如 CPU、GPU 和 TPU),因此您可以使训练工作负载分布到单节点/多加速器以及多节点/多加速器配置,包括 TPU Pods。虽然此 API 支持各种集群配置,但提供了在本地或云环境中的 Kubernetes 集群 上部署训练的 模板。
- 导出到 SavedModel。TensorFlow 将标准化为 SavedModel,作为 TensorFlow Serving、TensorFlow Lite、TensorFlow.js、TensorFlow Hub 等的交换格式。
在任何平台上进行强大的生产模型部署
TensorFlow 始终提供一条通往生产的直接路径。无论是在服务器、边缘设备还是网络上,TensorFlow 都允许您轻松地训练和部署您的模型,无论您使用哪种语言或平台。在 TensorFlow 2.0 中,我们通过标准化交换格式和对齐 API 来提高跨平台和组件的兼容性和一致性。
训练并保存模型后,您可以直接在您的应用程序中执行它,或使用以下部署库之一提供它:
- TensorFlow Serving:一个 TensorFlow 库,允许通过 HTTP/REST 或 gRPC/协议缓冲区提供模型。
- TensorFlow Lite:TensorFlow 的轻量级解决方案,用于移动和嵌入式设备,提供在 Android、iOS 和嵌入式系统(如 Raspberry Pi 和边缘 TPU)上部署模型的功能。
- TensorFlow.js:允许在 JavaScript 环境中部署模型,例如在 Web 浏览器中或通过 Node.js 在服务器端。TensorFlow.js 还支持在 JavaScript 中定义模型,并使用类似 Keras 的 API 直接在 Web 浏览器中进行训练。
TensorFlow 还支持其他语言(其中一些由更广泛的社区维护),包括
C、
Java、
Go、
C#、
Rust、
Julia、
R 等。
强大的研究实验
TensorFlow 使得从概念到代码,从模型到出版物的全新创意变得容易。TensorFlow 2.0 包含许多功能,这些功能允许定义和训练最先进的模型,而不会牺牲速度或性能
TensorFlow 2.0 带来了几个新功能,允许研究人员和高级用户进行实验,使用丰富的扩展,如
Ragged 矩阵、
TensorFlow 概率、
Tensor2Tensor 等等,将在稍后宣布。
除了这些功能之外,TensorFlow 还提供了 Eager Execution,便于原型设计和调试,提供了分布式策略 API 和 AutoGraph 以进行大规模训练,并支持 TPU,使 TensorFlow 2.0 成为一个易于使用、可定制且高度可扩展的平台,用于进行最先进的 ML 研究,并将该研究转化为生产管道。
TensorFlow 1.x 和 2.0 之间的差异
自我们首次开源 TensorFlow 以来,已经过了一些版本和 API 迭代。随着 ML 的快速发展,该平台已经发展壮大,现在支持各种用户,他们有各种不同的需求。使用 TensorFlow 2.0,我们有机会根据
语义版本控制 来清理和模块化平台。以下是一些即将发生的较大变化:
此外,
tf.contrib 将从 TensorFlow 核心存储库和构建过程中删除。TensorFlow 的 contrib 模块已经超出了单个存储库可以维护和支持的范围。较大的项目最好单独维护,而较小的扩展将升级到 TensorFlow 核心代码。已成立了一个特别兴趣小组 (SIG) 来维护和进一步开发一些更重要的 contrib 项目。如果您有兴趣贡献,请
参与此 RFC。
兼容性和连续性
为了简化迁移到 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 将向后兼容。使用 1.x 保存的 SavedModels 将继续在 2.x 中加载和执行。但是,2.0 中的更改意味着原始检查点中的变量名称可能会更改,因此使用 2.0 之前的检查点与已转换为 2.0 的代码不保证能够正常工作。有关更多详细信息,请参阅 有效 TensorFlow 2.0 指南。
我们相信 TensorFlow 2.0 将为社区带来巨大益处,我们投入了大量精力使转换尽可能容易。但是,我们也认识到迁移当前管道需要时间,我们非常关心社区目前在学习和使用 TensorFlow 上的投入。我们将为最后一个 1.x 版本提供 12 个月的安全补丁,以便我们的现有用户有充足的时间进行过渡并获得 TensorFlow 2.0 的所有优势。
TensorFlow 2.0 时间表
TensorFlow 2.0 将于今年早些时候提供公开预览版。但为什么要等待呢?您现在就可以使用 tf.keras
和急切执行、预打包模型和部署库来开发 TensorFlow 2.0 的方式。分布式策略 API 今天也已经部分可用。
我们对 TensorFlow 2.0 和即将到来的变化感到非常兴奋。TensorFlow 已从一个用于深度学习的软件库发展成为一个用于所有类型 ML 的完整生态系统。TensorFlow 2.0 将对所有平台上的所有用户来说都简单易用。
请考虑加入 TensorFlow 社区,以保持最新状态并帮助让机器学习对每个人都触手可及!