Path: blob/master/site/pt-br/tfx/guide/build_tfx_pipeline.md
25118 views
Construindo pipelines TFX
Observação: para uma visão conceitual dos pipelines do TFX, consulte Noções básicas sobre pipelines do TFX.
Observação: quer construir seu primeiro pipeline antes de se aprofundar nos detalhes? Comece com criando um pipeline usando um template.
Usando a classe Pipeline
Os pipelines do TFX são definidos usando a classe Pipeline
{: .external }. O exemplo a seguir demonstra como usar a classe Pipeline
.
pipeline.Pipeline( pipeline_name=<var>pipeline-name</var>, pipeline_root=<var>pipeline-root</var>, components=<var>components</var>, enable_cache=<var>enable-cache</var>, metadata_connection_config=<var>metadata-connection-config</var>, )
Substitua o seguinte:
pipeline-name: o nome deste pipeline. O nome do pipeline deve ser único.
O TFX usa o nome do pipeline ao consultar o ML Metadata para artefatos de componentes de entrada. Reusar o nome de um pipeline pode resultar em comportamentos inesperados.
pipeline-root: o caminho raiz das saídas deste pipeline. O caminho raiz deve ser o caminho completo para um diretório ao qual seu orquestrador tenha acesso de leitura e gravação. Em tempo de execução, o TFX usa a raiz do pipeline para gerar caminhos de saída para artefatos de componentes. Esse diretório pode ser local ou num sistema de arquivos distribuído compatível, como Google Cloud Storage ou HDFS.
components: uma lista de instâncias de componentes que compõem o workflow deste pipeline.
enable-cache: (opcional.) Um valor booleano que indica se este pipeline usa cache para acelerar a execução do pipeline.
metadata-connection-config: (Optional.) A connection configuration for ML Metadata.
Definindo o grafo de execução do componente
As instâncias de componentes produzem artefatos como saídas e normalmente dependem de artefatos produzidos por instâncias de componentes upstream como entradas. A sequência de execução para instâncias de componentes é determinada pela criação de um grafo acíclico direcionado (DAG) das dependências do artefato.
Por exemplo, o componente padrão ExampleGen
pode consumir dados de um arquivo CSV e gerar registros de exemplo serializados. O componente padrão StatisticsGen
aceita esses registros de exemplo como entrada e produz estatísticas do dataset. Neste exemplo, a instância de StatisticsGen
deve seguir ExampleGen
porque SchemaGen
depende da saída de ExampleGen
.
Dependências baseadas em tarefas
Observação: Normalmente não é recomendado usar dependências baseadas em tarefas. Definir o grafo de execução com dependências de artefato permite aproveitar as vantagens do rastreamento automático de linhagem de artefatos e dos recursos de cache do TFX.
Você também pode definir dependências baseadas em tarefas usando os métodos add_upstream_node
e add_downstream_node
{: .external } do seu componente. add_upstream_node
permite especificar que o componente atual deve ser executado após o componente especificado. add_downstream_node
permite especificar que o componente atual deve ser executado antes do componente especificado.
Templates de pipeline
A maneira mais fácil de configurar um pipeline rapidamente e ver como todas as peças se encaixam é usar um template. O uso de templates é abordado em Construindo um pipeline TFX localmente.
Caching
O cache do pipeline TFX permite que seu pipeline ignore componentes que foram executados com o mesmo conjunto de entradas numa execução anterior do pipeline. Se o cache estiver habilitado, o pipeline tentará corresponder a assinatura de cada componente, o componente em si e o conjunto de entradas, com uma das execuções anteriores do componente desse pipeline. Se houver uma correspondência, o pipeline usará as saídas do componente da execução anterior. Se não houver correspondência, o componente é executado.
Não use caches se o pipeline usar componentes não determinísticos. Por exemplo, se você criar um componente para produzir um número aleatório para seu pipeline, ativar o cache fará com que esse componente seja executado uma vez. Neste exemplo, as execuções subsequentes reusam o número aleatório da primeira execução em vez de gerar um número aleatório novo.