RSVP para seu evento TensorFlow Everywhere hoje mesmo!
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Tutorial TFX Airflow

Pitão PyPI

Introdução

Este tutorial foi desenvolvido para apresentar o TensorFlow Extended (TFX) e ajudá-lo a aprender a criar seus próprios pipelines de aprendizado de máquina. 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 pelo exame do 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

Por favor, consulte o Guia do usuário 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 as etapas:

  1. Configure seu ambiente
  2. Traga o esqueleto do pipeline inicial
  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 / MacOS
  • Virtualenv
  • Python 3.5+
  • Git

Pacotes necessá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, deverá instalar o python3.6-dev:

sudo apt-get install python3.6-dev

Se você estiver executando o Python 3.7, deverá instalar 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, pode executar:

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 tiver Python 3 e git já instalados, 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 tem problemas para bifurcar 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 desse tutorial está disponível em: https://github.com/tensorflow/tfx/tree/master/tfx/examples/airflow_workshop

O código é organizado pelas etapas nas quais você está trabalhando, portanto, para cada etapa, você terá o código de que precisa 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
  • solução_táxi DAG

O que você está fazendo

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

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

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

  • Ingestão, compreensão e limpeza de nossos dados
  • Engenharia de recursos
  • Treinamento
  • Analise o desempenho do modelo
  • Ensaboe, enxágue, repita
  • Pronto para produção

Adicionando o código para cada etapa

O tutorial é projetado 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 está 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 DAG
  • A lista retornada da chamada create_pipeline ()
  • O código de suporte em taxi_utils.py

À medida que avança no tutorial, você remove o comentário das linhas de código que se aplicam à etapa do tutorial em que está trabalhando no momento. Isso adicionará o código para essa etapa e atualizará seu pipeline. Ao fazer isso , recomendamos enfaticamente que você analise o código que está descomentando .

Conjunto de dados de táxi de Chicago

TáxiChicago taxi

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á uma gorjeta superior ou inferior a 20%?

Etapa 1: configure 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 casca:

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 o setup_demo.sh para ver o que ele está fazendo.

Etapa 2: trazer o esqueleto do pipeline inicial

Olá Mundo

Em uma casca:

# 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 bloco de notas Jupyter nesta etapa. Posteriormente, você executará os blocos de notas desta pasta.

Em um navegador:

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

Solução de problemas

Se você tiver problemas para carregar o console do Airflow em seu navegador da web ou se houver algum erro ao executar o airflow webserver , você pode ter 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 do Airflow

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>

Esperando que o pipeline seja concluído

Depois de acionar seu pipeline na visualização dos DAGs, você pode observar enquanto o pipeline conclui o processamento. Conforme cada componente é executado, a cor do contorno do componente no gráfico DAG muda para mostrar seu estado. Quando o processamento de um componente termina, o contorno ficará verde escuro para mostrar que foi concluído.

Até agora, você só tem o componente CsvExampleGen em nosso pipeline, portanto, é necessário esperar que ele fique verde escuro (cerca de 1 minuto).

Configuração completa

Etapa 3: mergulhe nos seus dados

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

  • Compreenda os tipos de dados para cada recurso
  • Procure anomalias e valores ausentes
  • Compreenda 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ê descomentou

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ê deverá ver "DAG [táxi] agora está fresco como uma margarida"
  • Trigger taxi
  • 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 o jupyter notebook , que abriu uma sessão do Jupyter em uma guia do navegador. Agora volte para essa guia em seu navegador.

  • Abra step3.ipynb
  • Siga o caderno

Mergulhe nos dados

Exemplo mais avançado

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

Para obter mais informações sobre como usar 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 a engenharia de recursos.

  • Cruzamentos de recursos
  • Vocabulários
  • Embeddings
  • PCA
  • Codificação categórica

Um dos benefícios de usar TFX é que você escreverá seu código de transformação uma vez e as transformações resultantes serão consistentes entre o treinamento e o serviç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ê descomentou

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ê deverá ver "DAG [táxi] agora está fresco como uma margarida"
  • Trigger taxi
  • 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:

Volte para a guia Jupyter em seu navegador.

  • Abra step4.ipynb
  • Siga o caderno

Exemplo mais avançado

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

Etapa 5: treinamento

Treine um modelo 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 TensorBoard
  • Também salve um EvalSavedModel para análise de desempenho do modelo

Componentes

Em um editor:

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

Em um navegador:

  • Retornar à página da lista de DAGs no Airflow
  • Clique no botão de atualização no lado direito do táxi DAG
    • Você deverá ver "DAG [táxi] agora está fresco como uma margarida"
  • Trigger taxi
  • 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:

Volte para a guia Jupyter em seu navegador.

  • Abra step5.ipynb
  • Siga o caderno

Treinando um modelo

Exemplo mais avançado

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

Etapa 6: Analisando 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
  • Freqüentemente, subconjuntos principais 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 é melhor
  • O avaliador diz 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 colocado em 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ê descomentou

Em um navegador:

  • Retornar à página da lista de DAGs no Airflow
  • Clique no botão de atualização no lado direito do táxi DAG
    • Você deverá ver "DAG [táxi] agora está fresco como uma margarida"
  • Trigger taxi
  • 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:

Volte para a guia Jupyter em seu navegador.

  • Abra step6.ipynb
  • Siga o caderno

Analisando o desempenho do modelo

Exemplo mais avançado

O exemplo apresentado aqui serve apenas para você começar. Para um exemplo mais avançado, consulte o TFMA Chicago Taxi Tutorial .

Etapa 7: pronto para produção

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

  • Pusher implanta SavedModels em locais bem conhecidos

Alvos de implantação recebem novos modelos de locais bem conhecidos

  • Serviço TensorFlow
  • TensorFlow Lite
  • TensorFlow JS
  • TensorFlow Hub

Componentes

  • 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ê descomentou

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ê deverá ver "DAG [táxi] agora está fresco como uma margarida"
  • Trigger taxi
  • 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 diretório ~/airflow/saved_models/taxi . Seu modelo agora 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 disponibilizar 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 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