推荐序的内容看了有些启发,因此整体一下:
写在前面:
TensorFlow 2 降低机器学习门槛,促进机器学习无处不在
1、深度学习做啥了
深度学习带来了机器学习技术的革命,也让人工智能成为近年来最火爆的话题之一,对研究界、产业界和社会都带来了深远的影响。在学术界,arXiv 上的机器学习论文急剧增长,增长速度赶上了摩尔定律;在工业界,深度神经网络技术被大规模地使用在搜索、推荐、广告、翻译、语音、图像和视频等领域;在社会中,公众非常关注人工智能对于社会的影响,如何构建负责的 AI 成为重要话题。深度学习也在推动一些人类最重大的工程挑战,比如自动驾驶技术、医疗诊断和预测、个性化学习、加速科学发展(比如天文发现)、跨语言的自由交流(比如实时翻译),更通用的人工智能系统(比如 AlphaGo)等。
2、TensorFlow 做啥了
TensorFlow 是开源的端到端的机器学习平台,提供了丰富的工具链,推动了机器学习的前沿研究,支撑了大规模生产使用,支持多平台灵活部署。TensorFlow 有着庞大的社区,目前全球下载量已经超过 1 亿次,而遍布全球各地的开发者不断为社区做贡献。TensorFlow 推动了很多前沿研究,比如 2017 年 Google 提出了 Transformer 模型,可能是过去几年深度学习最有影响力的成果之一;而 2018 年提出了 BERT 模型,带来了 NLP 领域近年来最大的突破,很快在工业界得到广泛使用。TensorFlow 支撑了社区中很多应用,比如环境保护(亚马逊丛林的护林人员使用 TensorFlow 来识别丛林中砍树的声音,判断是否有盗伐者)、农业监测(在非洲,开发者使用 TensorFlow 制作出判断植物是否生病的手机应用,只需对植物进行拍照)、文化研究(比如兰州大学使用 TensorFlow 做基于敦煌壁画的服饰生成)和健康保护(比如安徽中医药大学使用 TensorFlow 识别中草药)。在科学计算领域,Summit 是全球领先的超算系统,它利用 TensorFlow 来做极端天气的预测。在工业界,很多常见的应用背后都有 TensorFlow 的支持,比如网易严选用 TensorFlow 做销售数据预测,腾讯医疗使用 TensorFlow 做医疗影像处理,英语流利说用 TensorFlow 帮助用户学习英语。大家常见的推荐、搜索、翻译和语音识别产品等,背后很多也都用了 TensorFlow。
3、TensorFlow 特点
1)TensorFlow 2 重点关注易用性,同时兼具可扩展性和高性能,降低了机器学习的门槛。一项技术只有低门槛,才更容易促进大规模的普及,这也是 TensorFlow 的重要目标:促进人人可用的机器学习,帮助构建负责的 AI 应用(Responsbile AI)。TensorFlow 2 中默认推荐使用 Keras 作为高阶 API,Keras 受到广大开发者的喜爱,简单易用,里面有大量模块可以复用,数行代码就可以构造一个复杂的神经网络。它兼具灵活性,很多部分可以定制,满足多层次的需求(比如研究人员探索不同的模型结构)。TensorFlow 2 中默认为动态图方式执行,便于调试;同时可以轻松使用 tf.function 把静态图转换为动态图,还可打开 XLA 编译优化功能,提高性能。API 一致性和丰富的文档非常重要,TensorFlow 2 对于保持 API 的一致性做了大量工作。TF2 中可轻松使用 Distribute Strategy,一行代码就可以实现从单机多卡到多机多卡的切换;提供了 tf.data 提供高性能可扩展性的数据流水线;也在 TensorBoard 中提供了丰富的功能来帮助调试和优化性能。
2)TensorFlow Lite 加速了端侧机器学习 (On-device ML,ODML) 的快速发展,让机器学习无处不在。它支持安卓、iOS、嵌入式设备,以及极小的 MCU 平台。全球已经有超过 40 亿设备部署了 TensorFlow Lite,除了 Google 的大量应用,国外像 Uber、Airbnb,国内像网易、爱奇艺、腾讯的全民 K 歌等应用都用上了 TensorFlow Lite。TensorFlow Lite 支持多种量化和压缩技巧。我们持续提升性能,支持各种硬件加速器(比如 NNAPI、GPU、DSP、CoreML 等)。我们持续发布前沿模型(比如 EfficientNet-Lite,MobileBERT)和完整参考应用,并提供丰富的工具降低门槛(比如 TFLite Model Maker 和 Android Studio ML model binding)。最近的一些突破,比如基于强大的 BERT 模型的问题回答系统也可以运行在低端 CPU 上(利用压缩的 MobileBERT),在 MCU 上的简单语音识别模型只需要 20KB,这些给端侧机器学习带来了广阔前景,真正让机器学习无处不在成为可能。
3)TensorFlow 生态系统还有着丰富的工具链。TFX 支持端到端的复杂的机器学习流程,而其中 TF Serving 是广泛使用的高性能的服务器端部署平台。TF.js 支持使用 Javascript 在浏览器端部署,也与微信小程序有很好的集成,是最广大 Javascript 爱好者提供了便利。TensorFlow Hub 提供了丰富的即开即用的上千个预训练模型,覆盖语言、语音、文本等多种应用,方便使用迁移学习,进一步降低机器学习的门槛。众多团队基于 TensorFlow 构建了多元的工具,比如 TF Probability (TF 和概率模型结合)、TF Federated (联邦学习)、TF Graphics(TF 和图形学),甚至 TF Quantum(TF 和量子计算)。
4、学完TensorFlow可以做啥呢
TensorFlow是一个开放的社区,大家总可以在社区中找到自己的兴趣。可以关注各地的 TensorFlow User Group(TFUG)活动,大陆地区已有 19 个城市有 TFUG;如果所在城市没有,你也可以申请组织当地的 TFUG。可以从为社区翻译文档,创作教程和分享案例开始。当你学习完此书,胸有成竹时,欢迎报考全球通用的 TensorFlow Developer Certificate,参加 Kaggle 比赛(并享受免费 GPU 和 TPU),为 TensorFlow 贡献模型(TensorFlow Model Garden 特别欢迎大家贡献 TF 2 的模型),或者参加 TensorFlow SIG,贡献代码。经验丰富而对社区贡献充满激情的朋友们,欢迎像 Xihan 和 Zhuohuan 一样,申请 ML GDE,在社区中发挥更大的影响力。
5、TensorFlow概述
(1)对于学生和研究者:模型的建立与训练
模型在计算机中具体要如何实现。这时,你希望能有一个程序库,帮助你把书本上的公式和算法运用于实践。
1、数学概念表示、2、建立模型和损失函数、3、求偏导、4、优化方法更新模型参数
1、数学概念表示、2、建立模型和损失函数、3、求偏导、4、优化方法更新模型参数(2)开发者和工程师:模型的调用与部署
如果你是一位在 IT 行业沉淀多年的开发者或者工程师,你可能已经对大学期间学到的数学知识不再熟悉(“多元函数…… 求偏微分?那是什么东西?”)。然而,你可能希望在你的产品中加入一些与人工智能相关的功能,抑或需要将已有的深度学习模型部署到各种场景中。具体而言,包括:
如何导出训练好的模型?
如何在本机使用已有的预训练模型?
如何在服务器、移动端、嵌入式设备甚至网页上高效运行模型?
(3)TensorFlow 能帮助我们做什么?
TensorFlow 可以为以上的这些需求提供完整的解决方案。具体而言,TensorFlow 包含以下特性:
训练流程
数据的处理 :使用 tf.data 和 TFRecord 可以高效地构建和预处理数据集,构建训练数据流。同时可以使用 TensorFlow Datasets 快速载入常用的公开数据集。
模型的建立与调试 :使用即时执行模式和著名的神经网络高层 API 框架 Keras,结合可视化工具 TensorBoard,简易、快速地建立和调试模型。也可以通过 TensorFlow Hub 方便地载入已有的成熟模型。
模型的训练 :支持在 CPU、GPU、TPU 上训练模型,支持单机和多机集群并行训练模型,充分利用海量数据和计算资源进行高效训练。
模型的导出 :将模型打包导出为统一的 SavedModel 格式,方便迁移和部署。
部署流程
服务器部署 :使用 TensorFlow Serving 在服务器上为训练完成的模型提供高性能、支持并发、高吞吐量的 API。
移动端和嵌入式设备部署 :使用 TensorFlow Lite 将模型转换为体积小、高效率的轻量化版本,并在移动端、嵌入式端等功耗和计算能力受限的设备上运行,支持使用 GPU 代理进行硬件加速,还可以配合 Edge TPU 等外接硬件加速运算。
网页端部署 :使用 TensorFlow.js,在网页端等支持 JavaScript 运行的环境上也可以运行模型,支持使用 WebGL 进行硬件加速。
理解模型部署:
当我们将模型训练完毕后,往往需要将模型在生产环境中部署。最常见的方式,是在服务器上提供一个 API,即客户机向服务器的某个 API 发送特定格式的请求,服务器收到请求数据后通过模型进行计算,并返回结果。TensorFlow 为我们提供了 TensorFlow Serving 这一组件,能够帮助我们在实际生产环境中灵活且高性能地部署机器学习模型。
只有当模型预测结果为用户信赖,经常使用,它才算开始为组织带来价值。这期间的模型训练,使用户用上预测结果以及相关系统的配套就叫做部署。
场景一
公司希望无论用户是网页端还是电脑端都能看到产品推荐内容。推荐结果能对请求及时响应,请求可能在一天中的任意时刻发生。
这给我们的部署增加了延迟约束,决定了我们能否在用户登录时即时生成预测,还是必须提前生成并将推荐预测缓存起来。模型部署必须保证模型结果在移动端和 web 端都能访问,所以将部署与这些应用独立开来单独作为一个模块是个不错的选择。
总结一下以上场景,当你考虑怎么部署机器学习模型的时候有这么一些因素要考虑:
隔多久生成一次结果
每次生成一个实例还是一批实例
哪些模块会与模型发生交互,数量、接口形式
这些访问请求对延迟的敏感度
模型部署对不少数据科学从业者来说都是痛点,但一旦终端用户能稳定用上模型结果就能为组织、公司带来价值。所以从业者们必须懂得并抓住模型部署的本质,具备部署能力。而部署模型第一步就是要意识到所谓部署就是弄清终端用户与模型结果的交互方式。
参考资料:
1、 简单粗暴 TensorFlow 2 推荐序 https://tf.wiki/zh_hans/foreword.html
2、 简单粗暴 TensorFlow 2 TensorFlow Serving https://tf.wiki/zh_hans/deployment/serving.html
3、部署模型到底是在说什么https://libertydream.github.io/2020/02/23/%E6%A8%A1%E5%9E%8B%E9%83%A8%E7%BD%B2%E5%88%B0%E5%BA%95%E6%98%AF%E5%9C%A8%E8%AF%B4%E4%BB%80%E4%B9%88/
网友评论