gpt4 book ai didi

tensorflow-federated - TensorFlowFederated : Passing tensor to tff. 联合计算

转载 作者:行者123 更新时间:2023-12-04 01:14:45 26 4
gpt4 key购买 nike

我已经在我的单机上试用了 TFF 教程 (MNIST),现在我正在尝试使用 MNIST 数据执行多机过程。

显然,我不能使用 create_tf_dataset_for_client,所以我使用 GRPC 来学习如何将数据从一台机器传递到另一台机器。

我的场景是服务器将初始模型(带有零)分派(dispatch)给所有参与的客户端,模型将在本地数据上运行。每个客户端都会将新的权重分配给将执行 federated_mean 的服务器。

我正在考虑使用 tff.learning.build_federated_averaging_process,希望可以在其中自定义 next 函数(第二个参数),但我失败了……我什至不确定如果我们使用这种方法发送模型并从远程客户端取回权重。

然后我想我可以在 @tff.federated_computation 装饰器下使用 tff.federated_mean。但是,由于权重是数组并且我有它们的列表(因为我有很多客户),我无法理解如何创建指向该列表的 tff.FederatedType列出。任何在分布式数据集上建立联邦模型的人的帮助都将很容易理解。

问候,开发

最佳答案

TFF 计算被设计为与平台/运行时无关;单个计算可以由多个不同的后端执行。

TFF 的类型系统在这里可以帮助您推断数据在计算中的预期流动方式。查看custom federated algorithms part 1 tutorial了解 TFF 如何看待类型。

build_federated_averaging_process 的结果需要放置在客户端的数据集参数;对于元素类型为 T 的数据集,在 TFF 的常用符号中,这将表示为 {T*}@C。此签名具体与数据集如何到达客户端,或者客户端本身的表示方式无关。

具体化数据并代表客户实际上是运行时的工作。 TFF 提供了一些所谓的 native选项在这里。

例如,在本地 Python 运行时中,客户端由本地计算机上的线程表示。数据集只是急切的 tf.data.Dataset 对象,线程在训练期间从数据集中提取数据。

在远程 Python 运行时中,客户端由远程 worker (线程)表示,因此单个远程 worker 可以运行多个客户端。在这种情况下,正如您所指出的,数据必须在远程工作人员身上具体化才能进行训练。

有多种选择可以实现这一点。

第一,TFF 实际上会为您处理跨此 RPC 连接的热切数据集的序列化和反序列化,因此您可以像在本地运行时一样使用相同指定数据的模式,它应该“只是工作”。通过使用 tf.raw_ops.DatasetToGraphV2,这种模式实际上在 2021 年 3 月有了明显改善。

然而,也许更好地映射到联邦计算的概念是使用一些库函数来简单地在工作人员上实例化数据集

假设你有一个迭代过程ip,它接受一个statedata参数,其中data{T*}@C 类型。进一步假设我们有一个 TFF 计算 get_dataset_for_client_id,它接受一个字符串并返回一个适当类型的数据集(IE,它的 TFF 类型签名是 tf.str -> T*) .

然后我们可以将这两个计算组合成另一个:

@tff.federated_computation(STATE_TYPE, tff.FederatedType(tf.string, tff.CLIENTS))
def new_next(state, client_ids):
datasets_on_clients = tff.federated_map(get_dataset_for_client_id, client_ids)
return ip.next(state, datasets_on_clients)

new_next 现在要求 Controller 仅指定要训练的客户端的 id,并将指向数据存储的责任委托(delegate)给代表客户端的任何人。

我认为这种模式可能是您想要的; TFF 提供了一些帮助程序,例如 tff.simulation.ClientData 上的 dataset_computation 属性和 tff.simulation.compose_dataset_computation_with_iterative_process ,这将或多或少地执行我们上面为您所做的布线。

关于tensorflow-federated - TensorFlowFederated : Passing tensor to tff. 联合计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63723518/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com