如何使用 TFF api 进行自定义使用?

How to use TFF api's for custom usage?

我已经仔细阅读和研究了 TFF guide and APIs 页。但我在一些细节部分感到困惑。

比如我想wrap/decorate一个TF/python函数,就用下面这两个API :

1. tff.tf_computation()
2. tff.federated_computation()

我找不到它们之间的区别以及何时可以使用它们。特别是,如果我想使用 FedAvgFedSgd 以外的其他算法。不知你知不知道:

  1. 如何使用它们来操纵输入?他们在 @CLIENT@SERVER 上工作吗?
  2. 除了 tff.federated_meantff.federated_sum 的输出值将在服务器中之外,我如何在其他用途​​中使用它们?
  3. 我如何能够访问 @CLIENT@SERVER?[=48= 中的数据和指标的详细信息]
  4. 为什么我们应该从 tff.federated_computation() 调用 tff.tf_computation()?在此中,没有对它们进行任何解释。
  5. 这些 API(例如 tff.federated_meantff.federated_sum)是否修改每个@CLIENT 的输出元素并将它们带到@SERVER?

谁能帮我理解这个概念背后的直觉?

关于不同函数装饰器的可能经验法则:

  • tff.tf_computation用于包装TF逻辑。想想"tensors in, tensors out":这应该和tf.function的用法很相似,其中参数和return值都是张量,或者张量的嵌套结构. TFF intrinsics(例如 tff.federated_mean)不能在 tff.tf_computation 内部使用,并且 tff.tf_computations 不能调用 tff.federated_computations。类型签名始终处于未放置状态。

  • tff.federated_computation 应该用于包装 TFF 编程抽象。想想 "tensors here, tensors there":在这个上下文中,tff.tf_computation 可以应用于 tff.Values 并且 tff.Values 可以传达给其他展示位置使用 内部函数 。类型签名可以接受联合类型(即具有放置的类型)。

您的问题列表:

  1. 两者都可以处理位于 CLIENTSSERVER 的值。例如,名为 my_comptff.tf_computation 可以应用于类型为 int32@CLIENTStff.federated_map(my_comp, v) 的值 v,这将 运行 my_comp 在每个客户端上。
  2. tff.federated_map() supports applying a computation pointwise (across clients) to data not on the server. You can manipulate the metrics on each client using tff.federated_map. TFF isn't intended for separate options on different clients; the abstractions do not support addressing individuals. You may be able to simulate this in Python, see .
  3. 可以在模拟中检查放置数据的值,只需从 tff.Computation 中 return 调用它们并调用该计算即可。这些值应该在 Python 环境中可用。
  4. tff.tf_computations 应该可以从任何地方调用,如果有文档另有说明,请指出它。我相信要强调的是 tff.federated_computation 可能会调用 tff.tf_computation,但 反之亦然
  5. 教程 (Federated Learning for Image Classification and Federated Learning for Text Generation) show examples of printing out the metrics in simulation. You may also be interested in the answer to how to print local outputs in tensorflow federated?
  6. tff.tf_computations 如果需要,应该直接执行。这将避免 TFF 的任何 federated 部分,并简单地委托给 TensorFlow。要将计算应用于联合值并与联合内在函数结合使用,必须在 tff.federated_computation.
  7. 中调用它们