[目录]
后端是用于构造、编译和执行 AST 的 Context 中的编译器和运行时的组合,这意味着后端构成了评估 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 上下文。