后端

[目录]

后端是用于构造编译执行 ASTContext 中的编译器运行时的组合,这意味着后端构成了评估 AST 的环境。

后端软件包包含可以扩展 TFF 编译器和/或 TFF 运行时的后端;这些扩展可以在相应的后端中找到。

如果后端的运行时已实现为执行堆栈,那么后端可以构造一个 ExecutionContext 来为 TFF 提供评估 AST 的环境。在这种情况下,后端使用高级抽象与 TFF 集成。但是,如果运行时实现为执行堆栈,后端将需要构造一个 Context 并使用低级抽象与 TFF 集成。

<!--#include file="backend.dot"-->

蓝色节点由 TFF 核心提供。

绿色红色黄色紫色节点分别由原生mapreduce参考后端提供。

虚线节点由外部系统提供。

实线箭头表示关系,虚线箭头表示继承。

原生

原生后端由 TFF 编译器和 TFF 运行时组成,以便以合理高效和可调试的方式编译和执行 AST。

原生形式

原生形式是一个 AST,它在拓扑上被分类为 TFF 内部函数的有向无环图 (DAG),并对这些内部函数的依赖项进行了一些优化。

编译器

compiler.transform_to_native_form 函数将 AST 编译为原生形式

运行时

原生后端不包含对 TFF 运行时的后端特定扩展,而是可以直接使用执行堆栈

上下文

原生上下文是使用原生编译器(或无编译器)和 TFF 运行时构造的 ExecutionContext,例如:

executor = eager_tf_executor.EagerTFExecutor()
factory = executor_factory.create_executor_factory(lambda _: executor)
context = execution_context.ExecutionContext(
    executor_fn=factory,
    compiler_fn=None)
set_default_context.set_default_context(context)

但是,有一些常见的配置:

execution_context.set_local_python_execution_context 函数使用原生编译器和本地执行堆栈构造 ExecutionContext

MapReduce

mapreduce 后端包含构造可以在类似 MapReduce 的运行时上执行的形式所需的数据结构和编译器。

MapReduceForm

forms.MapReduceForm 是一种数据结构,定义了可以在类似 MapReduce 的运行时上执行的逻辑表示。此逻辑被组织为 TensorFlow 函数的集合,有关这些函数的性质的更多信息,请参阅形式模块。

编译器

编译器模块包含将 AST 编译为 MapReduceForm 所需的构建块TensorFlow 计算转换。

form_utils 模块包含 MapReduce 后端的编译器并且会构造 MapReduceForm

运行时

MapReduce 运行时不由 TFF 提供,而应由外部类似 MapReduce 的系统提供。

上下文

TFF 不提供 MapReduce 上下文。