得益于令人难以置信的多元化社区,TensorFlow 已成长为世界上最受喜爱和广泛采用的 ML 平台之一。该社区包括:

  • 研究人员(例如,预测地震余震和检测乳腺癌)。
  • 开发人员(例如,构建应用程序来识别患病植物并帮助人们减肥)。
  • 公司(例如,通过eBay、Dropbox和AirBnB来改善他们的客户体验)。
    还有许多其他人。

11 月,2019年TensorFlow庆祝了它的 3 岁生日,回顾了这些年来添加的功能。我们对另一个重要里程碑 TensorFlow 2.0 感到兴奋。
TensorFlow 2.0 将专注于简单性和易用性,更新如下:

  • 使用 Keras 和渴望的执行。
  • 在任何平台上的生产中进行强大的模型部署。
  • 强大的研究实验。
  • 通过清理已弃用的 API 和减少重复来简化 API。

在过去几年中,我们向 TensorFlow 添加了许多组件。借助 TensorFlow 2.0,这些将被打包成一个综合平台,支持从训练到部署的机器学习工作流程。让我们用一个简化的概念图来看看 TensorFlow 2.0 的新架构,如下所示:

tensorflow 性能测试 tensorflow功能_python

注意:虽然此图的训练部分侧重于 Python API,但TensorFlow.js也支持训练模型。其他语言绑定也存在不同程度的支持,包括:Swift、R和Julia。

1. 简单的模型构建

在最近的一篇博文中,我们宣布Keras是一种用户友好的机器学习 API 标准,将成为用于构建和训练模型的中央高级 API。Keras API 使您可以轻松开始使用 TensorFlow。重要的是,Keras 提供了几个模型构建 API(顺序、功能和子类化),因此您可以为您的项目选择正确的抽象级别。TensorFlow 的实现包含增强功能,包括急切执行,用于立即迭代和直观调试,以及 tf.data,用于构建可扩展的输入管道。

这是一个示例工作流程(在接下来的几个月中,我们将努力更新下面链接的指南):

  1. 使用 加载您的数据tf.data。使用创建的输入管道读取训练数据tf.data。使用 描述特征特征,例如分桶和特征交叉tf.feature_column。还支持来自内存数据(例如 NumPy)的便捷输入。
  2. tf.keras使用 或使用Premade Estimators构建、训练和验证您的模型。Keras 与 TensorFlow 的其余部分紧密集成,因此您可以随时访问 TensorFlow 的功能。一组标准打包模型(例如,线性或逻辑回归、梯度提升树、随机森林)也可以直接使用(使用tf.estimatorAPI 实现)。如果您不想从头开始训练模型,那么您很快就可以使用TensorFlow Hub中的模块使用迁移学习来训练 Keras 或 Estimator 模型。
  3. 使用Eager execution运行和调试,然后使用tf.function图表的好处。TensorFlow 2.0 默认以 Eager Execution 运行,以便于使用和顺利调试。此外,tf.function 注释将您的 Python 程序透明地转换为 TensorFlow 图。这个过程保留了 1.x TensorFlow 基于图形的执行的所有优点:性能优化、远程执行以及轻松序列化、导出和部署的能力,同时增加了用简单 Python 表达程序的灵活性和易用性。
  4. 使用分发策略进行分布式培训。对于大型 ML 训练任务,分发策略 API可以轻松地在不同硬件配置上分发和训练模型,而无需更改模型定义。由于 TensorFlow 支持一系列硬件加速器,如 CPU、GPU 和 TPU,您可以将训练工作负载分配到单节点/多加速器以及多节点/多加速器配置,包括TPU Pod。尽管此 API 支持各种集群配置,但提供了用于在本地或云环境中的Kubernetes 集群上部署培训的模板。
  5. 导出到 SavedModel。TensorFlow 将 SavedModel 标准化为 TensorFlow Serving、TensorFlow Lite、TensorFlow.js、TensorFlow Hub 等的交换格式。

2. 在任何平台上的生产中进行稳健的模型部署

TensorFlow 一直提供直接的生产路径。无论是在服务器、边缘设备还是网络上,无论您使用什么语言或平台,TensorFlow 都可以让您轻松训练和部署模型。在 TensorFlow 2.0 中,我们通过标准化交换格式和对齐 API 来提高跨平台和组件的兼容性和奇偶性。

训练并保存模型后,您可以直接在应用程序中执行它或使用以下部署库之一提供服务:

  • TensorFlow Serving:一个 TensorFlow 库,允许通过 HTTP/REST 或 gRPC/Protocol 缓冲区提供模型。
  • TensorFlow Lite:TensorFlow 针对移动和嵌入式设备的轻量级解决方案提供了在 Android、iOS 和嵌入式系统(如 Raspberry Pi 和 Edge TPU)上部署模型的能力。
  • TensorFlow.js:允许在 JavaScript 环境中部署模型,例如通过 Node.js 在 Web 浏览器或服务器端。TensorFlow.js 还支持在 JavaScript 中定义模型并使用类似 Keras 的 API 在 Web 浏览器中直接进行训练。

TensorFlow 还支持其他语言(一些由更广泛的社区维护),包括C、Java、Go、C#、Rust、Julia、R等。

3. 强大的研究实验

TensorFlow 可以轻松地将新想法从概念转化为代码,从模型到发布。TensorFlow 2.0 包含许多功能,可以在不牺牲速度或性能的情况下定义和训练最先进的模型:

  • Keras 功能 API和模型子类化 API:允许创建复杂的拓扑,包括使用残差层、自定义多输入/输出模型和命令式编写的前向传递。
  • tf.GradientTape自定义训练逻辑:使用和对梯度计算进行细粒度控制tf.custom_gradient。
  • 为了获得更大的灵活性和控制力,低级 TensorFlow API 始终可用,并与更高级别的抽象结合使用,以实现完全可定制的逻辑。

TensorFlow 2.0 带来了几项新增功能,允许研究人员和高级用户进行实验,使用Ragged Tensors 、TensorFlow Probability、Tensor2Tensor等丰富的扩展,等等。

除了这些功能之外,TensorFlow 还提供了用于轻松进行原型设计和调试的即时执行、分发策略 API 和 AutoGraph 以进行大规模训练,并支持TPU,使 TensorFlow 2.0 成为一个易于使用、可定制且高度可扩展的平台,用于执行最先进的技术ML 研究并将该研究转化为生产管道。

4. TensorFlow 1.x 和 2.0 之间的差异

自从我们第一次开源 TensorFlow 以来,已经有许多版本和 API 迭代。随着 ML 的快速发展,该平台得到了巨大的发展,现在支持具有多样化需求的多样化用户组合。借助 TensorFlow 2.0,我们有机会基于语义版本控制对平台进行清理和模块化。
以下是一些更大的变化:

  • 取消排队者以支持tf.data.
  • 删除图形集合。
  • 改变变量的处理方式。
  • API 符号的移动和重命名。

此外,tf.contrib 将从核心 TensorFlow 存储库和构建过程中删除。TensorFlow 的 contrib 模块已经超出了单个存储库中可以维护和支持的范围。较大的项目最好单独维护,而较小的扩展将升级到核心 TensorFlow 代码。已经成立了一个特殊兴趣小组 (SIG),以维护和进一步开发一些更重要的贡献项目。

4.1 兼容性和连续性

为了简化向 TensorFlow 2.0 的迁移,将有一个转换工具更新 TensorFlow 1.x Python 代码以使用与 TensorFlow 2.0 兼容的 API,或标记无法自动转换代码的情况。

并非所有更改都可以完全自动进行。例如,一些已弃用的 API 没有直接等效的 API。这就是我们引入 tensorflow.compat.v1 兼容性模块的原因,该模块保留了对完整 TensorFlow 1.x API(不包括 tf.contrib)的支持。该模块将在 TensorFlow 2.x 的整个生命周期内得到维护,并允许使用 TensorFlow 1.x 编写的代码保持功能。

此外,SavedModels 或存储的 GraphDefs 将向后兼容。使用 1.x 保存的 SavedModel 将在 2.x 中继续加载和执行。但是,2.0 中的更改意味着原始检查点中的变量名称可能会更改,因此无法保证使用 2.0 之前的检查点和已转换为 2.0 的代码。有关更多详细信息,请参阅Effective TensorFlow 2.0指南。

我们相信 TensorFlow 2.0 将为社区带来巨大的好处,并且我们已经投入了大量的精力来使转换尽可能容易。但是,我们也认识到迁移当前管道需要时间,我们非常关心社区当前对学习和使用 TensorFlow 的投资。我们将为最后一个 1.x 版本提供 12 个月的安全补丁,以便为我们现有的用户提供充足的时间来过渡并获得 TensorFlow 2.0 的所有好处。

5. TensorFlow 2.0 的时间表

TensorFlow 2.0 将于今年年初作为公共预览版提供。但为什么要等呢?您已经可以通过使用tf.keras和渴望执行、预打包模型和部署库来开发 TensorFlow 2.0 方式。分发策略 API 今天也已经部分可用。

我们对 TensorFlow 2.0 和即将到来的变化感到非常兴奋。TensorFlow 已经从一个用于深度学习的软件库发展成为适用于所有类型 ML 的整个生态系统。TensorFlow 2.0 将简单易用,适用于所有平台上的所有用户。

请考虑加入 TensorFlow 社区以了解最新信息并帮助所有人都可以使用机器学习!

参考

https://medium.com/tensorflow/whats-coming-in-tensorflow-2-0-d3663832e9b8