TFRT:全新的 TensorFlow 运行时

文 / TFRT 产品经理 Eric Johnson、TFRT 技术负责人 Mingsheng Hong,2020/4/29

TensorFlow 目标是在让您可以在不同设备上轻松构建和部署 ML 模型。当然,“构建和部署 ML 模型” 并非一成不变,随着在 ML 生态系统投入的增加,它的含义也将不断衍变。

在 TensorFlow 技术栈的上半部分,持续出现的创新成功带来了更加复杂的模型和部署场景。研究人员正在不断寻找支持 更多计算 的新算法,开发者在使用新技术的过程中也在 终端 和服务器上不断改进自己的产品。

而在技术栈的下半部分,由于 摩尔定律终结,计算需求和计算成本大幅上升,针对 ML 用例的新硬件层出不穷。传统芯片制造商、创业公司和软件公司(包括 Google)都在纷纷投资于专用芯片。

由此,ML 生态系统的需求与 4 到 5 年前首次创建 TensorFlow 时相比迥然不同。当然,我们已对 TensorFlow 2.x 版本进行持续的迭代升级,但目前的 TensorFlow 技术栈已针对图执行 (Graph Execution) 进行优化,并在分派单个算子时仍有不小的资源开销。所以,高性能的底层运行时是支撑当今形势、推动未来创新的关键
我们推出新的 TensorFlow 运行时 — TFRT。TensorFlow RunTime (TFRT) 旨在提供一个统一、可扩展的基础架构层,在各种领域特定硬件上实现一流性能。高效利用多线程主机的 CPU,支持完全异步的编程模型,同时专注于底层效率。

TFRT 将让大批用户获益,包括:

  • 在即时模式 (Eager mode) 下开发新的复杂模型时,希望缩短迭代时间、改进错误报告的研究人员;
  • 在生产环境中训练和维护模型时,希望提升性能的应用开发者;
  • 希望以模块化方式将终端和数据中心设备集成到 TensorFlow 中的硬件制造商。

什么是 TFRT?

TFRT 是一款全新的 TensorFlow 运行时环境,将取代现有的 TensorFlow 运行时环境。TFRT 负责在目标硬件上以底层的设备特定原语实现内核的高效执行。其在即时执行和图执行模式中都发挥着关键作用,下面这张 TensorFlow 训练技术栈简化图就能说明这一点:

TFRT 在 TensorFlow 训练技术栈中的图执行和即时执行模式下的作用

请注意,以灰色显示的所有内容都属于 TFRT。在即时执行中,TensorFlow API 直接调用这一新运行时;在图执行中,程序的计算图转换为特定目标的专用程序,并分派给 TFRT。在两种执行路径中,新的运行时都会调用一组内核,这些内核将调用底层硬件设备完成模型执行,如黑色箭头所示。

关键设计点

现有 TensorFlow 的设计初衷是针对图执行和训练工作负载搭建,而新运行时则首要关注即时执行和推理,同时注重架构可扩展性和模块化。更具体地说,TFRT 已实现以下设计亮点:

  • 为提升性能,TFRT 配备无锁计算图执行器,支持并行操作执行,且同步开销较低。此外,其还配备一个轻量的即时算子分发栈,便于异步即时 API 调用和提高效率。
  • 为了更加轻松地扩展 TF 技术栈,我们已将设备运行时与主机运行时(即驱动主机 CPU 和 I/O 工作的核心 TFRT 组件)解耦。
  • 为确保行为一致,TFRT 在即时和图执行模式中均使用通用抽象,例如形状函数和内核。

MLIR 助力

TFRT 还与 MLIR 紧密集成。例如:

  • 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 分享给社区了。在初期,我们会限制添加内容,期待大家能以探讨需求和设计的方式参与进来。

视频:TFRT: 新的 TensorFlow 运行库 - TF Dev Summit '20

如需了解详情,请查看上面👆 的视频,这是我们首次在 2020 年开发者峰会上对 TFRT 的介绍 。
此外,您还可查看我们的 MLIR 开放设计深度教程 演示文稿Webinar 视频,打包 下载链接原始链接)。我们详细概述了 TFRT 核心组件、底层抽象和常规设计原则。最后,如果您希望及时了解有关 TFRT 的所有信息,请加入我们的 新邮件列表。谢谢!

image
原文:TFRT: A new TensorFlow runtime
中文发布:TensorFlow 公众号