【问题标题】:Is there a way for TFF clients to have internal states?TFF 客户有没有办法拥有内部状态?
【发布时间】:2020-08-20 05:39:16
【问题描述】:

我看到的 TFF 教程和研究项目中的代码通常只跟踪服务器状态。我希望存在会影响联合客户端计算的内部客户端状态(例如,完全分散且不以联合方式更新的额外客户端内部神经网络)。

然而,在我看到的客户端计算中,它们只是服务器状态和数据的函数。有没有可能做到以上几点?

【问题讨论】:

    标签: tensorflow-federated


    【解决方案1】:

    是的,这在 TFF 中很容易表达,并且可以在默认执行堆栈中正常执行。

    如您所见,TFF 存储库通常包含跨设备联合学习的示例 (Kairouz et. al 2019)。一般我们说的状态有tff.SERVER放置,一轮“联邦学习”的函数签名有结构(TFF的类型简写详见教程的Federated data部分):

    (<State@SERVER, {Dataset}@CLIENTS> -> State@Server)
    

    我们可以通过简单地扩展签名来表示有状态的客户端:

    (<State@SERVER, {State}@Clients, {Dataset}@CLIENTS> -> <State@Server, {State}@Clients>)
    

    实施包含客户端状态对象的联合平均 (McMahan et. al 2016) 版本可能类似于:

    @tff.tf_computation(
      model_type,
      client_state_type,  # additional state parameter
      client_data_type)
    def client_training_fn(model, state, dataset):
      model_update, new_state = # do some local training
      return model_update, new_state # return a tuple including updated state
    
    @tff.federated_computation(
      tff.FederatedType(server_state_type, tff.SERVER),
      tff.FederatedType(client_state_type , tff.CLIENTS),  # new parameter for state
      tff.FederatedType(client_data_type , tff.CIENTS))
    def run_fed_avg(server_state, client_states, client_datasets):
      client_initial_models = tff.federated_broadcast(server_state.model)
      client_updates, new_client_state = tff.federated_map(client_training_fn,
        # Pass the client states as an argument.
        (client_initial_models, client_states, client_datasets))
      average_update = tff.federated_mean(client_updates)
      new_server_state = tff.federated_map(server_update_fn, (server_state, average_update))
      # Make sure to return the client states so they can be used in later rounds.
      return new_server_state, new_client_states
    

    run_fed_avg 的调用需要为参与一轮的每个客户端传递张量/结构的 Python list,并且方法调用的结果将是服务器状态和客户端状态列表。

    【讨论】:

      猜你喜欢
      • 2020-04-15
      • 2021-11-15
      • 1970-01-01
      • 1970-01-01
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多