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

 

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

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

TensorFlow Privacy 开源库

TensorFlow Privacy 是 TensorFlow 今天发布的另一个开源库,不仅能让开发者在保护隐私的情况下训练机器学习模型,也能让研究者在保护隐私的情况下推进机器学习的前沿研究。

现代机器学习越来越多地被应用到新技术和用户体验中,很多应用需要基于敏感数据(如个人照片或邮件)来训练。完美情况下,训练模型的参数应该编码一般模式,而不是特定训练样本的事实。差分隐私(differential privacy)技术可用于保护隐私数据,当模型基于用户数据训练时,差分隐私技术可以提供强数学保证,确保模型不学习或记住任意用户的数据细节。对于深度学习来说,更要添加额外的保障。

谷歌近年来开展机器学习差分隐私方面的基础研究,以及开发实用的差分隐私机制。今天,谷歌正式发布 TensorFlow Privacy。它不要求用户具备隐私及其底层机制方面的专业知识,使用标准 TensorFlow 框架的用户在使用 TensorFlow Privacy 时也无需对模型架构、训练步骤做任何更改,只需简单地修改几行代码,并调整与隐私相关的超参数。

Coral 开发板和 USB 加速器

比较有趣的是,今日谷歌还发布两个全新的硬件产品:Coral 开发板和 USB 加速器。

首先介绍下 Coral。Coral 是一个构建智能设备的平台,它提供完全本地的 AI 工具箱,包括硬件组件、软件工具,以及帮助你创造、训练、运行神经网络的模块。

Coral 的首个硬件组件就是之前谷歌发布的 ASIC——Edge TPU,它能为低功率设备提供极高的机器学习推理性能。例如,它能以高能效方式在 100+ 的 fps 下执行 MobileNet v2 这样的视觉模型。

Coral 摄像模块、开发板和 USB 加速器

作为全新的开发产品,Coral 开发板是个完全集成的系统,它被设计成构建在载板上的系统模块(SoM)。SoM 把强大的 NXP iMX8M SoC 与谷歌的 Edge TPU 协处理器(包括 Wi-Fi、蓝牙、RAM 和 eMMC 存储)融合在了一起。为了让计算机视觉应用原型更简单,谷歌还提供了一个摄像头连接开发板与 MIPI 接口。

为了把 Edge TPU 加入到已有的设计中,Coral USB 加速器允许通过 USB2.0、3.0 接口轻松接入到任何 Linux 系统中,之后谷歌还会添加 PCIe 版本。

价格方面,Coral 开发板售价为 149.99 美元,Coral USB 加速器售价为 74.99 美元。

猜你喜欢

转载自blog.csdn.net/u010094934/article/details/88361749