Desdobramento, desenvolvimento

Além de definir cálculos, o TFF fornece ferramentas para executá-los. Considerando que o foco principal são as simulações, as interfaces e ferramentas que oferecemos são mais gerais. Este documento descreve as opções de implantação em vários tipos de plataforma.

Visão geral

Existem dois modos principais de implantação para cálculos TFF:

  • Backends nativa. Nós estamos indo para se referir a um backend como nativo se for capaz de interpretar a estrutura sintática de computações TFF conforme definido no computation.proto . Um back-end nativo não precisa necessariamente suportar todas as construções ou intrínsecos de linguagem. Backends nativas deve implementar uma das interfaces padrão TFF executor, como tff.framework.Executor para consumo por código Python, ou a versão independente de linguagem dele definidos no executor.proto exposto como um endpoint gRPC.

    Back-ends nativos que suportam as interfaces acima podem ser usados ​​interativamente em vez do tempo de execução de referência padrão, por exemplo, para executar notebooks ou scripts de experimentos. A maioria dos backends nativos irá operar no modo interpretado, isto é, eles vão processar a definição de computação como é definido, e executá-lo de forma incremental, mas isso nem sempre tem que ser o caso. A infra-estrutura nativa também pode transformar (compilação, ou JIT-compilação) uma parte da computação para melhor desempenho, ou para simplificar a sua estrutura. Um exemplo de uso comum disso seria reduzir o conjunto de operadores federados que aparecem em um cálculo, de forma que partes do dowstream de back-end da transformação não precisem ser expostas ao conjunto completo.

  • Backends não-nativos. Infra- estruturas não-nativo, em contraste com os nativos, não é possível interpretar directamente a estrutura de computação da TFF, e obrigá-la a ser convertido em uma representação alvo diferente compreendido pela infra-estrutura. Um exemplo notável de tal back-end seria um cluster Hadoop ou uma plataforma semelhante para pipelines de dados estáticos. Para que uma computação a ser implantado para tal uma infra-estrutura, ele deve primeiro ser transformado (ou compilada). Dependendo da configuração, isso pode ser feito de forma transparente para o utilizador (ou seja, uma parte posterior não nativo pode ser envolto em um executor padrão de interface, tais como tff.framework.Executor que executa transformações sob a capa), ou pode ser exposta como uma ferramenta que permite ao usuário converter manualmente um cálculo, ou um conjunto de cálculos, na representação de destino apropriada entendida pela classe particular de back-ends. Código que tipos de apoios específicos de backends não-nativas podem ser encontradas no tff.backends namespace. No momento em que este artigo foi escrito, o único tipo de suporte de back-ends não nativos é uma classe de sistemas capaz de executar MapReduce de rodada única.

Back-ends nativos

Mais detalhes em breve.

Back-ends não nativos

MapReduce

Mais detalhes em breve.