tensorflow-federated - Tensorflow federated:如何将远程工作人员与 iterative_process.next 中的远程数据集映射?
问题描述
我想将 federated_train_data 指向远程客户端数据,如下面的代码所示。这可能吗?如何 ?
如果不是我需要进一步实施来尝试这个。请指出我的相关代码。
factory = tff.framework.create_executor_factory(make_remote_executor)
context = tff.framework.ExecutionContext(factory)
tff.framework.set_default_context(context)
state = iterative_process.initialize()
state, metrics = iterative_process.next(state, federated_train_data)
def make_remote_executor(inferred_cardinalities):
"""Make remote executor."""
def create_worker_stack(ex):
ex = tff.framework.ThreadDelegatingExecutor(ex)
return tff.framework.ReferenceResolvingExecutor(ex)
client_ex = []
num_clients = inferred_cardinalities.get(tff.CLIENTS, None)
if num_clients:
print('Inferred that there are {} clients'.format(num_clients))
else:
print('No CLIENTS placement provided')
for _ in range(num_clients or 0):
channel = grpc.insecure_channel('{}:{}'.format(FLAGS.host, FLAGS.port))
remote_ex = tff.framework.RemoteExecutor(channel, rpc_mode='STREAMING')
worker_stack = create_worker_stack(remote_ex)
client_ex.append(worker_stack)
federating_strategy_factory = tff.framework.FederatedResolvingStrategy.factory(
{
tff.SERVER: create_worker_stack(tff.framework.EagerTFExecutor()),
tff.CLIENTS: client_ex,
})
unplaced_ex = create_worker_stack(tff.framework.EagerTFExecutor())
federating_ex = tff.framework.FederatingExecutor(federating_strategy_factory,
unplaced_ex)
return tff.framework.ReferenceResolvingExecutor(federating_ex)
解决方案
在链接的示例中,您可以看到客户端数据来自函数tf.data.Dataset
生成的每个客户端。make_federated data
客户端数据可以以可序列化的形式提供,tf.data.Dataset
或者根据您定义迭代过程的方式,您可以tff.federated_map
使用 TensorFlow 将一些输入数据(例如客户端 ID)输入数据集。
请注意,RemoteExecutors 并非旨在针对“客户端”上的数据运行,即远程执行器本身。或许可以使用 TensorFlow 代码以这种方式将数据从远程执行程序的文件系统读取到数据集中,但通常这不是受支持的用例。tf.data.Dataset
处理客户端数据的推荐方法是使用 TensorFlow 计算,该计算可以基于客户端 ID 或客户端 TensorFlow 计算的其他输入生成表示客户端数据的表示。
推荐阅读
- python - 多个 DataFrame 到 Excel
- python - 想使用 selenium-wedriver 从站点中提取数据
- .net - .net framework 4.8 和 dotnet 5 之间的 WebRequest 行为不同
- postgresql - PostgreSQL:布尔列验证条件是否为真
- javascript - 在按钮单击 javascript 上发生 2 个操作
- azure-ad-b2c - 如何向 Azure B2C REST 调用添加其他标头信息?
- javascript - 带有异常的 Javascript substr
- r - ggplot2中的半正态图残差图
- javascript - 使用 forEach 和 map 进行迭代时,数组值会发生突变
- javascript - 在javascript中使用对象默认值初始化一个数组