Path: blob/master/site/pt-br/federated/program/guide.md
25118 views
Guia de Desenvolvimento de Programa Federado
Este documento é destinado a todos que tiverem interesse em criar lógica de programa federado ou um programa federado. Pressupõem-se conhecimentos do TensorFlow Federated, principalmente o sistema de tipos, e programas federados.
[TOC]
Lógica do programa
Esta seção define as diretrizes de como a lógica do programa deve ser criada.
Confira mais informações no exemplo program_logic.py.
Documente assinaturas de tipo
Documente a assinatura de tipo do TFF para cada parâmetro fornecido à lógica do programa que tenha um assinatura de tipo.
Faça a checagem de assinaturas de tipo
Faça a checagem da assinatura de tipo do TFF (em tempo de execução) para cada parâmetro fornecido à lógica do programa que tenha um assinatura de tipo.
Anotações de tipo
Forneça um tipo Python bem definido para cada parâmetro de tff.program.ReleaseManager
fornecido à lógica do programa.
Não faça isto:
Estado do programa
Forneça uma estrutura bem definida que descreva o estado do programa referente à lógica do programa.
Documente os valores liberados
Documente os valores liberados pela lógica do programa.
Libere valores específicos
Não libere mais valores da lógica do programa do que o necessário.
Não faça isto:
Observação: não tem problema liberar todos os valores, desde que isso seja necessário.
Funções assíncronas
Defina a lógica do programa como uma função assíncrona. Os componentes da biblioteca de programa federado do TFF usam asyncio para executar o Python de maneira simultânea, e definir a lógica do programa como uma função assíncrona facilita a interação com esses componentes.
Não faça isto:
Testes
Forneça testes de unidade à lógica do programa (por exemplo, program_logic_test.py).
Programa
Esta seção define as diretrizes de como um programa deve ser criado.
Confira mais informações no exemplo program.py.
Documente o programa
Documente os detalhes do programa para o cliente na docstring do módulo (por exemplo, program.py):
Como executar o programa manualmente
Que plataformas, computações e fontes de dados são usados no programa.
Como um cliente deve acessar as informações liberadas pelo programa para o armazenamento do cliente.
Parâmetros demais
Não parametrize o programa de tal forma que haja conjuntos de parâmetros mutuamente excludentes. Por exemplo, se foo
for definido como X
, então você também precisa definir os parâmetros bar
, baz
; caso contrário, esses parâmetros devem ser None
(Nenhum). Isso indica que você pode ter dois programas diferentes para valores diferentes de foo
.
Agrupe parâmetros
Use proto para definir parâmetros relacionados, mas complexos ou detalhados, em vez de definir muitos SINALIZADORES (go/absl.flags).
Observação: proto pode ser lido no disco e usado para construir objetos Python. Por exemplo:
Lógica do Python
Não escreva lógica (por exemplo, fluxo de controle, invocação de computações, qualquer coisa que precise ser testada) no programa. Em vez disso, mova a lógica para uma biblioteca privada que possa ser testada ou para a lógica do programa que o programa invoca.
Funções assíncronas
Não escreva funções assíncronas no programa. Em vez disso, mova a função para uma biblioteca privada que possa ser testada ou para a lógica do programa que o programa invoca.
Testes
Não escreva testes de unidade para o programa. Se testar o programa for útil, escreva testes de integração.
Observação: é improvável que testar o programa seja útil se a lógica do Python e as funções assíncronas forem movidas para bibliotecas e testadas.