Envio de dados diferentes para clientes específicos com tff.federated_select | TensorFlow Federated
Envio de dados diferentes para clientes específicos com tff.federated_select
Este tutorial demonstra como implementar algoritmos federados customizados no TFF que requerem o envio de dados diferentes para clientes diferentes. Você pode já estar familiarizado com tff.federated_broadcast que envia um único valor colocado em servidor para todos os clientes. Este tutorial se concentra em casos em que diferentes partes de um valor baseado em servidor são enviadas para clientes diferentes. Isso pode ser útil para dividir partes de um modelo em diferentes clientes, a fim de evitar o envio de todo o modelo a um único cliente.
Vamos começar importando tanto tensorflow e tensorflow_federated .
Envio de valores diferentes com base nos dados do cliente
Considere o caso em que temos alguma lista colocada no servidor da qual queremos enviar alguns elementos para cada cliente com base em alguns dados colocados no cliente. Por exemplo, uma lista de strings no servidor e nos clientes, uma lista separada por vírgulas de índices para download. Podemos implementar isso da seguinte maneira:
Em seguida, podemos simular nosso cálculo, fornecendo a lista de strings colocada no servidor, bem como dados de string para cada cliente:
Envio de um elemento aleatório para cada cliente
Como alternativa, pode ser útil enviar uma parte aleatória dos dados do servidor para cada cliente. Podemos implementar isso gerando primeiro uma chave aleatória em cada cliente e, em seguida, seguindo um processo de seleção semelhante ao usado acima:
Desde a nossa broadcast_random_element função não tomar quaisquer dados colocados no cliente, temos que configurar o TFF Simulação Runtime com um número padrão de clientes para usar:
Então podemos simular a seleção. Nós podemos mudar default_num_clients acima e a lista de strings abaixo para gerar resultados diferentes, ou simplesmente re-executar a computação para gerar diferentes saídas aleatórias.