概述
TensorFlow 开源生态系统是什么?有哪些最新进展?别急,我们为你整理了TensorFlow 中国研发团队负责人李双峰在CSDN 主办的第三届 AI 开发者大会 7 月 3 日的主论坛上进行《TensorFlow 的最新进展》的主题演讲,带你解读一系列更新发布内容。
原文发布在 CSDN 公众号上,以下内容为演讲实录,由 CSDN(ID:CSDNnews)整理。
要点概览:
- TensorFlow 生态系统有着丰富的工具链,推动前沿研究,支撑大规模应用,可多平台灵活部署。
- TensorFlow 2 让机器学习更简单:使用 tf.keras 高阶 API,动态图 Eager Execution 易调试和静态图结合更高效,distribute strategy 可扩展性好,tf.data 加速数据处理,简单、灵活和高性能。支持云端、嵌入式和浏览器端多平台部署。
- TensorFlow Lite 让机器学习无处不在:支持移动和嵌入式设备,跨平台部署兼容性好,高性能,支持多种硬件加速,提供量化等模型压缩工具。有丰富的 SOTA 模型和完整案例、Model Maker、代码生成工具和 Android Studio 集成,方便初学者。
- TensorFlow 提供了丰富的工具,帮助构建 Responsible AI。
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 的整体架构分为「训练」和「部署」两个部分,训练部分包括了数据设计、模型设计、训练及分析等功能:训练时可以用 Keras 这样的高阶 API 来构建模型,也可以用 tf.data 来做高性能数据处理,在不同硬件做大规模训练时需要用到 Distribution Strategy。训练之后产生的模型以 SavedModel 格式存起来,它可以在不同平台部署,也可以发布到 TensorFlow Hub 上,便于共享。部署部分,包括用于浏览器和 Node.js 上部署的 TensorFlow.js,在移动和嵌入式平台部署的 TensorFlow Lite,和服务器端部署的 TensorFlow Serving。
- 易用性
为了提升易用性,TensorFlow 2 采用了 tf.keras 高阶 API,只需要数行代码就可以构建一个复杂的网络。默认是动态图 Eager Execution,使用命令式的编程方式,能够和周围的 Python 代码融合的更好,便于调试。同时可以使用 tf.function 把动态图转换成静态图,还可以开启 XLA 编译优化,提升性能。API 更加简单,文档更清晰,比如在 1.0 的时候,LSTM 可能会有不同的写法,2.0 之后写法将变得一致。 - 灵活性
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 上有很多预先训练好的模块。
-
可扩展性和高性能
使用 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 加速数据预处理并容错。 -
丰富的多平台部署能力
支持灵活的多平台部署,包括服务器、移动和嵌入式设备,和浏览器端。
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),速度达到 25 FPS。
TensorFlow Lite 可以部署在移动和嵌入式设备端,甚至 MCU 上。
TensorFlow Lite 让机器学习无处不在
TensorFlow Lite (TFLite)是一个轻量、快速、跨平台的专门针对移动和 IoT 应用场景而优化的框架,它支持 Android、iOS、嵌入式设备(如树莓派)、硬件加速器(比如 EdgeTPU)甚至非常小的 MCU 平台等。人们用 TensorFlow Lite 做包括语音、视频、图像、自然语言处理等多种功能。全球有超过 40 亿设备部署了 TensorFlow Lite,比如 Google 的许多应用像 Google Assistant,国外应用像 Uber、Airbnb,国内应用像网易[1]&[2]、爱奇艺、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 推动 Responsible AI
TensorFlow 开源了很多工具来推动 Responsible AI(负责任的 AI),这些工具关注如下几个方面:
- 提供最佳实践:比如 People+AI Guidebook 是一个指南,帮助大家去构建以人为本的 AI。
- 公正性:比如 TensorFlow Fairness Indicators 可用于模型公正性评估和可视化。
- 可解释性:比如 TensorFlow Model Analysis 帮助分析模型。
- 模型隐私:比如 TF Privacy 帮助训练更具隐私性的模型,而 TF Federated 利用联邦学习来增强数据隐私。
- 关注模型安全:持续推进和支持社区进行相关基础研究,开源工具。
TensorFlow 的学习资源和社区
学习资源
-
官方网站 tensorflow.google.cn:有非常丰富的TensorFlow 2 教程和最佳实践。
-
TensorFlow 微信公众号:包含 TensorFlow 最新进展和技巧,大量社区和公司分享的工业界案例和经验,还有很多前沿研究翻译成中文,是非常好的学习资源。
-
TensorFlow 教程:Coursera 和 Udacity 上有多门很好的 TensorFlow 实战的课程,很多都是免费的。Google 也提供了《Machine Learning Crash Course》 TF 2.x 版,便于没有 ML 基础的快速入门。
-
中文社区教程:比如 tf.wiki 上的《简单粗暴 TensorFlow 2》,d2l.ai 上的《动手学深度学习》(TensorFlow 2 版),黑胡桃实验室的《TensorFlow Crash Course》 , 腾讯课堂上的《TensorFlow.js 遇到小程序》等。
实战
- Kaggle 竞赛:Kaggle 构建了 TensorFlow 2 运行环境,参与者可以使用方便免费的 GPU/TPU 的资源,和多种数据集来训练模型。
- 考证:TensorFlow Developer Certificate 是全球统一认证的证书,现在已经有 500+ 开发者获得认证。
- TensorFlow Model Garden:特别欢迎大家为 TF Model Garden 贡献 TensorFlow 2 模型!您的代码将有机会获得 TensorFlow 的官方推荐,也有可能获得 Google Open Source Peer Bonus。如需了解详情,请访问链接,找到相关任务。
社区
-
文档翻译、创建中文教程和视频:目前 TensorFlow 官网中文文档很大部分都是社区贡献和维护的,只要有热情,每个人都可以参与。
-
分享案例:欢迎给 TensorFlow 微信公众号投稿,分享案例和经验,也可以在 CSDN 等社区分享经验。
-投稿
TensorFlow 微信公众号【菜单栏】→【近期活动】→【投稿戳我】 -
参与社区 TFUG(TensorFlow User Group):可以参与 TFUG 活动,也可以申请成为所在城市的组织者,甚至申请新的 TFUG。目前大陆地区已有 19 个城市有 TFUG。
-
贡献代码和模型:TensorFlow 有多个 SIG 小组,也有不少中文社区的开发者领导这些 SIG 小组,比如 SIG Networking、SIG IO、SIG AddOns 等,欢迎大家参与 TF SIG 小组,贡献代码,也可以贡献模型。
-
成为谷歌开发者专家 (Google Developer Expert,GDE):目前大陆地区已有不少 ML GDE。
最后,如果大家希望了解更多,可以在微信搜索关注 ”TensorFlow (tensorflow_official)” 官方公众号和访问官方网站:tensorflow.google.cn。
谢谢大家!
最后
以上就是呆萌大碗为你收集整理的【更新发布】官方研发团队:TensorFlow 2 最新进展解读的全部内容,希望文章能够帮你解决【更新发布】官方研发团队:TensorFlow 2 最新进展解读所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复