Fluxo de trabalho de machine learning

Com o AI Platform, é possível ativar muitas partes do fluxo de trabalho de machine learning (ML). Este documento fornece uma descrição introdutória do processo geral de ML e explica onde cada serviço do AI Platform se encaixa no processo.

Para uma introdução aos serviços, consulte a visão geral técnica do AI Platform.

Breve descrição do machine learning

O machine learning (ML) é um subcampo da inteligência artificial (IA). O objetivo do ML é fazer os computadores aprenderem com os dados disponibilizados por você. Em vez de escrever códigos que descrevem a ação a ser executada pelo computador, seu código fornece um algoritmo que se adapta com base em exemplos de comportamento desejado. O programa resultante, que consiste no algoritmo e nos parâmetros associados aprendidos, é chamado de modelo treinado.

Fluxo de trabalho de ML

No diagrama abaixo, você encontrará uma visão geral completa das fases em um fluxo de trabalho de ML. As caixas em azul indicam os locais em que o AI Platform fornece APIs e serviços gerenciados:

Fluxo de trabalho de ML
Fluxo de trabalho de ML

Para desenvolver e gerenciar um modelo pronto para produção, siga estas etapas:

  • Fornecer e preparar seus dados

  • Desenvolver seu modelo

  • Treinar um modelo de ML com seus dados

    • Treinar modelo
    • Avaliar a acurácia do modelo
    • Ajustar hiperparâmetros
  • Implantar seu modelo treinado

  • Enviar solicitações de predição para seu modelo:

    • Predição on-line
    • Predição em lote
  • Monitorar as predições de maneira contínua

  • Gerenciar modelos e versões de modelo

Essas etapas são iterativas. Talvez seja necessário reavaliar e voltar a uma etapa anterior em algum ponto do processo.

No restante desta página, discutiremos os estágios em detalhes.

Antes de começar, avalie o problema

Antes de resolver um problema com ML, pense naquilo que você está tentando resolver e pergunte-se:

Você tem um problema bem definido para solucionar?

Muitas abordagens diferentes são possíveis ao usar ML para reconhecer padrões em dados. É importante definir as informações que você está tentando tirar do modelo e por que você precisa delas.

ML é a melhor solução para o problema?

O ML supervisionado (o estilo descrito nesta documentação) é adequado para determinados tipos de problemas.

Considere usar o ML para o problema somente se tiver acesso a um conjunto considerável de dados para treinar seu modelo. Não há uma regra sobre a quantidade de dados necessária. Cada atributo (de dados) que você inclui no modelo aumenta o número de instâncias (registros de dados) necessárias para treiná-lo adequadamente. Veja as práticas recomendadas do ML para mais orientações sobre a engenharia de atributos.

Considere também dividir o conjunto de dados em três subconjuntos: um para treinamento, um para avaliação (ou validação) e um para teste.

Investigue alternativas que forneçam uma maneira mais fácil e concreta de resolver o problema.

Como medir o sucesso do modelo?

Um dos maiores desafios da criação de um modelo de ML é saber quando a fase de desenvolvimento está completa. É tentador continuar refinando o modelo para sempre, extraindo melhorias cada vez menores na precisão. Você precisa saber o que significa sucesso antes de começar o processo. Considere o nível de precisão suficiente para suas necessidades e as consequências do nível de erro correspondente.

Fornecer e preparar seus dados

Tenha acesso a um grande conjunto de dados de treinamento que inclua o atributo que você queira inferir (prever) com base nos outros recursos.

Suponha que você queira que o modelo preveja o preço de venda de uma casa, por exemplo. Comece com um grande conjunto de dados que descreva as características das casas em uma determinada área, incluindo o preço de venda de cada uma.

Análise de dados

Após fornecer os dados, é necessário analisá-los, entendê-los e prepará-los para serem a entrada do processo de treinamento. Você talvez precise executar as etapas a seguir:

  • Juntar dados de várias fontes e racionalizá-los em um conjunto de dados.
  • Visualizá-los para procurar tendências.
  • Usar ferramentas e linguagens centradas em dados para detectar padrões neles.
  • Identificar recursos nos dados. Eles incluem o subconjunto de atributos de dados que você usa no modelo.
  • Fazer uma limpeza para encontrar quaisquer valores anômalos causados por erros na entrada ou na medição de dados.

Pré-processamento de dados

Nessa etapa, você transforma dados válidos e limpos no formato que melhor atende às necessidades do modelo. Veja alguns exemplos de pré-processamento de dados:

  • Normalização de dados numéricos para uma escala comum.
  • Aplicação de regras de formatação aos dados. A remoção da marcação HTML de um recurso de texto, por exemplo.
  • Redução da redundância de dados por meio da simplificação. A conversão de um recurso de texto em uma representação de bag of words, por exemplo.
  • Representação do texto numericamente. A atribuição de valores a cada valor possível em um recurso categórico, por exemplo.
  • Atribuição de valores de chave a instâncias de dados.

Compatibilidade do Google Cloud com exploração e preparação de dados

O TensorFlow tem várias bibliotecas de pré-processamento para serem usadas com o AI Platform, Por exemplo, tf.transform.

É possível implantar e disponibilizar pipelines do scikit-learn no AI Platform para aplicar transformações incorporadas para treinamento e predição on-line. A aplicação de transformações personalizadas está na versão Beta.

É possível implantar uma rotina de previsão personalizada (beta) para garantir que o IA Platform pré-processe a entrada no momento da predição da mesma forma que os dados pré-processados durante o treinamento.

Além disso, considere os seguintes serviços do Google Cloud:

  • Notebooks são instâncias de Deep Learning VM Image pré-empacotadas com notebooks JupyterLab e otimizadas para ciência de dados de aprendizado profundo, de preparação e exploração de dados ou desenvolvimento rápido de protótipo.

  • O BigQuery é um serviço de armazenamento de dados totalmente gerenciado que permite a análise ad hoc de dados em tempo real com SQL padrão.

  • O Dataproc é um serviço de nuvem totalmente gerenciado para executar clusters do Apache Spark (em inglês) e do Apache Hadoop (em inglês).

  • O Dataflow é um serviço totalmente gerenciado para transformar e enriquecer dados em modos de stream (tempo real) e lote (históricos) com a mesma confiabilidade e expressividade.

  • O Dataprep é um serviço de dados inteligente e sem servidor para explorar, limpar e preparar visualmente dados estruturados e não estruturados.

Codificar o modelo

Desenvolva seu modelo usando técnicas de ML estabelecidas ou definindo novas operações e abordagens.

Comece com o Guia de primeiros passos do TensorFlow. Também consulte a documentação do scikit-learn ou a do XGBoost (ambas em inglês) para criar o modelo. Em seguida, examine algumas amostras de código projetadas para funcionar com o AI Platform.

Treinar, avaliar e ajustar o modelo

O AI Platform fornece os serviços necessários para treinar e avaliar o modelo na nuvem. Ele também oferece uma funcionalidade de ajuste de hiperparâmetros, que otimiza o processo de treinamento.

Ao treinar o modelo, você fornece a ele dados para os quais já conhece o valor do atributo (recurso) de dados de destino. Você executa o modelo para prever esses valores de destino para os dados de treinamento. Assim, o modelo ajusta as configurações para adequar os dados e prever o valor de destino com mais precisão.

Da mesma maneira, ao avaliar o modelo treinado, você fornece dados que incluem os valores de destino. Compare os resultados das predições do modelo com os valores reais dos dados de avaliação e use técnicas estatísticas adequadas ao modelo para avaliá-lo.

Também é possível ajustar o modelo alterando as operações ou configurações usadas para controlar o processo de treinamento, como o número de etapas de treinamento a serem executadas. Essa técnica é conhecida como ajuste de hiperparâmetro.

Como testar seu modelo

Durante o treinamento, você aplica o modelo a dados conhecidos para ajustar as configurações e melhorar os resultados. Quando os resultados forem bons o suficiente para as necessidades do aplicativo, implante o modelo em qualquer sistema utilizado pelo aplicativo e teste-o.

Para isso, execute os dados por meio do modelo em um contexto o mais próximo possível do aplicativo final e da infraestrutura de produção.

Use um conjunto de dados diferente daqueles usados para treinamento e avaliação. O ideal é usar um conjunto separado de dados em cada teste, para que o modelo seja testado com dados não processados anteriormente.

Talvez também seja útil criar diferentes conjuntos de dados de teste, dependendo da natureza do modelo. Por exemplo, use diferentes conjuntos de dados para determinados locais ou pontos no tempo ou divida as instâncias para imitar diferentes dados demográficos.

Durante o processo, faça ajustes nos parâmetros do modelo e nos hiperparâmetros com base nos resultados do teste. Descubra problemas no modelo ou na interação com o restante do aplicativo.

Hospedar o modelo na nuvem

O AI Platform fornece ferramentas para fazer upload do modelo de ML treinado na nuvem, para que você envie solicitações de predição ao modelo.

Para implantar o modelo treinado no AI Platform, salve-o usando as ferramentas fornecidas pelo framework de machine learning. Isso envolve a serialização das informações que representam o modelo treinado em um arquivo que possa ser implantado para predição na nuvem.

Em seguida, faça upload do modelo salvo para um bucket do Cloud Storage e crie um recurso de modelo no AI Platform, especificando o caminho do Cloud Storage para o modelo salvo.

Ao implantar o modelo, também é possível inserir um código personalizado (Beta) para personalizar o modo como ele lida com solicitações de previsão.

Enviar solicitações de previsão ao modelo

O AI Platform fornece os serviços necessários para solicitar predições do modelo na nuvem.

Há duas maneiras de conseguir as predições a partir de modelos treinados: predição on-line (às vezes chamada de predição HTTP) e predição em lote. Nos dois casos, você passa dados de entrada a um modelo de machine learning hospedado em nuvem e recebe inferências para cada instância de dados.

Monitorar seu serviço de predição

Monitore as predições de maneira contínua. O AI Platform fornece APIs para examinar os jobs em execução. Além disso, várias ferramentas do Google Cloud são compatíveis com a operação do modelo implantado, como o Cloud Logging e o Cloud Monitoring.

Gerenciar modelos e versões de modelo

O AI Platform fornece várias interfaces para gerenciar o modelo e as versões, incluindo uma API REST, a ferramenta de linha de comando gcloud ai-platform e o Console do Cloud.

A seguir