Path: blob/master/site/es-419/federated/tutorials/federated_select.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
Envío de datos diferentes a clientes particulares con tff.federated_select
Este tutorial demuestra cómo implementar algoritmos federados personalizados en TFF que requieren el envío de diferentes datos a diferentes clientes. Quizá ya esté familiarizado con tff.federated_broadcast
, que envía un único valor colocado en el servidor a todos los clientes. Este tutorial se centra en casos en los que se envían diferentes partes de un valor basado en servidor a diferentes clientes. Esto puede resultar útil para dividir partes de un modelo entre diferentes clientes para evitar el envío del modelo completo a un solo cliente.
Para empezar, importemos tensorflow
y tensorflow_federated
.
Envío de diferentes valores según los datos del cliente
Pensemos en el caso de que tengamos una lista colocada en el servidor desde la cual queremos enviar algunos elementos a cada cliente en función de algunos datos colocados por el cliente. Por ejemplo, una lista de cadenas en el servidor y, en los clientes, una lista separada por comas de índices para descargar. Podemos implementar eso de la siguiente manera:
Luego podemos simular nuestro cálculo proporcionando la lista de cadenas colocadas en el servidor, así como datos de cadena para cada cliente:
Envío de un elemento aleatorio a cada cliente
Como alternativa, quizás sea útil enviar una parte aleatoria de los datos del servidor a cada cliente. Podemos implementar esto si generamos primero una clave aleatoria en cada cliente y luego seguimos un proceso de selección similar al que usamos anteriormente:
Dado que nuestra función broadcast_random_element
no acepta ningún dato colocado por el cliente, tenemos que configurar el tiempo de ejecución de simulación TFF con una cantidad predeterminada de clientes para usar:
Luego, podemos simular la selección. Podemos cambiar default_num_clients
(arriba) y la lista de cadenas a continuación para generar resultados diferentes, o simplemente volver a ejecutar el cálculo para generar diferentes salidas aleatorias.