На языке TFF в настоящее время нет способа express этого. Контракт tff.federated_broadcast
заключается в том, что значение, которое приходит к каждому клиенту, равно то же самое . Не существует альтернативного способа связи c (пока) для других способов перемещения тензоров с сервера → клиентов.
При этом возможно моделировать клиентов, которые получают разные веса. Настройте состояние клиента за пределами TFF в среде выполнения Python, затем передайте список (по одному элементу для каждого клиента). Пример:
@tff.tf_computation(MODEL_WEIGHT_TYPE):
def client_work(model_weights):
# Do local training, or any other logic.
@tff.federated_computation(tff.FederatedType(MODEL_WEIGHT_TYPE, tff.CLIENTS))
def run_one_round(model):
return tff.federated_map(client_work, model)
client_models = [...] # a list of each client, possibly different models.
run_one_round(client_models)