Tutorial de fluxo de ar TFX

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

PitãoPyPI

Introdução

Este tutorial foi desenvolvido para apresentar o TensorFlow Extended (TFX) e ajudar você a aprender a criar seus próprios pipelines de machine learning. Ele é executado localmente e mostra integração com TFX e TensorBoard, bem como interação com TFX em notebooks Jupyter.

Você seguirá um processo típico de desenvolvimento de ML, começando examinando o conjunto de dados e terminando com um pipeline de trabalho completo. Ao longo do caminho, você explorará maneiras de depurar e atualizar seu pipeline e medir o desempenho.

Saber mais

Consulte o Guia do usuário do TFX para saber mais.

Passo a passo

Você criará gradualmente seu pipeline trabalhando passo a passo, seguindo um processo típico de desenvolvimento de ML. Aqui estão os passos:

  1. Configure seu ambiente
  2. Exiba o esqueleto inicial do pipeline
  3. Mergulhe em seus dados
  4. Engenharia de recursos
  5. Treinamento
  6. Analisando o desempenho do modelo
  7. Pronto para produção

Pré-requisitos

  • Linux/Mac OS
  • Virtualenv
  • Python 3.5+
  • Git

Pacotes obrigatórios

Dependendo do seu ambiente, pode ser necessário instalar vários pacotes:

sudo apt-get install \
    build-essential libssl-dev libffi-dev \
    libxml2-dev libxslt1-dev zlib1g-dev \
    python3-pip git software-properties-common

Se você estiver executando o Python 3.6, instale o python3.6-dev:

sudo apt-get install python3.6-dev

Se você estiver executando o Python 3.7, instale o python3.7-dev:

sudo apt-get install python3.7-dev

Além disso, se o seu sistema tiver uma versão do GCC < 7, você deve atualizar o GCC. Caso contrário, você verá erros ao executar o airflow webserver . Você pode verificar sua versão atual com:

gcc --version

Se você precisar atualizar o GCC, você pode executar isto:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-7
sudo apt install g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-7

Ambiente MacOS

Se você não tem o Python 3 e o git já instalado, você pode instalá-los usando o gerenciador de pacotes Homebrew :

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
brew update
brew install python
brew install git

Às vezes, o MacOS apresenta problemas de bifurcação de threads ao executar o Airflow, dependendo da configuração. Para evitar esses problemas, você deve editar seu ~/.bash_profile e adicionar a seguinte linha ao final do arquivo:

export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

Materiais tutoriais

O código para este tutorial está disponível em: https://github.com/tensorflow/tfx/tree/master/tfx/examples/airflow_workshop

O código é organizado pelas etapas em que você está trabalhando, portanto, para cada etapa, você terá o código necessário e instruções sobre o que fazer com ele.

Os arquivos do tutorial incluem um exercício e a solução para o exercício, caso você fique preso.

Exercício

  • taxi_pipeline.py
  • taxi_utils.py
  • táxi DAG

Solução

  • taxi_pipeline_solution.py
  • taxi_utils_solution.py
  • taxi_solution DAG

O que você está fazendo

Você está aprendendo a criar um pipeline de ML usando o TFX

  • Os pipelines do TFX são apropriados quando você implanta um aplicativo de ML de produção
  • Os pipelines TFX são apropriados quando os conjuntos de dados são grandes
  • Os pipelines do TFX são apropriados quando a consistência do treinamento/exibição é importante
  • Os pipelines TFX são apropriados quando o gerenciamento de versão para inferência é importante
  • O Google usa pipelines do TFX para ML de produção

Você está seguindo um processo típico de desenvolvimento de ML

  • Ingerir, entender e limpar nossos dados
  • Engenharia de recursos
  • Treinamento
  • Analisar o desempenho do modelo
  • Ensaboe, enxágue, repita
  • Pronto para produção

Adicionando o código para cada etapa

O tutorial foi desenvolvido para que todo o código seja incluído nos arquivos, mas todo o código das etapas 3 a 7 seja comentado e marcado com comentários embutidos. Os comentários embutidos identificam a qual etapa a linha de código se aplica. Por exemplo, o código da etapa 3 é marcado com o comentário # Step 3 .

O código que você adicionará para cada etapa normalmente se enquadra em 3 regiões do código:

  • importações
  • A configuração do DAG
  • A lista retornada da chamada create_pipeline()
  • O código de suporte em taxi_utils.py

Conforme você avança no tutorial, você descomentará as linhas de código que se aplicam à etapa do tutorial na qual você está trabalhando no momento. Isso adicionará o código para essa etapa e atualizará seu pipeline. Ao fazer isso , recomendamos que você revise o código que está removendo o comentário .

Conjunto de dados de táxi de Chicago

Táxitáxi de Chicago

Você está usando o conjunto de dados Taxi Trips divulgado pela cidade de Chicago.

Você pode ler mais sobre o conjunto de dados no Google BigQuery . Explore o conjunto de dados completo na IU do BigQuery .

Objetivo do modelo - classificação binária

O cliente dará gorjeta de mais ou menos de 20%?

Etapa 1: configurar seu ambiente

O script de configuração ( setup_demo.sh ) instala o TFX e o Airflow e configura o Airflow de uma maneira que facilita o trabalho neste tutorial.

Em uma concha:

cd
virtualenv -p python3 tfx-env
source ~/tfx-env/bin/activate

git clone https://github.com/tensorflow/tfx.git
cd ~/tfx
# These instructions are specific to the 0.21 release
git checkout -f origin/r0.21
cd ~/tfx/tfx/examples/airflow_workshop/setup
./setup_demo.sh

Você deve revisar setup_demo.sh para ver o que está fazendo.

Etapa 2: exibir o esqueleto inicial do pipeline

Olá Mundo

Em uma concha:

# Open a new terminal window, and in that window ...
source ~/tfx-env/bin/activate
airflow webserver -p 8080

# Open another new terminal window, and in that window ...
source ~/tfx-env/bin/activate
airflow scheduler

# Open yet another new terminal window, and in that window ...
# Assuming that you've cloned the TFX repo into ~/tfx
source ~/tfx-env/bin/activate
cd ~/tfx/tfx/examples/airflow_workshop/notebooks
jupyter notebook

Você iniciou o notebook Jupyter nesta etapa. Mais tarde você estará executando os notebooks nesta pasta.

Em um navegador:

  • Abra um navegador e vá para http://127.0.0.1:8080

Solução de problemas

Se você tiver algum problema ao carregar o console do Airflow em seu navegador da Web ou se houver algum erro ao executar o airflow webserver , talvez haja outro aplicativo em execução na porta 8080. Essa é a porta padrão do Airflow, mas você pode alterá-la para qualquer outra porta de usuário que não esteja sendo usada. Por exemplo, para executar o Airflow na porta 7070, você pode executar:

airflow webserver -p 7070

Botões de visualização DAG

Botões DAG

  • Use o botão à esquerda para habilitar o DAG
  • Use o botão à direita para atualizar o DAG ao fazer alterações
  • Use o botão à direita para acionar o DAG
  • Clique no táxi para ir para a visualização do gráfico do DAG

Botão de atualização do gráfico

CLI de fluxo de ar

Você também pode usar a CLI do Airflow para ativar e acionar seus DAGs:

# enable/disable
airflow pause <your DAG name>
airflow unpause <your DAG name>

# trigger
airflow trigger_dag <your DAG name>

Aguardando a conclusão do pipeline

Depois de acionar seu pipeline na exibição de DAGs, você pode observar enquanto seu pipeline conclui o processamento. À medida que cada componente é executado, a cor do contorno do componente no gráfico DAG mudará para mostrar seu estado. Quando um componente terminar de processar, o contorno ficará verde escuro para mostrar que está pronto.

Até agora, você só tem o componente CsvExampleGen em nosso pipeline, então você precisa esperar que ele fique verde escuro (~ 1 minuto).

Configuração concluída

Etapa 3: mergulhe em seus dados

A primeira tarefa em qualquer projeto de ciência de dados ou ML é entender e limpar os dados.

  • Entenda os tipos de dados para cada recurso
  • Procure por anomalias e valores ausentes
  • Entenda as distribuições de cada recurso

Componentes

Componentes de dadosComponentes de dados

  • ExampleGen ingere e divide o conjunto de dados de entrada.
  • StatisticsGen calcula estatísticas para o conjunto de dados.
  • SchemaGen SchemaGen examina as estatísticas e cria um esquema de dados.
  • ExampleValidator procura anomalias e valores ausentes no conjunto de dados.

Em um editor:

  • Em ~/airflow/dags, descomente as linhas marcadas como Step 3 em taxi_pipeline.py
  • Reserve um momento para revisar o código que você removeu o comentário

Em um navegador:

  • Retorne à página da lista de DAGs no Airflow clicando no link "DAGs" no canto superior esquerdo
  • Clique no botão atualizar no lado direito do táxi DAG
    • Você deve ver "DAG [táxi] agora está fresco como uma margarida"
  • Acionar táxi
  • Aguarde a conclusão do pipeline
    • Tudo verde escuro
    • Use atualizar no lado direito ou atualizar a página

Mergulhe nos dados

De volta ao Jupyter:

Anteriormente, você executou jupyter notebook , que abriu uma sessão do Jupyter em uma guia do navegador. Agora volte para essa guia no seu navegador.

  • Abra step3.ipynb
  • Siga o caderno

Mergulhe nos dados

Exemplo mais avançado

O exemplo apresentado aqui é realmente apenas para você começar. Para obter um exemplo mais avançado, consulte o TensorFlow Data Validation Colab .

Para obter mais informações sobre como usar o TFDV para explorar e validar um conjunto de dados, consulte os exemplos em tensorflow.org .

Etapa 4: engenharia de recursos

Você pode aumentar a qualidade preditiva de seus dados e/ou reduzir a dimensionalidade com engenharia de recursos.

  • Cruzamentos de recursos
  • Vocabulários
  • Incorporações
  • PCA
  • Codificação categórica

Um dos benefícios de usar o TFX é que você escreverá seu código de transformação uma vez e as transformações resultantes serão consistentes entre o treinamento e a veiculação.

Componentes

Transformar

  • O Transform executa a engenharia de recursos no conjunto de dados.

Em um editor:

  • Em ~/airflow/dags, descomente as linhas marcadas como Step 4 em taxi_pipeline.py e taxi_utils.py
  • Reserve um momento para revisar o código que você removeu o comentário

Em um navegador:

  • Retornar à página da lista de DAGs no Airflow
  • Clique no botão atualizar no lado direito do táxi DAG
    • Você deve ver "DAG [táxi] agora está fresco como uma margarida"
  • Acionar táxi
  • Aguarde a conclusão do pipeline
    • Tudo verde escuro
    • Use atualizar no lado direito ou atualizar a página

Engenharia de recursos

De volta ao Jupyter:

Retorne à guia Jupyter em seu navegador.

  • Abra step4.ipynb
  • Siga o caderno

Exemplo mais avançado

O exemplo apresentado aqui é realmente apenas para você começar. Para obter um exemplo mais avançado, consulte o TensorFlow Transform Colab .

Etapa 5: treinamento

Treine um modelo do TensorFlow com seus dados bonitos, limpos e transformados.

  • Inclua as transformações da etapa 4 para que sejam aplicadas de forma consistente
  • Salve os resultados como um SavedModel para produção
  • Visualize e explore o processo de treinamento usando o TensorBoard
  • Salve também um EvalSavedModel para análise do desempenho do modelo

Componentes

Em um editor:

  • Em ~/airflow/dags, descomente as linhas marcadas como Step 5 em taxi_pipeline.py e taxi_utils.py
  • Reserve um momento para revisar o código que você removeu o comentário

Em um navegador:

  • Retornar à página da lista de DAGs no Airflow
  • Clique no botão atualizar no lado direito do táxi DAG
    • Você deve ver "DAG [táxi] agora está fresco como uma margarida"
  • Acionar táxi
  • Aguarde a conclusão do pipeline
    • Tudo verde escuro
    • Use atualizar no lado direito ou atualizar a página

Treinando um modelo

De volta ao Jupyter:

Retorne à guia Jupyter em seu navegador.

  • Abra step5.ipynb
  • Siga o caderno

Treinando um modelo

Exemplo mais avançado

O exemplo apresentado aqui é realmente apenas para você começar. Para obter um exemplo mais avançado, consulte o Tutorial do TensorBoard .

Etapa 6: analisar o desempenho do modelo

Compreender mais do que apenas as métricas de nível superior.

  • Os usuários experimentam o desempenho do modelo apenas para suas consultas
  • O baixo desempenho em fatias de dados pode ser ocultado por métricas de nível superior
  • A justiça do modelo é importante
  • Muitas vezes, subconjuntos-chave de usuários ou dados são muito importantes e podem ser pequenos
    • Desempenho em condições críticas, mas incomuns
    • Desempenho para públicos-chave, como influenciadores
  • Se você estiver substituindo um modelo que está atualmente em produção, primeiro certifique-se de que o novo seja melhor
  • O avaliador informa ao componente Pusher se o modelo está OK

Componentes

  • O avaliador realiza uma análise profunda dos resultados do treinamento e garante que o modelo seja "bom o suficiente" para ser enviado para produção.

Em um editor:

  • Em ~/airflow/dags, descomente as linhas marcadas como Step 6 em taxi_pipeline.py
  • Reserve um momento para revisar o código que você removeu o comentário

Em um navegador:

  • Retornar à página da lista de DAGs no Airflow
  • Clique no botão atualizar no lado direito do táxi DAG
    • Você deve ver "DAG [táxi] agora está fresco como uma margarida"
  • Acionar táxi
  • Aguarde a conclusão do pipeline
    • Tudo verde escuro
    • Use atualizar no lado direito ou atualizar a página

Analisando o desempenho do modelo

De volta ao Jupyter:

Retorne à guia Jupyter em seu navegador.

  • Abra step6.ipynb
  • Siga o caderno

Analisando o desempenho do modelo

Exemplo mais avançado

O exemplo apresentado aqui é realmente apenas para você começar. Para um exemplo mais avançado, veja o Tutorial de Táxi do TFMA Chicago .

Etapa 7: pronto para produção

Se o novo modelo estiver pronto, faça-o assim.

  • Pusher implanta SavedModels em locais conhecidos

Os destinos de implantação recebem novos modelos de locais conhecidos

  • Exibição do TensorFlow
  • TensorFlow Lite
  • TensorFlow JS
  • Hub do TensorFlow

Componentes

  • O Pusher implanta o modelo em uma infraestrutura de serviço.

Em um editor:

  • Em ~/airflow/dags, descomente as linhas marcadas como Step 7 em taxi_pipeline.py
  • Reserve um momento para revisar o código que você removeu o comentário

Em um navegador:

  • Retornar à página da lista de DAGs no Airflow
  • Clique no botão atualizar no lado direito do táxi DAG
    • Você deve ver "DAG [táxi] agora está fresco como uma margarida"
  • Acionar táxi
  • Aguarde a conclusão do pipeline
    • Tudo verde escuro
    • Use atualizar no lado direito ou atualizar a página

Pronto para produção

Próximos passos

Agora você treinou e validou seu modelo e exportou um arquivo SavedModel no diretório ~/airflow/saved_models/taxi . Seu modelo está pronto para produção. Agora você pode implantar seu modelo em qualquer um dos destinos de implantação do TensorFlow, incluindo:

  • TensorFlow Serving , para servir seu modelo em um servidor ou farm de servidores e processar solicitações de inferência REST e/ou gRPC.
  • TensorFlow Lite , para incluir seu modelo em um aplicativo móvel nativo para Android ou iOS ou em um aplicativo Raspberry Pi, IoT ou microcontrolador.
  • TensorFlow.js , para executar seu modelo em um navegador da Web ou aplicativo Node.JS.