https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjEwP7k7mM3L8q4tIwqNJSYw4TpNiNYr15ctGvyXozJD_cZW5-0YDCSg-dPMwN0jJeXoVN6xohn8M0jdnUprk-p6qWJrOY10-YX3CuokeJkhB5GQcOMtv_E4k5PBjyk3gfXz1fnZzKnVo/s1600/tfrtroleingraph.png
作者:Eric Johnson,TFRT 产品经理和 Mingsheng Hong,TFRT 技术主管/经理
TensorFlow 旨在简化您在多种不同设备上构建和部署 ML 模型的过程。然而,“构建和部署 ML 模型”的含义并非一成不变,随着对 ML 生态系统的投入不断增加,它也一直在不断变化。
在 TensorFlow 堆栈的上半部分,创新正在导致更复杂的模型和部署场景。研究人员正在发明
需要更多计算能力 的新算法,而应用程序开发人员则在
边缘 和服务器上使用这些新技术来改进其产品。
在堆栈的下半部分,由于
摩尔定律的终结 ,不断增长的计算需求和不断上升的计算成本之间的矛盾导致了针对特定 ML 用例的全新硬件的激增。包括
Google 在内的传统芯片制造商、初创公司和软件公司都投资了专用硅。
结果是,ML 生态系统的需求与 TensorFlow 首次创建时的 4 或 5 年前大不相同。当然,我们一直在随着
2.x 版本的发布 迭代,但当前的 TensorFlow 堆栈针对图执行进行了优化,在调度单个运算符时会产生不小的开销。高性能的低级运行时是实现当今趋势和推动未来创新的关键。
TFRT 应运而生,它是一个新的 **T**ensor**F**low **R**un**T**ime。它旨在提供一个统一且可扩展的基础设施层,在各种特定领域硬件上提供一流的性能。它可以高效地利用多线程主机 CPU,支持完全异步编程模型,并专注于低级效率。
TFRT 将使广泛的用户受益,包括
研究人员在渴望模式下开发复杂的全新模型时,希望能够更快地迭代并获得更好的错误报告。
应用程序开发人员希望在生产环境中训练和提供模型时提高性能。
硬件制造商希望以模块化方式将边缘和数据中心设备集成到 TensorFlow 中。
什么是 TFRT? TFRT 是一个新的运行时,它将取代现有的 TensorFlow 运行时。它负责在目标硬件上高效地执行内核(低级特定设备原语)。它在渴望执行和图执行中都起着至关重要的作用,这一点可以通过 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 的统一性、灵活性和可扩展性。
初始结果 来自推理和提供用例的早期性能结果令人鼓舞。作为
TensorFlow 开发者峰会 2020 基准研究的一部分,我们将 TFRT 与
TensorFlow Serving 集成,并测量了向模型发送请求并获取预测结果的延迟。我们选择了一个常见的
MLPerf 模型 ResNet-50,并选择了 1 的批次大小和 FP16 的数据精度,以便将我们的研究重点放在与运行时相关的运算符调度开销上。在将 TFRT 上的 GPU 推理性能与当前运行时进行比较时,我们发现平均推理时间提高了 28%。这些早期结果有力地验证了 TFRT,我们预计它将极大地提高性能。我们希望您和我们一样激动!
下一步 TFRT 正在与 TensorFlow 集成,并将通过一个选择加入标志来启用,这将为团队提供时间来修复任何错误并微调性能。最终,它将成为 TensorFlow 的默认运行时。尽管它仍然是一个早期阶段的项目,但我们已将
GitHub 存储库 提供给社区。我们目前限制了贡献,但鼓励以需求和设计讨论的形式参与。
要了解更多信息,请查看我们的
开发者峰会 2020 演示文稿 ,我们在那里首次向世界介绍了 TFRT,以及我们的
MLIR 开放设计深度解读演示文稿 ,我们在那里详细概述了 TFRT 的核心组件、低级抽象和一般设计原则。最后,如果您想了解所有关于 TFRT 的信息,请加入我们的
新邮件列表 。谢谢!
VIDEO