Path: blob/master/site/pt-br/federated/program/guide.md
38387 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.