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 pensando na implantação em dispositivos reais, neste estágio não fornecemos nenhuma ferramenta para essa finalidade. A versão atual destina-se a usos experimentais, 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 fazer 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 aqueles descritos em nossos tutoriais, nos quais todos os seus dados (em todos os clientes simulados) cabem simultaneamente na memória de uma única máquina e todo o experimento é executado localmente. dentro do caderno 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 grandes números de clientes.

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

Como o TFF tem computação federada integrada em seu núcleo, o autor do TFF não deve assumir o controle sobre onde e como Session do TensorFlow são inseridas ou run é chamada nessas sessões. A semântica da aleatoriedade pode depender da entrada e saída das Session do TensorFlow se as sementes forem definidas. Recomendamos usar a radomidade no estilo TensorFlow 2, usando, por exemplo tf.random.experimental.Generator a 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 que ele serializa 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 TFF: uma sequência determinística será gerada em cada invocação de uma função envolvida como tf_computation , e somente dentro desta invocação quaisquer garantias feitas pelo gerador de números pseudoaleatórios serão válidas . Observe que isso não é exatamente o mesmo que a semântica de chamar uma tf.function no modo ansioso; O TFF efetivamente entra e sai de um tf.Session exclusivo cada vez que o tf_computation é invocado, 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?

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

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

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

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