Path: blob/master/site/pt-br/federated/tutorials/federated_select.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
Enviando dados diferentes para determinados clientes com tff.federated_select
Este tutorial demonstra como implementar algoritmos federados no TFF que exigem o envio de dados diferentes para clientes diferentes. Talvez você já conheça tff.federated_broadcast
, que envia um único valor localizado no servidor a todos os clientes. O foco deste tutorial são os casos em que diferentes partes de um valor baseado no servidor são enviadas para clientes diferentes, o que pode ser útil para dividir partes de um modelo em diferentes clientes para evitar o envio de todo o modelo a um único cliente qualquer.
Vamos começar importando tensorflow
e tensorflow_federated
.
Envio de valores diferentes baseado nos dados dos clientes
Considere o caso em que temos uma lista localizada no servidor e que queremos enviar alguns elementos dela para cada cliente baseado em alguns dados localizados nos clientes. Por exemplo, uma lista de strings no servidor e, nos clientes, uma lista de índices separados por vírgula para baixar. Podemos implementar da seguinte forma:
Em seguida, podemos simular a computação fornecendo a lista de strings localizada no servidor bem como os dados de strings para cada cliente:
Envio de um elemento randomizado para cada cliente
Alternativamente, pode ser útil enviar uma parte aleatória dos dados do servidor para cada cliente. Podemos implementar primeiro gerando uma chave aleatória em cada cliente e depois seguindo um processo de seleção similar ao usado acima:
Como a função broadcast_random_element
não recebe dados localizados no cliente, precisamos configurar um número de clientes a serem usados no runtime de simulação do TFF:
Em seguida, podemos simular a seleção. Podemos alterar default_num_clients
acima e a lista de strings abaixo para gerar resultados diferentes, ou simplesmente executar de novo a computação para gerar saídas aleatórias diferentes.