1. Visão geral
Neste laboratório, você vai usar a Vertex AI para treinar e fornecer um modelo com dados tabulares. Esta é a mais nova oferta de produto de IA no Google Cloud e está atualmente em pré-lançamento.
Conteúdo do laboratório
Você vai aprender a:
- Fazer upload de um conjunto de dados gerenciado para a Vertex AI
- Treinar um modelo com o AutoML
- Implantar o modelo de AutoML treinado em um endpoint e usar esse endpoint para fazer previsões
O custo total da execução deste laboratório no Google Cloud é de aproximadamente US$22.
2. Introdução à Vertex AI
Este laboratório usa a mais nova oferta de produtos de IA disponível no Google Cloud. A Vertex AI integra as ofertas de ML do Google Cloud em uma experiência de desenvolvimento intuitiva. Anteriormente, modelos treinados com o AutoML e modelos personalizados eram acessíveis por serviços separados. A nova oferta combina ambos em uma única API, com outros novos produtos. Você também pode migrar projetos existentes para a Vertex AI. Se você tiver algum feedback, consulte a página de suporte.
A Vertex AI inclui vários produtos diferentes para dar suporte a fluxos de trabalho integrais de ML. Este laboratório se concentra nos produtos destacados abaixo: AutoML para dados tabulares, Previsão e Workbench.
3. Configurar o ambiente
Para executar este codelab, você vai precisar de um projeto do Google Cloud Platform com o faturamento ativado. Para criar um projeto, siga estas instruções.
Etapa 1: ativar a API Compute Engine
Acesse o Compute Engine e selecione Ativar, caso essa opção ainda não esteja ativada. Você vai precisar disso para criar sua instância de notebook.
Etapa 2: ativar a API Vertex AI
Navegue até a seção "Vertex AI" do Console do Cloud e clique em Ativar API Vertex AI.
Etapa 3: criar uma instância do Vertex AI Workbench
Na seção Vertex AI do Console do Cloud, clique em "Workbench":
Em Notebooks gerenciados pelo usuário, clique em Novo notebook:
Em seguida, selecione a versão mais recente do tipo de instância TensorFlow Enterprise (com LTS) sem GPUs:
Use as opções padrão e clique em Criar.
Etapa 5: abrir o notebook
Depois que a instância for criada, selecione Abrir JupyterLab:
Os dados que vamos usar para treinar nosso modelo são deste conjunto de dados de detecção de fraudes de cartão de crédito. Usaremos uma versão desse conjunto de dados disponibilizada publicamente no BigQuery.
4. Crie um conjunto de dados gerenciado
Na Vertex AI, é possível criar conjuntos de dados gerenciados para uma variedade de tipos de dados. Você pode gerar estatísticas sobre esses conjuntos de dados e usá-las para treinar modelos com o AutoML ou com seu próprio código de modelo personalizado.
Etapa 1: criar um conjunto de dados
No menu da Vertex no console, selecione Conjuntos de dados:
Neste laboratório, criaremos um modelo de detecção de fraudes para determinar se uma transação com cartão de crédito específica deve ou não ser classificada como fraudulenta.
Na página "Conjuntos de dados", dê um nome ao conjunto de dados e selecione Tabular e Regressão/classificação. Em seguida, crie o conjunto de dados:
Há algumas opções para importar dados para conjuntos de dados gerenciados na Vertex:
- Fazer upload de um arquivo local do computador
- Como selecionar arquivos do Cloud Storage
- Como selecionar dados do BigQuery
Aqui, vamos fazer o upload de dados de uma tabela pública do BigQuery.
Etapa 2: importar dados do BigQuery
Escolha "Selecionar uma tabela ou visualização do BigQuery" como método de importação e copie o seguinte na caixa Tabela do BigQuery: bigquery-public-data.ml_datasets.ulb_fraud_detection
. Em seguida, selecione Continuar:
Você vai encontrar algo parecido com o seguinte após importar o conjunto de dados:
Se quiser, você pode clicar em Gerar estatísticas para ver mais informações sobre o conjunto de dados, mas isso não é necessário antes de prosseguir para a próxima etapa. Esse conjunto de dados contém transações reais de cartão de crédito. A maioria dos nomes das colunas foi ocultada, por isso são chamados de V1
, V2
etc.
5. Treinar um modelo com o AutoML
Depois de fazer upload de um conjunto de dados gerenciado, você já pode treinar um modelo com esses dados. Vamos treinar um modelo de classificação para prever se uma transação específica é fraudulenta ou não. Há duas opções de modelos de treinamento na Vertex AI:
- AutoML: treine modelos de alta qualidade com esforço mínimo e experiência em ML.
- Treinamento personalizado: execute seus aplicativos de treinamento personalizados na nuvem usando um dos contêineres pré-criados do Google Cloud ou seus próprios.
Neste laboratório, vamos usar o AutoML para treinamento.
Etapa 1: iniciar o job de treinamento
Na página de detalhes do conjunto de dados em que você parou na etapa anterior, selecione Treinar novo modelo no canto superior direito. Selecione Classificação como objetivo, deixe AutoML selecionado para o treinamento do modelo e clique em Continuar:
Dê um nome ao modelo ou use o padrão. Em Coluna de destino, selecione Classe. Esse número é um número inteiro que indica se uma transação específica foi fraudulenta (0
para não fraude, 1
para fraude).
Em seguida, selecione Continuar:
Nesta etapa, role para baixo e clique para expandir Opções avançadas. Como esse conjunto de dados não tem balanceamento (menos de 1% dos dados contém transações fraudulentas), escolha a opção AUC PRC, que maximiza a recuperação de precisão para a classe menos comum:
Selecione Continuar e prossiga para a última etapa (Computação e preços). Insira 1 como o número de horas de uso do nó para seu orçamento e mantenha a parada antecipada ativada. Treinar seu modelo de AutoML por uma hora de computação normalmente é um bom começo para entender se há uma relação entre os atributos e o rótulo que você selecionou. A partir daí, você pode modificar seus atributos e treinar por mais tempo para melhorar o desempenho do modelo. Em seguida, selecione Iniciar treinamento.
Você vai receber um e-mail quando o job de treinamento for concluído. O treinamento levará um pouco mais de uma hora para contabilizar o tempo de ativação e eliminação de recursos.
6. Explore as métricas de avaliação de modelo
Nesta etapa, vamos conferir o desempenho do modelo.
Depois que o job de treinamento do modelo for concluído, acesse a guia Models na Vertex. Clique no modelo que você acabou de treinar e confira a guia Avaliar. Há muitas métricas de avaliação aqui. Vamos nos concentrar em duas: a Matriz de confusão e a Importância do atributo.
Etapa 1: entenda a matriz de confusão
Uma matriz de confusão informa a porcentagem de exemplos de cada classe no conjunto de teste que o modelo previu corretamente. No caso de um conjunto de dados desequilibrado, como o que estamos lidando, essa é uma medida melhor do desempenho do nosso modelo do que a precisão geral.
Lembre-se de que menos de 1% dos exemplos em nosso conjunto de dados foram transações fraudulentas. Portanto, se a precisão do nosso modelo for 99%, há uma boa chance de ele estar adivinhando aleatoriamente a classe não fraudulenta em 99% das vezes. Por esse motivo, observar a precisão do modelo para cada classe é uma métrica melhor.
Ao rolar para baixo na guia Avaliar, você vai encontrar uma matriz de confusão parecida com esta (as porcentagens exatas podem variar):
A matriz de confusão mostra que nosso modelo inicial consegue classificar corretamente 85% dos exemplos fraudulentos no conjunto de teste. Isso é muito bom, especialmente considerando o desequilíbrio significativo do conjunto de dados. Em seguida, podemos tentar treinar o modelo por mais horas de computação para ver se podemos melhorar esses 85%.
Etapa 2: analisar a importância do recurso
Abaixo da matriz de confusão, você verá um gráfico de importância do recurso com esta aparência:
Isso mostra os recursos que forneceram o maior sinal para nosso modelo ao fazer previsões. A importância do recurso é um tipo de IA explicável, um campo que inclui diversos métodos para reunir mais informações sobre um modelo de ML que está fazendo previsões. O gráfico de importância do recurso mostrado aqui é calculado como um agregado, observando todas as previsões do modelo no conjunto de teste. Ele mostra os recursos mais importantes em uma série de exemplos.
Este gráfico seria mais legal se a maioria dos recursos no conjunto de dados não fosse obscurecida. Podemos descobrir, por exemplo, que o tipo de transação (transferência, depósito etc.) foi o maior indicador de fraude.
Em um cenário do mundo real, esses valores de importância do atributo podem ser usados para ajudar a melhorar nosso modelo e ter mais confiança nas previsões. Podemos decidir remover os atributos menos importantes na próxima vez que treinarmos um modelo ou combinar dois dos nossos atributos mais significativos em um cruzamento de atributos para ver se isso melhora o desempenho do modelo.
Aqui estamos analisando a importância do recurso em um lote, mas também é possível conferir a importância do recurso para previsões individuais na Vertex AI. Vamos conferir como fazer isso depois de implantar nosso modelo.
7. Implantação do modelo em um endpoint
Agora que temos um modelo treinado, a próxima etapa é criar um endpoint na Vertex. Um recurso de modelo na Vertex pode ter vários endpoints associados a ele, e você pode dividir o tráfego entre os endpoints.
Etapa 1: criar um endpoint
Na página do modelo, navegue até a guia Implantar e testar e clique em Implantar no endpoint:
Dê um nome ao endpoint, como fraud_v1
, deixe o acesso definido como Padrão e clique em Continuar.
Deixe a divisão de tráfego e o tipo de máquina como as configurações padrão, clique em Concluído e em Continuar.
Não vamos usar o monitoramento de modelos para esse endpoint. Portanto, você pode deixar essa opção desmarcada e clicar em Implantar. Seu endpoint vai levar alguns minutos para ser implantado. Quando estiver concluído, uma marca de seleção verde vai aparecer ao lado dele:
Você está chegando perto! Agora você está pronto para receber previsões em seu modelo implantado.
8. Receba previsões no modelo implantado
Há algumas opções para coletar previsões de modelo:
- IU da Vertex AI
- API Vertex AI
Mostraremos os dois aqui.
Etapa 1: receber previsões do modelo na interface
Na página do modelo em que o endpoint é mostrado (de onde paramos na última etapa), role para baixo até a seção Testar o modelo:
Aqui, a Vertex AI escolheu valores aleatórios para cada um dos atributos do nosso modelo que podem ser usados para receber uma previsão de teste. Se quiser, você pode alterar esses valores. Role até a parte de baixo da página e selecione Prever.
Na seção Resultado da previsão da página, você vai encontrar a porcentagem prevista do modelo para cada classe. Uma pontuação de confiança de 0.99
para a classe 0
, por exemplo, significa que seu modelo acha que o exemplo tem 99% de não ser fraudulento.
Etapa 2: receber previsões de modelo com a API Vertex AI
A interface é uma ótima forma de garantir que o endpoint implantado está funcionando conforme o esperado, mas é provável que você queira receber as previsões dinamicamente por uma chamada de API REST. Para mostrar como fazer previsões de modelo aqui, vamos usar a instância do Vertex Workbench que você criou no início do laboratório.
Em seguida, abra a instância de notebook que você criou e abra um notebook Python 3 na tela de início:
No notebook, execute o seguinte em uma célula para instalar o SDK do Vertex:
!pip3 install google-cloud-aiplatform --upgrade --user
Depois adicione uma célula no seu notebook para importar o SDK e criar uma referência ao endpoint que você acabou de implantar:
from google.cloud import aiplatform
endpoint = aiplatform.Endpoint(
endpoint_name="projects/YOUR-PROJECT-NUMBER/locations/us-central1/endpoints/YOUR-ENDPOINT-ID"
)
Você terá que substituir dois valores na string endpoint_name
acima pelo endpoint e número do seu projeto. Para encontrar o número do projeto, acesse o painel do projeto e confira o valor do Número do projeto.
O ID do endpoint pode ser encontrado na seção de endpoints do console:
Por último, faça uma previsão para seu endpoint copiando e executando o código a seguir em uma célula nova:
test_instance={
'Time': 80422,
'Amount': 17.99,
'V1': -0.24,
'V2': -0.027,
'V3': 0.064,
'V4': -0.16,
'V5': -0.152,
'V6': -0.3,
'V7': -0.03,
'V8': -0.01,
'V9': -0.13,
'V10': -0.18,
'V11': -0.16,
'V12': 0.06,
'V13': -0.11,
'V14': 2.1,
'V15': -0.07,
'V16': -0.033,
'V17': -0.14,
'V18': -0.08,
'V19': -0.062,
'V20': -0.08,
'V21': -0.06,
'V22': -0.088,
'V23': -0.03,
'V24': 0.01,
'V25': -0.04,
'V26': -0.99,
'V27': -0.13,
'V28': 0.003
}
response = endpoint.predict([test_instance])
print('API response: ', response)
Você vai encontrar uma previsão em torno de .67
para a classe 0, o que significa que o modelo acha que há 67% de chance de que essa transação não seja fraudulenta.
Parabéns! 🎉
Você aprendeu a usar a Vertex AI para:
- Fazer upload de um conjunto de dados gerenciado
- Treinar e avaliar um modelo em dados tabulares usando o AutoML
- implante o modelo em um endpoint
- Receba previsões em um endpoint de modelo usando o SDK para Vertex
Para saber mais sobre partes diferentes da Vertex AI, acesse a documentação.
9. Limpeza
Se você quiser continuar usando o notebook que criou neste laboratório, é recomendado que você o desligue quando não estiver usando. Na interface do Workbench no Console do Cloud, selecione o notebook e clique em Parar.
Se quiser excluir o notebook totalmente, clique no botão "Excluir" no canto superior direito.
Para excluir o endpoint implantado, acesse a seção Endpoints do console da Vertex AI e desimplante o modelo do endpoint:
Para excluir o bucket do Storage, use o menu de navegação do console do Cloud, acesse o Storage, selecione o bucket e clique em "Excluir":