查看原文
其他

TensorFlow 2.0 发布以来,又有哪些最新进展?| AI ProCon 2020

CSDN App CSDN 2020-12-18

【导读】7 月 3-4 日,由 CSDN 主办的第三届 AI 开发者大会(AI ProCon 2020)在线上举行。本次大会有超万人报名参与,参与人群覆盖 50+ 领域、4000 家企业。其中有来自行业内 70+ 顶尖企业、开源社区与科研高校的近 100 位行业领袖、技术大咖与研究学者。


他们用更新鲜、更有趣、更年轻的方式,聚焦智能时代 AI 技术的发展曲线以及 AI 与社会各行业结合的最新应用进展,深入解析热门 AI 技术在行业中的实践与落地经验,揭示技术与行业发展面临的机遇与挑战。

在 7 月 3 日的主论坛上,TensorFlow中国研发团队负责人李双峰带来了《TensorFlow的最新进展》的主题演讲。

 

核心观点:


  • TensorFlow 生态系统有着丰富的工具链,推动前沿研究,支撑大规模应用,可多平台灵活部署。

  • TensorFlow 2 让机器学习更简单:使用 tf.keras 高阶API,动态图 Eager Execution 易调试和静态图高效结合,distribute strategy 可扩展性好,tf.data 加速数据处理,简单、灵活和高性能。支持云端、嵌入式和浏览器端多平台部署。

  • TensorFlow Lite 让机器学习无处不在:支持移动和嵌入式设备,跨平台部署兼容性好,高性能,支持多种硬件加速,提供量化等模型压缩工具。有丰富的SOTA模型和完整案例、Model Maker、代码生成工具和Android Studio集成,方便初学者。

  • TensorFlow 提供了丰富的工具,帮助构建 Responsible AI。

 

以下内容为演讲实录,由 CSDN(ID:CSDNnews)整理:

 

李双峰:大家好!我是来自 Google 的李双峰,负责TensorFlow 中国研发团队,今天我演讲的题目是《TensorFlow的最新进展》。

TensorFlow 开源生态系统提供了丰富的工具链,满足前沿研究—生产环境使用—全场景部署等多样化等需求,帮助构建负责任的 AI 应用,同时受益于庞大社区的贡献。目前,TensorFlow 下载量已经超过1亿次,提交次数89,000+,代码改动请求14,600+,贡献者超过2600位。

 

TensorFlow推动了很多前沿研究,比如16-17年 Google 提出了 Transformer 模型,是最近几年深度学习最有影响力的成果之一;2018年提出了 BERT 模型,带来了 NLP 领域的突破,并很快在工业界得到广泛使用,比如提升搜索质量。

 

TensorFlow 支撑了社区中很多应用,包括环境保护、农业检测、文化艺术研究和医疗健康。在科学计算领域,Summit 是全球领先的超算系统,它利用 TensorFlow 来做极端天气的预测。在工业界,网易严选用 TensorFlow 做销售数据预测,腾讯医疗用 TensorFlow 做医疗影像处理,英语流利说用TensorFlow 帮助用户学习英语。大家常见的推荐和搜索系统,背后很多都用到了 TensorFlow。

 

TensorFlow 2 让机器学习更简单


TensorFlow 2 侧重于易用性,同时仍然保持灵活高效。

 

TensorFlow 2 的整体架构分为「训练」和「部署」两个部分,训练部分包括了数据设计、模型设计、训练及分析等功能:训练时可以用 Keras 这样的高阶 API 来构建模型,也可以用 tf.data 来做高性能数据处理,在不同硬件做大规模训练时需要用到Distribution Strategy。训练之后产生的模型以SavedModel 格式存起来,它可以在不同平台部署,也可以发布到 TensorFlow Hub 上,便于共享。部署部分,包括用于浏览器和 Node.js 上部署的 TensorFlow.js,在移动和嵌入式平台部署的 TensorFlow Lite,和服务器端部署的TensorFlow Serving。

 

1. 易用性:为了提升易用性,TensorFlow 2 采用了 tf.keras 高阶 API,只需要数行代码就可以构建一个复杂的网络。默认是动态图 Eager Execution,使用命令式的编程方式,能够和周围的 python 代码融合的更好,便于调试。同时可以使用 tf.function 把动态图转换成静态图,还可以开启XLA编译优化,提升性能。API更加简单,文档更清晰,比如在1.0的时候,LSTM可能会有不同的写法,2.0之后写法将变得一致。

 

2. 灵活性:TensorFlow 2 满足从简单建模到复杂模型高度灵活的需求。新用户和简单案例,可用 Keras 内置模块和 Keras Sequential API;进一步可以用 Keras Functional API,还可以定制 Keras 模块;追求极大灵活度,可以使用Subclass 来完全定制自己的各种模块和训练循环。比如:

  • 构造一个看图回答问题的网络,需要一个 CNN 网络处理图像输入、Embedding + LSTM 处理问题文本输入,再加上全联接网络进行分类,每个部分都只需要数行代码就可以实现。

  • 处理 NLP 问题,有 TF.dataset 提供数据集,有 Keras preprocessing、TF.text 和 TF.addons 等提供多种预处理工具,KerasTuner 来进行超参数调整,工业级应用时有 Keras 实现的 BERT 作为参考,以及 TF Hub 上有很多预先训练好的模块。

 

3. 可扩展性和高性能:使用distribute.Strategy,一行代码就可以从单机多CPU(使用MirroredStrategy)扩展到多机多CPU(使用MultiWorkerMirroredStrategy)。比如最近TF 2.2,通过多种优化(NCCL优化,FP16梯度计算,梯度计算和反向传播并行化),在进行BERT SQuAD训练时,吞吐量相对于TF 2.0有2.5倍的提升。TF 2.2 中还在 TensorBoard 中提供了 TF Profiler 工具集,可以统计和追踪性能的瓶颈。数据处理是深度学习训练的瓶颈之一,tf.data 可以加速数据处理,在即将发布的 TF 2.3 中,增加了两个功能:tf.data snapshot 可以复用已经计算过的数据,而 tf.data service 可以扩展多个 worker 加速数据预处理并容错。

 

4. 丰富的多平台部署能力。


支持灵活的多平台部署,包括服务器、移动和嵌入式设备,和浏览器端。

 

TensorFlow Extended (TFX),是一个端到端的机器学习平台,它可以创建和管理大规模生产环境中的复杂机器学习工作流,在 Google 被大规模使用。TFX 提供了丰富的组件,比如对数据流做统计验证并查看异常,数据清理和转换,持续训练模型,并将对模型进行评估和验证,最后将合格的模型部署到生产环境中。

 

在服务器端部署中,TensorFlow Serving 是一个高性能的TensorFlow  模型部署系统,允许多版本模型同时部署,实时上线,并支持 RPC 和 RESTful API。

 

Tensorflow.js 是为 Javascript 而定制的机器学习平台,可以利用现有的 JS 模型包,对现有模型做迁移学习,或者用 JS从头训练模型。我们已经提供了多种多样的模型,最近发布了手势识别模型和基于 MobileBERT 的问题回答模型。它可以支持各种浏览器,也支持各种框架比如 React Native,还可以在服务器端使用 Node.js。特别值得一提的是,TF.js 提供了微信小程序插件,可以直接在小程序里运行TF.js程序,比 ModiFace 虚拟试妆小程序使用了 TF.js,总共大小是1.8M(980KB JS + 830KB model),速度达到25FPS。

 

TensorFlow Lite 可以部署在移动和嵌入式设备端,甚至MCU上。

 

TensorFlow Lite 让机器学习无处不在

 

TensorFlow Lite(TFLite)是一个轻量、快速、跨平台的专门针对移动和 IoT 应用场景而优化的框架,它支持安卓、iOS、嵌入式设备(如树莓派)、硬件加速器(比如EdgeTPU)甚至非常小的MCU平台等。人们用 TensorFlow Lite 做包括语音、视频、图像、自然语言处理等多种功能。全球有超过40亿设备部署了TensorFlow Lite,比如Google的许多应用像Google Assistant,国外应用像Uber、Airbnb,国内应用像网易、爱奇艺、WPS、腾讯的全民K歌等。

 

性能是我们持续不断提升的一个领域,TensorFlow Lite 性能强大,同时支持多种硬件加速器,比如 GPU、NNAPI、DSP和CoreML。以 MobileNetV1 为例子,Pixel4上单线程CPU上浮点模型只需要37ms,量化提升2.8倍达到13ms,在GPU上使用OpenCL则只要6ms。GPU上最近增加了对 OpenCL 的支持,在多个视觉模型上的测试表明,基于 OpenCL 的 GPU 性能提升为 CPU 上的 4-6 倍, 是OpenGL 的 2 倍。另一个即将到来的新突破,是全新的高度优化后的浮点卷积核库 XNNPACK。在多个关键浮点卷积模型上的测试表明,在多种硬件平台上,使用 XNNPACK 后,单线程 CPU 性能提升达20%~200% 。比如在 X86 Windows 平台上,有两倍的提升。

 

我们也提供 TensorFlow Lite for Micro 功能,支持在 MCU 上运行超级小的模型:语音识别的模型只要20KB,人物探测250KB,手机姿态检测也只需要20KB,这样的模型可以真正让机器学习无处不在 。

 

TensorFlow模型优化工具,支持量化、剪枝等多种模型压缩技巧,使用简单,进一步压缩了模型。

 

TensorFlow Lite 初学者,从哪开始?

 

1. 预训练前沿模型和完整参考示例


Tensorflow Lite 官网提供了丰富等预训练模型库和完整应用代码(包括模型前处理和后处理),包括多种案例,比如对象追踪、风格迁移和问题回答,也包括不同平台的例子(比如 Android、iOS、树莓派及 MCU)。比如,在手机上实现问题问答是一个很有挑战的问题,我们发布了基于 MobileBERT 的参考应用。另外,社区 github 项目 “Awesome TFLite”,也收集了很多有意思的示例。


我们推出了一些前沿的预训练模型,比如:


  • EfficientNet-Lite 是新颖的图像分类模型,可通过减少计算和参数的数量级来实现 SOTA 的准确性。它针对 TFLite 量化方式进行了优化,在损失较低精度 (几乎可忽略) 的同时大大提升了推理速度,并可以运行在 CPU、GPU上,在相似的高精度下,EfficientNet-lite4比 Inception v4 有显著的速度提升。

  • MobileBERT 和 ALBERT-Lite 是流行的 BERT 模型的优化版本,该模型在一系列 NLP 任务(包括问答、自然语言推断等)上均达到了 SOTA 的准确度。其中,MobileBERT 的体积是 BERT 的1/4,速度是 BERT 的4倍,同时保持了相近的准确度。我们还开发了量化版本的 MobileBERT,它是 BERT 的1/16,速度是 BERT 的8倍,目前 MLPerf 社区正尝试基于此进行移动硬件加速的 NLP 基准测试。


2. TFLite Model Maker

 

初学者如果希望定制自己模型,但是不懂机器学习、也不懂构建模型?没关系,用 TFLite Model Maker,它提供了一个Python的库,你不需懂ML,只需要4、5行Python代码,就可以根据你的数据来定制一个模型。

 

3. TFLite 代码生成和 Android Studio ML model Binding 工具

 

TFLite Model Maker 生成的模型会自动加上 TFLite Metadata,我们提供了一个代码生成工具 TFLite codegen,把带有TFLite Metadata 的模型直接转换成安卓代码,让安卓的开发者不怎么需要太懂这个模型,就能够像用API一样去写代码。 生成的代码还可以做一些前处理和后处理工作。

 

更进一步,我们也将此功能集成到 Android Studio 的ML model binding工具中,只需要把模型导入到Android Studio中就可以生成代码,目前已在Android Studio 4.1中提供试用版。

 

TensorFlow 提供了丰富的工具链

 

如果不希望从头训练这个模型,希望利用迁移学习,则可以使用 TensorFlow Hub,它是开箱即用的预训练模型库,提供了多种模型(比如图像 、文本、视频、音频等),也支持多种部署的格式(如TF、TFLite、 TF.js)。其中有不少社区贡献的模型,比如NVIDIA。

 

如果你只是关注前沿研究,不关注部署的问题,可以去尝试一个非常新的高性能、轻量级框架JAX,它是为了研究者构建的。JAX 结合了自动微分和 XLA 的功能,使用纯粹的 Python作为 API,非常易用而轻量级,同时可以利用 XLA 编译到GPU 或者 TPU 上,从而保持高性能。

 

我们也开源了新的编译器框架 MLIR 来加速机器学习。MLIR提供了最新的ML编译器技术,支持多层次IR,模块化,可定制。它由 LLVM 项目管理,立场中立,最大的一些硬件厂商都表示支持,一起推动 MLIR 的发展。MLIR 正在帮助构建更好的 TensorFlow,通过编译加速,简化硬件支持,也用在了TensorFlow 到 TFLite 的转化。

 

TensorFlow 生态系统提供了非常丰富的扩展库,这些库针对当前机器学习领域的最前沿研究提供了很多工具,已经有超过80个不同的 Tensorflow 库供研究人员使用。比如对贝叶斯模型感兴趣,可以使用 TF probablility 库;如果想要 NLP 模型处理,提供了 TF Text 库;对于深度学习和 Graph 结合,可以研究 TF Neural Structured Learning;想探索强化学习,利用 TF Agents。最新发布的一个库 TensorFlow Quantum,把 TensorFlow 和量子计算结合起来。

 

TensorFlow 推动负责任的AI (Responsible API)

 

TensorFlow 开源了很多工具来推动负责任的AI(ai.google/responsibilities/responsible-ai-practices),这些工具关注如下几个方面:


  1. 提供最佳实践:比如 People+AI Guidebook 是一个指南,帮助大家去构建以人为本的AI。

  2. 公正性:比如 TensorFlow Fairness Indicators 可用于模型公正性评估和可视化。

  3. 可解释性:比如 TensorFlow Model Analysis 帮助分析模型。

  4. 模型隐私:比如 TF Privacy 帮助训练更具隐私性的模型,而 TF Federated 利用联邦学习来增强数据隐私。

  5. 关注模型安全:持续推进和支持社区进行相关基础研究,开源工具。

 

TensorFlow的学习资源和社区

 

学习资源


  1. 官方网站 tensorflow.google.cn:有非常丰富的TensorFlow 2 教程和最佳实践。

  2. TensorFlow 微信公众号:包含 TensorFlow 最新进展和技巧,大量社区和公司分享的工业界案例和经验,还有很多前沿研究翻译成中文,是非常好的学习资源。

  3. TensorFlow 教程:Coursera 和 Udacity 上有多门很好的 TensorFlow 实战的课程,很多都是免费的。Google也提供了《Machine Learning Crash Course》 TF 2.x版,便于没有 ML 基础的快速入门。

  4. 中文社区教程:比如 tf.wiki 上的《简单粗暴 TensorFlow 2》,d2l.ai 上的《动手学深度学习》(TensorFlow 2版),黑胡桃实验室的《TensorFlow Crash Course》 , 腾讯课堂上的《TensorFlow.js遇到小程序》等。

 

实战


  1. Kaggle竞赛: Kaggle构建了好 TensorFlow 2 运行环境,参与者可以使

  2. 考证:TensorFlow  Developer Certificate是全球统一认证的证书。

  3. TensorFlow Model Garden:特别欢迎大家为TF Model Garden 贡献 TensorFlow 2模型,有机会成为TensorFlow 官方推荐的代码,也有可能获得 Google Open Source Peer Bonus。可以在 github.com/tensorflow/models 找到相关任务。

 

社区


  1. 文档翻译、创建中文教程和视频:目前 TensorFlow 官网中文文档很大部分都是社区贡献和维护的,只要有热情,每个人都可以参与。

  2. 分享案例:欢迎给TensorFlow微信公众号投稿,分享案例和经验,也可以在 CSDN 等社区分享经验。

  3. 参与社区 TFUG(TensorFlow User Group):可以参与 TFUG 活动,也可以申请成为所在城市的组织者,甚至申请新的 TFUG。目前大陆地区已有19个城市有 TFUG。

  4. 贡献代码和模型:TensorFlow 有多个 SIG 小组,也有不少中文社区的开发者领导这些SIG小组,比如SIG Networking, SIG IO,SIG AddOns,欢迎大家参与TF SIG 小组,贡献代码,也可以贡献模型。

  5. 成为社区专家 GDE(Google Developer Expert):目前大陆地区已有不少 ML GDE。

 

最后,如果大家希望了解更多,可以在微信搜索关注”TensorFlow” 官方公众号,和访问官方网站:tensorFlow.google.cn。

 

谢谢大家!


更多精彩推荐
☞中国首个火星探测器天问一号发射成功!
推特惊爆史诗级漏洞,App 恶意窃取用户隐私,云端安全路向何方?
☞谷歌教父传奇:跳级读博士、大学共同创立 Google ,规定工程师 25% 时间思考创意
万亿美元软件浪潮来临,开发者是核心!
用 Python 可以实现侧脸转正脸?我也要试一下!
员工导致Twitter陷入史诗级加密黑客风暴?官方回应来了
点分享点点赞点在看

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存