文 / TFRT 产品经理 Eric Johnson、TFRT 技术负责人 Mingsheng Hong
TensorFlow 目标是在让您可以在不同设备上轻松构建和部署 ML 模型。当然,“构建和部署 ML 模型”并非一成不变,随着在 ML 生态系统投入的增加,它的含义也将不断衍变。
在 TensorFlow 技术栈的上半部分,持续出现的创新成功带来了更加复杂的模型和部署场景。研究人员正在不断寻找支持更多计算的新算法,开发者在使用新技术的过程中也在终端和服务器上不断改进自己的产品。
而在技术栈的下半部分,由于摩尔定律终结,计算需求和计算成本大幅上升,针对 ML 用例的新硬件层出不穷。传统芯片制造商、创业公司和软件公司(包括 Google)都在纷纷投资于专用芯片。
摩尔定律终结
由此,ML 生态系统的需求与 4 到5 年前首次创建 TensorFlow 时相比迥然不同。当然,我们已对 2.x 版本进行持续的迭代升级,但目前的 TensorFlow 技术栈已针对图执行 (Graph Execution) 进行优化,并在分派单个算子时仍有不小的资源开销。所以,高性能的底层运行时是支撑当今形势、推动未来创新的关键。
我们推出新的 TensorFlow 运行时 — TFRT。TensorFlow RunTime (TFRT) 旨在提供一个统一、可扩展的基础架构层,在各种领域特定硬件上实现一流性能。高效利用多线程主机的 CPU,支持完全异步的编程模型,同时专注于底层效率。
希望以模块化方式将终端和数据中心设备集成到 TensorFlow 中的硬件制造商。
什么是 TFRT?
TFRT 是一款全新的 TensorFlow 运行时,将取代现有的 TensorFlow 运行时。TFRT 负责在目标硬件上以底层的设备特定原语实现内核的高效执行。其在即时执行和图执行模式中都发挥着关键作用,下面这张 TensorFlow 训练技术栈简化图就能说明这一点:
TFRT 在 TensorFlow 训练技术栈中的图执行和即时执行模式下的作用
请注意,以灰色显示的所有内容都属于 TFRT。
在即时执行中,TensorFlow API 直接调用这一新运行时;在图执行中,程序的计算图转换为特定目标的专用程序,并分派给 TFRT。在两种执行路径中,新的运行时都会调用一组内核,这些内核将调用底层硬件设备完成模型执行,如黑色箭头所示。
关键设计点
为确保行为一致,TFRT 在即时和图执行模式中均使用通用抽象,例如形状函数和内核。
MLIR 助力
TFRT 使用 MLIR 的可扩展类型系统支持运行时中的任意 C++ 类型,消除了仅支持特定张量的限制。
TFRT 和 MLIR 的结合将进一步提升 TensorFlow 的一致性、灵活性和可扩展性。
初步成果
推理和服务用例中的早期性能结果十分鼓舞人心。
在 2020 年 TensorFlow 开发者峰会的基准测试研究中,我们将 TFRT 与 TensorFlow Serving 相集成,并测出了向模型发送请求和获取预测结果的延迟时间。我们选取了一个常见的 MLPerf 模型:ResNet-50,将 batch size 大小设定为 1,数据精度为 FP16 ,以便专注于研究与运行时相关的算子分派开销。通过将借助 TFRT 实现的 GPU 推理性能与目前的运行时相比较,我们发现,平均推理时间缩短了 28%。这些早期结果有效验证了 TFRT 的强大功能,我们期望它能带来更大的性能提升,也希望您和我们一样为此振奋!
未来计划
现在,TFRT 作为可选的开启项,确保团队能有时间修复错误及完成性能调优,但最终 TFRT 将成为 TensorFlow 的默认运行时。虽然此项目仍处于初期阶段,但我们已将 GitHub 代码库分享给社区。在初期,我们会限制添加内容,期待大家能以探讨需求和设计的方式参与进来。
2020 年 TensorFlow 开发者峰会 - 嵌入式环节
如需了解详情,请查看我们在 2020 年开发者峰会上的介绍 ,这是我们首次介绍 TFRT。此外,您还可查看我们的 MLIR 开放设计深度教程演示文稿,我们详细概述了 TFRT 核心组件、底层抽象和常规设计原则。最后,如果您希望及时了解有关 TFRT 的所有信息,请加入我们的新邮件列表。谢谢!
如果您想详细了解 本文提及 的相关内容,请参阅以下文档。这些文档深入探讨了这篇文章中提及的许多主题:
更多计算
https://openai.com/blog/ai-and-compute/
终端
https://cloud.google.com/edge-tpu
Google
https://cloud.google.com/tpu
MLIR
https://tensorflow.google.cn/mlir
2020 年 TensorFlow 开发者峰会
https://tensorflow.google.cn/dev-summit
TensorFlow Serving
https://tensorflow.google.cn/tfx/guide/serving
MLPerf
https://mlperf.org/
GitHub 代码库
https://github.com/tensorflow/runtime
MLIR 开放设计深度教程演示文稿
https://drive.google.com/corp/drive/u/0/folders/1fkLJuVP-tIk4GENBu2AgemF3oXYGr2PB
新邮件列表
https://groups.google.com/a/tensorflow.org/d/forum/tfrt
了解更多请点击 “阅读原文” 访问 Github 代码库。