Path: blob/master/site/es-419/federated/program/guide.md
25118 views
Guía para el desarrollador de programas federados
Esta documentación es para cualquier persona que esté interesada en escribir lógica de programación federada o un programa federado. Se da por supuesto un conocimiento previo de TensorFlow federado, de su sistema de tipo y de los programas federados.
[TOC]
Lógica de programación
En esta sección se definen las pautas sobre cómo se debería escribir la lógica de programación.
Para más información, consulte el ejemplo program_logic.py.
Documentación de firmas de tipo
Documente la firma de tipo de TFF para cada parámetro provisto a la lógica de programación que tenga una firma de tipo.
Control de las firmas de tipo
Controle la firma de tipo de TFF (en tiempo de ejecución) para cada parámetro provisto a la lógica de programación que tenga una firma de tipo.
Anotaciones de tipo
Proporcione un tipo de Python bien definido para cada parámetro tff.program.ReleaseManager
provisto a la lógica de programación.
No
Estado del programa
Proporcione una estructura bien definida que describa el estado (estado del programa) de la lógica de programación.
Documentación de los valores emitidos
Documente los valores emitidos por la lógica de programación.
Emisión de los valores específicos
No emita más valores de la lógica de programación, de los que se requieran.
No
Nota: Es correcto emitir todos los valores, si es lo que se requiere.
Funciones asincrónicas
Defina la lógica de programación como una función asincrónica. Los componentes de la biblioteca de programas federados de TFF usan asyncio para ejecutar Python en simultáneo y la definición de la lógica de programación como una función asincrónica facilita la interacción con esos componentes.
No
Pruebas
Proporcione pruebas de unidades para la lógica de programación (p. ej., program_logic_test.py).
Programa
En esta sección se definen las pautas sobre cómo se debería escribir un programa.
Para más información, consulte el ejemplo program.py.
Documentación del programa
Documente los detalles del programa para el cliente en el docstring del módulo (p. ej., program.py):
Cómo ejecutar el programa manualmente.
Qué plataforma, cálculos y fuentes de datos se usan en el programa.
Qué debería hacer un cliente para acceder a la información emitida desde el programa al almacenamiento del cliente.
Demasiados parámetros
No parametrice el programa de modo tal que haya muchas colecciones mutuamente excluyentes de parámetros. Por ejemplo, si foo
se establece como X
, entonces, también hay que establecer parámetros para bar
, baz
, de lo contrario estos parámetros deben ser None
. Esto indica que se podrían haber hecho dos programas diferentes para distintos valores de foo
.
Parámetros grupales
Use proto para definir parámetros relacionados pero complejos o verbosos en vez de definir muchas FLAGS (go/absl.flags).
Nota: Proto se puede leer del disco y se puede usar para construir objetos de Python, por ejemplo:
Lógica de Python
No escriba cálculos de lógica (p. ej., control de flujo, cálculos para invocar o cualquier cosa que deba ser probada) en el programa. En cambio, mueva la lógica a una biblioteca privada de la que se puedan hacer pruebas o muévala a la lógica del programa que el mismo programa invoque.
Funciones asincrónicas
No escriba funciones asincrónicas en el programa. En cambio, mueva la función a una biblioteca privada de la que se puedan hacer pruebas o muévala a la lógica del programa que el mismo programa invoque.
Pruebas
No escriba pruebas de unidad para el programa, si hacerle pruebas al programa le resulta útil, escriba esas pruebas en términos de pruebas de integración.
Nota: Debería ser poco probable que probar el programa fuera útil, si las funciones de asincronía y lógica de Python se mueven a bibliotecas y se les realizan pruebas.