专栏名称: 机器之心
目录
相关文章推荐
爱可可-爱生活  ·  优化思维:探索大模型推理能力的最佳计算规模 ... ·  20 小时前  
爱可可-爱生活  ·  【[29星]LongSpec:长文本场景下的 ... ·  昨天  
爱可可-爱生活  ·  本文创新性地提出了 MinionS ... ·  昨天  
机器之心  ·  超越DeepSeek-ProverV1.5! ... ·  2 天前  
歸藏的AI工具箱  ·  Claude 3.7 Sonnet ... ·  2 天前  
歸藏的AI工具箱  ·  Claude 3.7 Sonnet ... ·  2 天前  
51好读  ›  专栏  ›  机器之心

重磅发布2.0 Alpha版,TensorFlow新定位:端到端开源机器学习平台

机器之心  · 掘金  · AI  · 2019-03-07 02:20

正文

机器之心报道

机器之心编辑部

刚刚,谷歌在 Tensorflow Developer Summit 2019 大会上发布 TensorFlow 2.0 Alpha 版。虽然在此之前关于 TensorFlow2.0 的众多更新已经放出,但作为当前最为流行的深度学习框架,2.0 Alpha 版的正式发布依旧引人关注。此外,今日谷歌还开源了新的框架与库,发布了两款有趣的开发硬件。还换了 Logo~

自 2015 年开源以来,TensorFlow 得到了越来越多开发者的认可,成为了当前最受欢迎的深度学习框架之一。据现场介绍,目前为止 TensorFlow 已经被下载超过 4100 万次、提交 5 万多次代码更新、1800 多位贡献者。

与此同时,这 3 年来深度学习框架之争越来越激烈:Facebook 主推的 PyTorch 成为后起之秀,有力压 TensorFlow 之势;2016 年国内科技巨头百度发布 PaddlePaddle,2018 年底发布的 PaddlePaddle 1.0 版本标志着该框架走向成熟。

不得不说,迫于 PyTorch 的压力,TensorFlow 2.0 有了众多改变,例如 2018 年 9 月份在上海谷歌开发者大会上,机器之心了解到一个重大改变是将会把 Eager Execution 变为 TensorFlow 默认的执行模式。2019 年 1 月份,谷歌上线了 TensorFlow 2.0「开发者预览版」,让开发者们可以尝试使用。

下图展示了近几年 TensorFlow 的版本更新。但今天,TensorFlow 已经成熟为一个完全端到端的生态系统,所以今天发布的 TensorFlow 2.0 标志着一个新时代的开始。

发布 TF 2.0 Alpha 版

TensorFlow 作为下载量最大的深度学习框架,过去收到了大量的反馈。据介绍,TensorFlow 用户希望能够有更简单的 API、减少冗余、改进文档与示例。因此,TensorFlow 2.0 在设计上注重以下三点:简单、强大、可扩展。

在简单方面,TensorFlow 2.0 提供更简化的 API、注重 Keras 、结合了 Eager Execution 。通过扩展到 exaflops 级别,TensorFlow2.0 变得更加强大,在同样的稳健性与性能下效率会更高。

TensorFlow 在过去的开发中已经构建了非常多的模块或组件,而 TensorFlow 2.0 则需要对整体工作流组件做极大的优化。下图展示了 TensorFlow 的高层设计架构,这些组件和特征将被打包成一个综合平台,从而支持从训练到部署的整个机器学习工作流程。

下图展示了 Tensorflow2.0 的强大 API 组件在整个工作流的适配,其中数据导入与处理可调用 tf.data、模型构建可以用便捷高效的 Keras 与 Estimators、训练又会有 Eager 模式和 Autograph 新特性。最后保存的模型还能通过不同的模块部署到云、移动端和网页等等。

基于这些整体设计,TF 2.0 也在快速成长。工程总监 Rajat Monga 随后宣布,TensorFlow 2.0 Alpha 版今天发布,RC 版将于今年第二季度发布。

TensorFlow 2.0 Alpha 版新特性

TensorFlow 2.0 的特性主要体现在三方面,即易用性、简洁性与灵活性。其中易用性主要体现在使用 tf.keras 作为高级 API,且将 Eager execution 作为默认模式。如下所示在 2.0 中定义加法运算不再返回节点属性,而是直接返回运算值:

TensorFlow 一直有很多庞大而冗余的 API 函数,尤其是 contrib 模块里。但在 TF 2.0 中,开发团队做了大量工作来移除重复的 API 函数,并重新组织它们。

此外,tf.contrib 将从核心 TensorFlow 存储库和构建过程中移除。TensorFlow 的 contrib 模块已经超出了单个存储库可以维护和支持的范围。较大的项目最好单独维护,而较小的扩展将逐渐移至核心 TensorFlow 代码。

尽管 TF 2.0 更关注使用便捷性,但这并不表明会牺牲灵活性。它同样提供完全的底层 API,同样能通过 tf.raw_ops 访问内部 OP。

此外,这些特性听起来很美好,但 TF 2.0 的向下兼容性同样十分重要。TF 2.0 将增加兼容性模块 tf.compat.v1,以及提供升级 1.X 代码的脚本。在我们使用 pip 安装 TensorFlow 2.0 时,系统会自动添加 tf_upgrade_v2 脚本,它可将现有的 TensorFlow Python 代码转换为 TensorFlow 2.0 代码。

如下所示在升级代码时会自动将 1.X 的 API 换为新的 API,如果 TF2.0 没有对等的 API,那么还能调用 tf.compat.v1 使用 1.X 的兼容 OP。因为 tensorflow.compat.v1 在 TensorFlow 2.x 的时间线内将长期得到维护,我们用 TensorFlow 1.x 编写的代码也能保持功能。

Eager execution

可能 TensorFlow 2.0 最明显的改变就是将 Eager execution 作为默认优先模式。这表明任何运算在调用后就会立即运行,我们不再需要预先定义静态图,再通过「tf.Session.run()」执行图的各个部分。

a = tf.constant([1, 2])b = tf.constant([3, 4])print(a + b)# returns: tf.Tensor([4 6], shape=(2,), dtype=int32)

此外,Eager execution 还有一个很重要的新特性,即 tf.function 注释可以将 Python 程序转换成 TensorFlow 计算图,所有我们熟悉的 Python 控制流和内置函数等都可以转化为 TensorFlow 计算图。

这个过程保留了 TensorFlow1.x 基于静态计算图执行的所有优点:性能优化、远程执行,以及序列化、导出和部署的能力,同时增加了用简单 Python 表达程序的灵活性和易用性。因此总体而言,Eager execution 将是 2.0 的核心功能,它会使 TensorFlow 更容易学习和应用。

TF 2.0 当然是 Dev Summit 中的重头戏,但经过一年,很多模块与功能都走向了成熟,其中就包含 TensorFlow.js

TensorFlow.js 1.0

2018 年,谷歌发布了 TensorFlow.js,一个在浏览器、节点和其他平台中使用 JS 建立、部署机器学习模型的库。自发布以来,TensorFlow.js 被大量采用,截至目前该库已被下载 30 万次,Github 星标数量超过 1 万,项目贡献者超过 100 个。

今日,TensorFlow.js 1.0 版本发布,在先前版本的基础上做了许多改进,也添加了许多新特征。1.0 版本包含一个面向图像、文本、语音等常见机器学习任务的现成模型库。此外,TensorFlow.js 1.0 还添加了运行 JS 的更多平台,例如桌面 app、移动端本地的平台等。在性能上,该版本也有极大的改进,例如相比于去年,在浏览器中 MobileNet 的推断速度快了 8 倍。

TensorFlow.js 1.0 版本项目地址:https://github.com/tensorflow/tfjs/releases

从研究到产品、从服务器端到移动端,TensorFlow 已经成熟为了一个全面的生态系统。

在 TF 2.0 和 TF.js 之外,现场还介绍了 TensorFlow 新网站,从网页中我们也可以看到谷歌将 TensorFlow 定位为端到端的开源机器学习平台,它添加了更多文档、示例和工具。

不过尴尬的是,直播过程中,小编发现 TensorFlow 新网站 404 了……

TensorFlow 家族新成员

TensorFlow Federated:针对分散式数据

此外,TensorFlow 还发布了开源框架 TensorFlow Federated(TFF),它适用于分散式数据(decentralized data)上执行机器学习和其他计算。TFF 旨在促进联合学习(Federated Learning,FL)的开放性研究和实验,联合学习是一种机器学习方法,可在多个客户端上训练共享的全局模型,同时在本地保存训练数据。例如,FL 曾被用于训练手机键盘的预测模型,同时不将敏感输入数据加载到服务器上。

  • TensorFlow Federated 链接:https://www.tensorflow.org/federated

  • TFF 代码库链接:https://github.com/tensorflow/federated

TensorFlow Federated 让开发者能够展示和模拟联合学习系统。如图所示,每部手机在本地训练模型 (A)。它们的更新会汇总到一起 (B),形成一个改进后的共享模型 (C)。

TFF 可使开发者在自己的模型和数据上模拟使用联邦学习算法,促进对新算法的实验。TFF 提供的构建块还可用于实现非学习计算。TFF 的接口由两个层组成:Federated Learning (FL) API 和 Federated Core (FC) API。FC API 支持针对分散式数据集的各种计算的表达。

  • Federated Learning (FL) API 链接:https://www.tensorflow.org/federated/federated_learning







请到「今天看啥」查看全文