Path: blob/master/site/zh-cn/federated/design/backend.md
25118 views
后端
[目录]
后端是用于构造、编译和执行 AST 的 Context 中的编译器和运行时的组合,这意味着后端构成了评估 AST 的环境。
后端软件包包含可以扩展 TFF 编译器和/或 TFF 运行时的后端;这些扩展可以在相应的后端中找到。
如果后端的运行时已实现为执行堆栈,那么后端可以构造一个 ExecutionContext 来为 TFF 提供评估 AST 的环境。在这种情况下,后端使用高级抽象与 TFF 集成。但是,如果运行时未实现为执行堆栈,后端将需要构造一个 Context 并使用低级抽象与 TFF 集成。
蓝色节点由 TFF 核心提供。
绿色、红色、黄色和紫色节点分别由原生、mapreduce 和参考后端提供。
虚线节点由外部系统提供。
实线箭头表示关系,虚线箭头表示继承。
原生
原生后端由 TFF 编译器和 TFF 运行时组成,以便以合理高效和可调试的方式编译和执行 AST。
原生形式
原生形式是一个 AST,它在拓扑上被分类为 TFF 内部函数的有向无环图 (DAG),并对这些内部函数的依赖项进行了一些优化。
编译器
compiler.transform_to_native_form 函数将 AST 编译为原生形式。
运行时
原生后端不包含对 TFF 运行时的后端特定扩展,而是可以直接使用执行堆栈。
上下文
原生上下文是使用原生编译器(或无编译器)和 TFF 运行时构造的 ExecutionContext,例如:
但是,有一些常见的配置:
execution_context.set_local_cpp_execution_context 函数使用原生编译器和本地执行堆栈构造 ExecutionContext
。
MapReduce
mapreduce 后端包含构造可以在类似 MapReduce 的运行时上执行的形式所需的数据结构和编译器。
MapReduceForm
forms.MapReduceForm 是一种数据结构,定义了可以在类似 MapReduce 的运行时上执行的逻辑表示。此逻辑被组织为 TensorFlow 函数的集合,有关这些函数的性质的更多信息,请参阅形式模块。
编译器
编译器模块包含将 AST 编译为 MapReduceForm 所需的构建块和 TensorFlow 计算转换。
form_utils 模块包含 MapReduce 后端的编译器并且会构造 MapReduceForm。
运行时
MapReduce 运行时不由 TFF 提供,而应由外部类似 MapReduce 的系统提供。
上下文
TFF 不提供 MapReduce 上下文。