perguntas frequentes

O TensorFlow Federated pode ser usado em ambientes de produção, por exemplo, em telefones celulares?

Atualmente não. Embora tenhamos projetado o TFF com a implantação em dispositivos reais em mente, neste estágio não fornecemos nenhuma ferramenta para essa finalidade. A versão atual destina-se a usos de experimentação, como expressar novos algoritmos federados ou experimentar aprendizado federado com seus próprios conjuntos de dados, usando o tempo de execução de simulação incluído.

Prevemos que, com o tempo, o ecossistema de código aberto em torno do TFF evoluirá para incluir tempos de execução direcionados a plataformas de implantação física.

Como uso o TFF para experimentos com grandes conjuntos de dados?

O tempo de execução padrão incluído na versão inicial do TFF destina-se apenas a pequenos experimentos, como os descritos em nossos tutoriais, nos quais todos os seus dados (em todos os clientes simulados) cabem simultaneamente na memória em uma única máquina e todo o experimento é executado localmente dentro do notebook colab.

Nosso roteiro futuro de curto prazo inclui um tempo de execução de alto desempenho para experimentos com conjuntos de dados muito grandes e um grande número de clientes.

Como posso garantir que a aleatoriedade no TFF corresponda às minhas expectativas?

Como o TFF tem computação federada incorporada em seu núcleo, o redator do TFF não deve assumir o controle sobre onde e como as sessões do Session são inseridas ou a run é chamada nessas sessões. A semântica da aleatoriedade pode depender da entrada e saída das sessões do Session se as sementes estiverem definidas. Recomendamos usar a aleatoriedade no estilo TensorFlow 2, usando, por exemplo, tf.random.experimental.Generator partir do TF 1.14. Isso usa um tf.Variable para gerenciar seu estado interno.

Para ajudar a gerenciar as expectativas, o TFF permite que o TensorFlow serializado tenha sementes de nível operacional definidas, mas não sementes de nível de gráfico. Isso ocorre porque a semântica das sementes de nível operacional deve ser mais clara na configuração do TFF: uma sequência determinística será gerada a cada chamada de uma função envolvida como tf_computation , e somente dentro dessa invocação as garantias feitas pelo gerador de números pseudoaleatórios serão mantidas . Observe que isso não é exatamente o mesmo que a semântica de chamar um tf.function no modo ansioso; O TFF efetivamente entra e sai de uma tf.Session única cada vez que a tf_computation é invocada, enquanto chamar repetidamente uma função no modo ansioso é análogo a chamar sess.run no tensor de saída repetidamente dentro da mesma sessão.

Como posso contribuir?

Consulte o README , diretrizes de contribuição e colaborações .

Qual é a relação entre o FedJAX e o TensorFlow Federated?

O TensorFlow Federated (TFF) é uma estrutura completa para aprendizagem e análise federada projetada para facilitar a composição de diferentes algoritmos e recursos e permitir a portabilidade de código em diferentes cenários de simulação e implantação. O TFF fornece um tempo de execução escalável e oferece suporte a muitos algoritmos de privacidade, compactação e otimização por meio de suas APIs padrão. O TFF também oferece suporte a muitos tipos de pesquisa de FL , com uma coleção de exemplos de artigos publicados do Google que aparecem no repositório de pesquisa do google .

Em contraste, o FedJAX é uma biblioteca de simulação leve baseada em Python e JAX que se concentra na facilidade de uso e na prototipagem rápida de algoritmos de aprendizado federado para fins de pesquisa. O TensorFlow Federated e o FedJAX são desenvolvidos como projetos separados, sem expectativa de portabilidade de código.