TensorFlow 2.0 新鲜出炉!新定位:端到端开源机器学习平台

 

 

TensorFlow 2.0 新鲜出炉!新定位:端到端开源机器学习平台

 

TensorFlow 2.0终于来了!

 

今天凌晨,谷歌在加州举办TensorFlow开发者峰会(TensorFlow Dev Summit),正式发布2.0版本。

 

这场发布会有几大亮点:

 

  • TensorFlow 2.0 Alpha版发布,用户现在可以抢先体验;

  • 2.0版本具有简易性、更清晰、扩展性三大特征,大大简化API;

  • 提高了TensorFlow LiteTensorFlow.js部署模型的能力;

 

发布会还把TensorFlow目前的家底透露了一遍:目前TF在全球已经有超过4100万的下载次数,社区有超过1800多个贡献者。

 

TensorFlow 2.0 新鲜出炉!新定位:端到端开源机器学习平台

 

尽管官方没有透露中国社区的情况,但是发布会现场展示一张全球地图,根据图中的用户分布情况可以推测,目前TF中国应该是仅次于美国和欧洲的第三大地区。

 

TensorFlow 2.0 新鲜出炉!新定位:端到端开源机器学习平台

 

另外一个值得注意的变化是,从2.0开始,TensorFlow的logo也不一样,从类似积木的形状变成了两个分开的字母“T”和“F”,或许也意味着减少冗余,看上去更简洁。

TensorFlow 2.0 新鲜出炉!新定位:端到端开源机器学习平台

简单易用可扩展,TF2.0迎来新架构

TensorFlow 已经发展为世界上最受欢迎和被广泛采用的机器学习平台之一,自2015年问世,并在去年11月迎来三周岁生日。

之前开发者反馈,希望TensorFlow能够简化API、减少冗余并改进文档和示例。这次2.0发布,听取了开发者的建议,因此新版本有以下三大特点:简单、强大、可拓展。

 

TensorFlow 2.0 新鲜出炉!新定位:端到端开源机器学习平台

基于这三大特点,TensorFlow 2.0也有新架构,如下面的简化概念图所示:

 

TensorFlow 2.0 新鲜出炉!新定位:端到端开源机器学习平台

TensorFlow 2.0 将专注于简单性易用性,具有以下更新:

  • 使用 Keras 和 eager execution,轻松构建模型

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

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

  • 通过清理废弃的 API 和减少重复来简化 API

下面详细介绍TF2.0的新特性。

易用至上,TensorFlow 2.0 Alpha发布

这次TensorFlow的一些列更新,重点就在于:让你使用得更加简单。

TensorFlow 2.0发布以后,训练的流程将变得十分简洁:

主要流程就是:数据集成和转换→模型构建→训练→保存模型。

当然,TensorFlow也秉承着“哪儿都可以部署”的原则,使其在应用方面更加灵活和方便,包括服务器、edge device边缘设备、JS环境,TF都有相应的版本支持:

 

TensorFlow 2.0 新鲜出炉!新定位:端到端开源机器学习平台

下面是TensorFlow2.0在这次更新中的几大亮点:

 

TensorFlow 2.0 新鲜出炉!新定位:端到端开源机器学习平台

 

TensorFlow Alpha

 

  • 更易用:诸如tf.keras等高级API将更易于使用;并且Eager execution将成为默认设置。例如:

>>>tf.add(2,3)<tf.Tensor: id=2, shape=(), dtype=int32, numpy=5>
  • 更清晰:删除了重复的功能;不同API的调用语法更加一致、直观;兼容性更加完善。

 

  • 更灵活:提供完整的低级API;可在tf.raw_ops中访问内部操作;提供变量、checkpoint和层的可继承接口。

 

当然,TensorFlow 2.0 Alpha版本从安装上便十分的简单,仅需一句话:

 

pip install -U --pre tensorflow

 

而Eager execution 与 “@tf.function”作为核心升级重点,接下将会对其如何协同工作进行做详细介绍。

 

其中一个最明显的变化是,TensorFlow 是 “Eager 优先”,这意味着 op 在调用后会立即运行。在 TensorFlow 1.x 中,使用者可能会先构图,然后通过 “tf.Session.run()” 执行图的各个部分。

 

TensorFlow 2.0 从根本上简化了 TensorFlow 的使用 — 同样出色的 op,现在却更易理解和使用。

 

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

 

TensorFlow 2.0 使用 Keras 作为开发者的核心体验。在 2.0 中,可以如常使用 Keras,利用 Sequential API 构建模型,然后使用 “compile” 和 “fit”。tensorflow.org 中所有这些熟悉的 “tf.keras” 示例均可在 2.0 中实现 “开箱即用”。

 

Keras 的 “fit()” 适用于很多情况,但是,需要更高灵活性的开发者现在可以有更多选择。来看一下如下示例中以 TensorFlow 2.0 风格编写的自定义训练循环:

 

def train_one_step(model, optimizer, x, y): with tf.GradientTape() as tape:   logits = model(x)   loss = compute_loss(y, logits) grads = tape.gradient(loss, model.trainable_variables) optimizer.apply_gradients(zip(grads, model.trainable_variables)) compute_accuracy(y, logits) return lossdef train(model, optimizer): train_ds = mnist_dataset() step = 0 loss = 0.0 for x, y in train_ds:   step += 1   loss = train_one_step(model, optimizer, x, y)   if tf.equal(step % 10, 0):     tf.print('Step', step, ': loss',               loss, '; accuracy', compute_accuracy.result())return step, loss, accuracy

 

此示例采用 Autograd 风格的 GradientTape,并通过优化器手动应用你的梯度。在编写具有复杂内部运作的自定义训练循环(譬如在强化学习中)或进行研究(轻松帮您落实提高优化器效率的新想法)时,这特别有帮助。

 

“Eager execution” 还有助于调试和监控运行中的代码,可以使用 Python 调试程序检查变量、层及梯度等对象。在训练循环中,使用 “if”、“for” 和 “print()” 等 Python 语句。

 

一旦代码运行正常,便会想要获得图表优化和效率。为此,可以利用装饰器 “@tf.function” 封装 “train”。“tf.function” 中内置 Autograph,因此无需任何特殊操作便可获取以用图表效率运行的 “if” 或 “for” 子句。

 

 

@tf.functiondef train(model, optimizer): train_ds = mnist_dataset() step = 0 loss = 0 accuracy = 0 for x, y in train_ds:    # 如上所述,包括“if”和“print()”return step

 

这段代码并不会受注释影响,但会将其编译到可在 GPU、TPU 上轻松运行的图表中,或将其保存至 “SavedModel” 留待后用。

 

针对这对代码,尤为有趣之处在于,通过在 “@tf.function” 中封装 “train()”,“train_one_step()”、“compute_loss()” 和 “compute_accuracy()” 也会自动进行转换。也可选择在 “@tf.function” 中仅封装部分运算,从而获得所需行为。

 

此外,TensorFlow 2.0 完全支持 Estimator。

tensorflow.org/alpha 链接

https://www.tensorflow.org/alpha

 

高级API变化

 

TensorFlow 2.0 在API上可谓是下足了功夫,在这个版本中,高级API将十分“易于扩展”且“扩展地很容易”:

 

TensorFlow 2.0 新鲜出炉!新定位:端到端开源机器学习平台

 

例如,对tf.keras.optimizer\ tf.keras.layers\ tf.keras.loss等一些列高级API都做了“易用性”的优化。例如:

 

TensorFlow 2.0 新鲜出炉!新定位:端到端开源机器学习平台

 

值得注意的是,尤其是对诸如RNN layers等神经网络的高级API做了优化,用户还可以对其自定义。

 

可谓是开发者福音。

 

升级

 

TensorFlow 2.0 将包含许多 API 变更,例如,对参数进行重新排序、重新命名符号和更改参数的默认值。手动执行所有这些变更不仅枯燥乏味,而且容易出错。

为简化变更过程并让开发者尽可能顺畅地过渡到 TensorFlow 2.0,TensorFlow 工程团队创建了实用程序 tf_upgrade_v2,可将旧代码转换至新 API。

tf_upgrade_v2 链接

https://github.com/tensorflow/docs/blob/master/site/en/r2/guide/upgrade.md

 

TensorFlow.js v1.0

 

TensorFlow for Javascript已经有300,000次下载和100个贡献者。 今天TensorFlow.js的1.0版本包括性能改进。

 

TensorFlow 2.0 新鲜出炉!新定位:端到端开源机器学习平台

 

例如浏览器中MobileNet v1推理的9倍提升。 还有针对Web开发人员的新现成模型和更广泛的平台支持。

 

TensorFlow Lite:超20亿移动设备部署使用

 

TensorFlow Lite 是一个为移动和嵌入式设备打造的轻量级、跨平台解决方案

 

这样一个轻量级的解决方案很有必要,因为机器学习越来越多地转移到终端设备,如手机、汽车、可穿戴设备等。在这样的设备上使用 ML 有很多限制,如有限的计算能力、有限的内存、电池限制等,TensorFlow Lite 可以很大程度上解决这些限制。

 

TensorFlow 2.0 新鲜出炉!新定位:端到端开源机器学习平台

TensorFlow Lite 的用例

 

一个惊人的事实:已经有 20 亿移动设备部署使用了 TensorFlow Lite。

 

说明,TensorFlow Lite 有很多国内外客户……

 

TensorFlow 2.0 新鲜出炉!新定位:端到端开源机器学习平台

 

网易有道技术总监林会杰作为 “为什么选择 TensorFlow Lite” 的代表,受邀上台介绍了有道翻译应用 TensorFlow Lite 取得的成果。

 

TensorFlow 2.0 新鲜出炉!新定位:端到端开源机器学习平台

 

TensorFlow Lite 四大主题:

  • 可用性 (Usability):拿来即用

  • 性能 (Performance):模型执行速度更快

  • 优化 (Optimization):让你的模型更小、更快

  • 文档 (Documentation):有很多资源

 

可用性:部署简单,拿来即用

 

TensorFlow 2.0 新鲜出炉!新定位:端到端开源机器学习平台

保存模型,转换到TF Lite,就是这么简单。

 

TensorFlow 2.0 新鲜出炉!新定位:端到端开源机器学习平台

 

新的 TensorFlow Select 功能让模型转换到 TensorFlow Lite 更简单。

 

性能:在可用的硬件条件下,让模型执行尽可能快

 

TensorFlow 2.0 新鲜出炉!新定位:端到端开源机器学习平台

 

有多快呢?训练 MobileNet v1,CPU、GPU 和 Edge TPU 下推理速度分别提升了 1.9倍、7.7 倍和 62 倍

 

优化:让模型更小、更快

 

优化表现:

 

TensorFlow 2.0 新鲜出炉!新定位:端到端开源机器学习平台

TensorFlow 2.0 新鲜出炉!新定位:端到端开源机器学习平台

 

文档:

 

TensorFlow 2.0 新鲜出炉!新定位:端到端开源机器学习平台

Coral 开发板和 USB 加速器

 

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

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

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

 

TensorFlow 2.0 新鲜出炉!新定位:端到端开源机器学习平台

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 美元。

小结

以上就是一年一度的谷歌 TensorFlow 开发者大会上的全新发布了。总体而言,我们看到了 TensorFlow 在设计上的重大革新。这些新特征是否让你对它有所期待呢?

​​​​​​​参考文章:

https://medium.com/tensorflow/introducing-tensorflow-privacy-learning-with-differential-privacy-for-training-data-b143c5e801b6

https://medium.com/tensorflow/test-drive-tensorflow-2-0-alpha-b6dd1e522b01

https://developers.googleblog.com/2019/03/introducing-coral-our-platform-for.html

上一篇:JS---案例:大量字符串拼接效果实现


下一篇:Tensorflow Lite (TF Lite)demo 不支持 mobilenet_v1_1.0_224.tflite float 模型问题的解决