Path: blob/master/site/zh-cn/federated/program/federated_program.md
25118 views
联合程序
本文档适用于对联合程序概念的简要概览感兴趣的任何人。它假定您了解 TensorFlow Federated,尤其是其类型系统。
有关联合程序的更多信息,请参阅:
[目录]
什么是联合程序?
联合程序是在联合环境中执行计算和其他处理逻辑的程序。
更具体地说,是一种联合的程序:
执行计算
使用程序逻辑
使用平台特定的组件
并且可以具体化[平台存储空间](#platform storage)中的数据以:
在 Python 逻辑中使用
实现[容错](#fault tolerance)
以及将数据发布到[客户存储空间](#customer storage)
通过定义这些概念和抽象,可以描述联合程序各组件之间的关系,并允许这些组件由不同的角色拥有和创作。这种解耦允许开发者使用与其他联合程序共享的组件来创作联合程序,通常这意味着在许多不同的平台上执行相同的程序逻辑。
TFF 的联合程序库 (tff.program) 定义了创建联合程序所需的抽象,并且提供了与平台无关的组件。
组件
TFF 联合程序库的组件经过专门设计,可以由不同的角色拥有和创作。
注:这是组件的简要概览,请参阅 tff.program 了解特定 API 的文档。
程序
程序是一个 Python 二进制文件,它用于:
例如:
参数
参数是程序的输入,这些输入可由客户设置(如果它们作为标志公开),或者它们可由程序设置。在上面的示例中,output_dir
是客户设置的参数,total_rounds
和 num_clients
是程序设置的参数。
平台特定的组件
平台特定的组件是由实现 TFF 联合程序库定义的抽象接口的平台提供的组件。
与平台无关的组件
与平台无关的组件是由实现 TFF 联合程序库定义的抽象接口的库(例如 TFF)提供的组件。
计算
计算是抽象接口 tff.Computation
的实现。
例如,在 TFF 平台中,您可以使用 tff.tf_computation
或 tff.federated_computation
装饰器来创建 tff.framework.ConcreteComputation
:
如需了解详情,请参阅计算的生命。
程序逻辑
程序逻辑是一个 Python 函数,它可用作输入:
并执行一些运算,通常包括:
并可能产生一些输出,通常包括:
例如:
角色
讨论联合程序时,有三个角色需要定义:客户、平台和库。每个角色都拥有并创作一些用于创建联合程序的组件。但是,单个实体或组可以担当多个角色。
客户
客户通常:
但可能:
平台
平台通常:
但可能:
库
库通常:
概念
在讨论联合程序时,有一些概念需要定义。
客户存储
客户存储是客户具有读写访问权限且平台具有写入访问权限的存储。
平台存储空间
平台存储空间是只有平台具有读写访问权限的存储空间。
发布
发布一个值可使该值供客户存储空间使用(例如,将值发布到信息中心、记录值或将值写入磁盘)。
具体化
具体化一个值引用会使引用的值可供程序使用。通常需要具体化值引用来发布该值或使程序逻辑具有容错能力。
容错
容错是程序逻辑在执行计算时从错误中恢复的能力。例如,如果成功训练了 100 个轮次中的前 90 个轮次,随后遇到错误,那么程序逻辑能否从第 91 个轮次开始恢复训练,或者是否需要在第 1 个轮次重新开始训练?