Path: blob/master/site/pt-br/tfx/guide/build_local_pipeline.md
39484 views
Construindo um pipeline TFX localmente
O TFX facilita a orquestração do fluxo de trabalho de machine learning (ML) como um pipeline, para:
Automatizar seu processo de ML, o que permite treinar, avaliar e implantar regularmente seu modelo.
Criar pipelines de ML que incluem análise profunda do desempenho do modelo e validação de modelos recém-treinados para garantir desempenho e confiabilidade.
Monitorar dados de treinamento em busca de anomalias e eliminar desvios no fornecimento de treinamento
Aumentar a velocidade da experimentação executando um pipeline com diferentes conjuntos de hiperparâmetros.
Um processo típico de desenvolvimento de pipeline começa numa máquina local, com análise de dados e configuração de componentes, antes de ser implantado na produção. Este guia descreve duas maneiras de construir um pipeline localmente.
Personalizando um template de pipeline do TFX para atender às necessidades do seu workflows de ML. Os templates de pipeline do TFX são workflows pré-construídos que demonstram as práticas recomendadas usando os componentes padrão do TFX.
Criando um pipeline usando TFX. Neste caso de uso, você define um pipeline sem partir de um template.
Ao desenvolver seu pipeline, você poderá executá-lo com LocalDagRunner. Depois que os componentes do pipeline tiverem sido bem definidos e testados, você pode usar um orquestrador de nível de produção, como Kubeflow ou Airflow.
Antes de começar
O TFX é um pacote Python, então você precisará configurar um ambiente de desenvolvimento Python, como um ambiente virtual ou um container do Docker. Depois disso faça:
Se você é novato em pipelines TFX, aprenda mais sobre os principais conceitos dos pipelines TFX antes de continuar.
Crie um pipeline usando um template
Os templates de pipeline do TFX facilitam o início do desenvolvimento de um pipeline, fornecendo um conjunto pré-construído de definições de pipeline que você pode adaptar para seu caso de uso.
As seções a seguir descrevem como criar uma cópia de um template e personalizá-lo para atender às suas necessidades.
Crie uma cópia do template do pipeline
Veja a lista dos templates de pipeline TFX disponíveis:
tfx template listSelecione um template da lista
tfx template copy --model=<var>template</var> --pipeline_name=<var>pipeline-name</var> \ --destination_path=<var>destination-path</var>Substitua o seguinte:
template: O nome do template que você deseja copiar.
pipeline-name: o nome do pipeline a ser criado.
destination-path: o caminho para copiar o template.
Saiba mais sobre o comando
tfx template copy.Uma cópia do template de pipeline foi criada no caminho especificado.
Observação: O restante deste guia pressupõe que você selecionou o template penguin.
Explore o template do pipeline
Esta seção fornece uma visão geral da estrutura criada por um template.
Explore os diretórios e arquivos que foram copiados para o diretório raiz do seu pipeline
Um diretório pipeline com
pipeline.py– define o pipeline e lista quais componentes estão sendo usadosconfigs.py- contém detalhes de configuração, como de onde vêm os dados ou qual orquestrador está sendo usado
Um diretório data
Normalmente contém um arquivo
data.csv, que é a fonte padrão paraExampleGen. Você pode alterar a fonte de dados emconfigs.py.
Um diretório models com código de pré-processamento e implementações de modelo
O template copia executores DAG para ambiente local e Kubeflow.
Alguns template também incluem Notebooks Python para que você possa explorar seus dados e artefatos com metadados de aprendizado de máquina.
Execute os seguintes comandos no diretório do pipeline:
tfx pipeline create --pipeline_path local_runner.pytfx run create --pipeline_name <var>pipeline_name</var>O comando cria uma execução de pipeline usando
LocalDagRunner, que adiciona os seguintes diretórios ao pipeline:Um diretório tfx_metadata que contém o armazenamento ML Metadata usado localmente.
Um diretório tfx_pipeline_output que contém as saídas de arquivos do pipeline.
Observação:
LocalDagRunneré um dos vários orquestradores suportados no TFX. É especialmente adequado para executar pipelines localmente para iterações mais rápidas, possivelmente com datasets menores.LocalDagRunnerpode não ser adequado para uso em produção, pois é executado numa única máquina, o que é mais vulnerável à perda de trabalho se o sistema ficar indisponível. O TFX também oferece suporte a orquestradores como Apache Beam, Apache Airflow e Kubeflow Pipeline. Se você estiver usando o TFX com um orquestrador diferente, use o executor DAG apropriado para esse orquestrador.Observação: no momento em que este artigo foi escrito,
LocalDagRunnerera usado no templatepenguin, enquanto o templatetaxiusava Apache Beam. Os arquivos de configuração do templatetaxiestão configurados para usar o Beam e o comando CLI é o mesmo.Abra o arquivo
pipeline/configs.pydo seu pipeline e revise seu conteúdo. Este script define as opções de configuração usadas pelo pipeline e pelas funções do componente. É aqui que você especificaria coisas como a localização da fonte de dados ou o número de passos de treinamento numa execução.Abra o arquivo
pipeline/pipeline.pydo seu pipeline e revise seu conteúdo. Este script cria o pipeline do TFX. Inicialmente, o pipeline contém apenas um componenteExampleGen.Siga as instruções nos comentários TODO em
pipeline.pypara adicionar mais passos ao pipeline.
Abra o arquivo
local_runner.pye revise seu conteúdo. Este script cria uma execução de pipeline e especifica os parâmetros da execução, comodata_pathepreprocessing_fn.Você revisou a estrutura criado pelo template e criou uma execução de pipeline usando
LocalDagRunner. Em seguida, você precisa personalizar o template para atender às suas necessidades.
Personalize seu pipeline
Esta seção fornece uma visão geral de como começar a personalizar seu template.
Projete seu pipeline. A estrutura fornecida por um template ajuda a implementar um pipeline para dados tabulares usando os componentes padrão do TFX. Se você estiver migrando um workflow de ML existente para um pipeline, talvez seja necessário revisar seu código para aproveitar ao máximo os componentes padrão do TFX. Você também pode precisar criar componentes personalizados que implementem recursos exclusivos do seu workflow ou que ainda não sejam suportados pelos componentes padrão do TFX.
Depois de projetar seu pipeline, personalize-o iterativamente seguindo o processo a seguir. Comece pelo componente que consome dados no seu pipeline, que geralmente é o componente
ExampleGen.Personalize o pipeline ou um componente de acordo com seu caso de uso. Essas personalizações podem incluir alterações como:
Alteração de parâmetros do pipeline.
Adição de componentes ao pipeline ou sua remoção.
Substituição da fonte de dados de entrada. Essa fonte de dados pode ser um arquivo ou consultas em serviços como o BigQuery.
Alteração da configuração de um componente no pipeline.
Alteração da função de personalização de um componente.
Execute o componente localmente usando o script
local_runner.pyou outro executor DAG apropriado se você estiver usando um orquestrador diferente. Se o script falhar, depure a falha e tente executar o script novamente.Assim que essa personalização estiver funcionando, passe para a próxima personalização.
Trabalhando de forma iterativa, você poderá personalizar cada etapa do fluxo de trabalho do template para atender às suas necessidades.
Crie um pipeline personalizado
Use as instruções a seguir para saber mais sobre como criar um pipeline personalizado sem usar um template.
Projete seu pipeline. Os componentes padrão do TFX fornecem funcionalidade comprovada para ajudá-lo a implementar um workflow de ML completo. Se você estiver migrando um workflow de ML existente para um pipeline, talvez seja necessário revisar seu código para aproveitar ao máximo os componentes padrão do TFX. Também pode ser necessário criar componentes personalizados que implementem recursos como ampliação de dados.
Saiba mais sobre os componentes padrão do TFX.
Saiba mais sobre componentes personalizados.
Crie um arquivo de script para definir seu pipeline usando o exemplo a seguir. Este guia refere-se a este arquivo como
my_pipeline.py.import os from typing import Optional, Text, List from absl import logging from ml_metadata.proto import metadata_store_pb2 import tfx.v1 as tfxNos próximos passos, você definirá seu pipeline em
create_pipelinee executará seu pipeline localmente usando o executor local.Construa seu pipeline iterativamente usando o processo a seguir.
Personalize o pipeline ou um componente de acordo com seu caso de uso. Essas personalizações podem incluir alterações como:
Alteração de parâmetros do pipeline.
Adição de componentes ao pipeline ou sua remoção.
Substituição de um arquivo de entrada de dados.
Alteração da configuração de um componente no pipeline.
Alteração da função de personalização de um componente.
Execute o componente localmente usando o executor local ou executando o script diretamente. Se o script falhar, depure a falha e tente executar o script novamente.
Assim que essa personalização estiver funcionando, passe para a próxima personalização.
Comece no primeiro nó do workflow do seu pipeline, normalmente o primeiro nó consome dados para o seu pipeline.
Adicione o primeiro nó do workflow ao pipeline. Neste exemplo, o pipeline usa o componente padrão
ExampleGenpara carregar um CSV de um diretório em./data.from tfx.components import CsvExampleGenCsvExampleGencria registros de exemplo serializados usando os dados do CSV no caminho de dados especificado. Definindo o parâmetroinput_basedo componenteCsvExampleGencom a raiz de dados.Crie um diretório
datano mesmo diretório quemy_pipeline.py. Adicione um pequeno arquivo CSV ao diretóriodata.Use o seguinte comando para executar seu script
my_pipeline.py.python my_pipeline.pyO resultado deve ser algo similar ao mostrado abaixo:
INFO:absl:Component CsvExampleGen depends on []. INFO:absl:Component CsvExampleGen is scheduled. INFO:absl:Component CsvExampleGen is running. INFO:absl:Running driver for CsvExampleGen INFO:absl:MetadataStore with DB connection initialized INFO:absl:Running executor for CsvExampleGen INFO:absl:Generating examples. INFO:absl:Using 1 process(es) for Local pipeline execution. INFO:absl:Processing input csv data ./data/* to TFExample. WARNING:root:Couldn't find python-snappy so the implementation of _TFRecordUtil._masked_crc32c is not as fast as it could be. INFO:absl:Examples generated. INFO:absl:Running publisher for CsvExampleGen INFO:absl:MetadataStore with DB connection initialized INFO:absl:Component CsvExampleGen is finished.Continue a adicionar componentes iterativamente ao seu pipeline.