Tutorial: Como criar modelos de inferência remota - Amazon Redshift

Tutorial: Como criar modelos de inferência remota

O tutorial a seguir explica as etapas sobre como criar um modelo Random Cut Forest que foi treinado e implantado anteriormente no Amazon SageMaker, fora do Amazon Redshift. O algoritmo Random Cut Forest detecta pontos de dados anômalos em um conjunto de dados. A criação de um modelo com inferência remota permite que você leve seu modelo Random Cut Forest do SageMaker para o Amazon Redshift. Em seguida, no Amazon Redshift, você usa SQL para realizar previsões em um endpoint remoto do SageMaker.

Você pode usar um comando CREATE MODEL para importar um modelo de machine learning de um endpoint do Amazon SageMaker e preparar uma função de previsão do Amazon Redshift. Ao usar a operação CREATE MODEL, você fornece o nome do endpoint do modelo de machine learning do SageMaker.

Neste tutorial, você cria um modelo de machine learning do Amazon Redshift usando um endpoint de modelo do SageMaker. Quando seu modelo de machine learning estiver pronto, você poderá usá-lo para realizar previsões no Amazon Redshift. Primeiro, você treina e cria um endpoint no Amazon SageMaker e, em seguida, obtém o nome do endpoint. Depois, você usa o comando CREATE MODEL para criar um modelo com o Amazon Redshift ML. Finalmente, você executa previsões no modelo usando a função de previsão que o comando CREATE MODEL gera.

Exemplos de casos de uso

Você pode usar modelos Random Cut Forest e inferência remota para detecção de anomalias em outros conjuntos de dados, como prever um rápido aumento ou diminuição nas transações de comércio eletrônico. Você também pode prever mudanças significativas no clima ou na atividade sísmica.

Tarefas

  • Pré-requisitos

  • Etapa 1: Implantar o modelo do Amazon SageMaker

  • Etapa 2: Obter o endpoint do modelo do SageMaker

  • Etapa 3: Carregar dados do Amazon S3 para o Amazon Redshift

  • Etapa 4: Criar um modelo com o Amazon Redshift ML

  • Etapa 5: Executar previsões com o modelo

Pré-requisitos

Para concluir as etapas neste tutorial, você precisa atender aos seguintes pré-requisitos:

Etapa 1: Implantar o modelo do Amazon SageMaker

  1. Para implantar o modelo, acesse o console do Amazon SageMaker, escolha Notebook instances (Instâncias de caderno) abaixo de Notebook (Caderno) no painel de navegação.

  2. Escolha Open Jupyter (Abrir o Jupyter) para o caderno Jupyter que foi criado pelo modelo do CloudFormation.

  3. Selecione bring-your-own-model-remote-inference.ipynb.

  4. Configure os parâmetros para armazenar a entrada e a saída do treinamento no Amazon S3 substituindo as linhas a seguir pelo bucket e prefixo do Amazon S3.

    data_location=f"s3://{bucket}/{prefix}/", output_path=f"s3://{bucket}/{prefix}/output",
  5. Escolha o botão fast-forward (avanço rápido) para executar todas as células.

Etapa 2: Obter o endpoint do modelo do SageMaker

No console do Amazon SageMaker, em Inference (Inferência) no painel de navegação, escolha Endpoints e encontre o nome do modelo. Você deve copiar o nome do endpoint do modelo ao criar o modelo de inferência remota no Amazon Redshift.

Etapa 3: Carregar dados do Amazon S3 para o Amazon Redshift

Use o editor de consultas v2 do Amazon Redshift para executar os comandos SQL a seguir no Amazon Redshift. Esses comandos descartam a tabela rcf_taxi_data, se ela existir, criam uma tabela com o mesmo nome e carregam o conjunto de dados de exemplo na tabela.

DROP TABLE IF EXISTS public.rcf_taxi_data CASCADE; CREATE TABLE public.rcf_taxi_data (ride_timestamp timestamp, nbr_passengers int); COPY public.rcf_taxi_data FROM 's3://sagemaker-sample-files/datasets/tabular/anomaly_benchmark_taxi/NAB_nyc_taxi.csv' IAM_ROLE default IGNOREHEADER 1 FORMAT AS CSV;

Etapa 4: Criar um modelo com o Amazon Redshift ML

Execute a consulta a seguir para criar um modelo no Amazon Redshift ML usando o endpoint de modelo do SageMaker obtido na etapa anterior. Substitua randomcutforest-xxxxxxxxx pelo nome de seu próprio endpoint do SageMaker.

CREATE MODEL public.remote_random_cut_forest FUNCTION remote_fn_rcf(int) RETURNS decimal(10, 6) SAGEMAKER '<randomcutforest-xxxxxxxxx>' IAM_ROLE default;

Conferir o status do modelo (opcional)

Você pode usar o comando SHOW MODEL para saber quando o modelo está pronto.

Para verificar o status do modelo, use a operação SHOW MODEL a seguir.

SHOW MODEL public.remote_random_cut_forest

A saída mostra o endpoint e o nome da função do SageMaker.

+--------------------------+-----------------------------------------+ | Model Name | remote_random_cut_forest | +--------------------------+-----------------------------------------+ | Schema Name | public | | Owner | awsuser | | Creation Time | Wed, 15.06.2022 17:58:21 | | Model State | READY | | | | | PARAMETERS: | | | Endpoint | <randomcutforest-xxxxxxxxx> | | Function Name | remote_fn_rcf | | Inference Type | Remote | | Function Parameter Types | int4 | | IAM Role | default-aws-iam-role | +--------------------------+-----------------------------------------+

Etapa 5: Executar previsões com o modelo

O algoritmo Random Cut Forest do Amazon SageMaker foi projetado para detectar pontos de dados anômalos em um conjunto de dados. Neste exemplo, seu modelo foi projetado para detectar picos em corridas de táxi devido a eventos importantes. Você pode usar o modelo para prever eventos anômalos gerando uma pontuação de anomalia para cada ponto de dados.

Use a consulta a seguir para calcular pontuações de anomalia em todo o conjunto de dados de táxi. Observe que você faz referência à função usada na instrução CREATE MODEL na etapa anterior.

SELECT ride_timestamp, nbr_passengers, public.remote_fn_rcf(nbr_passengers) AS score FROM public.rcf_taxi_data;

Consultar se há anomalias altas e baixas (opcional)

Execute a consulta a seguir para encontrar quaisquer pontos de dados com pontuações acima de três desvios padrão da pontuação média.

WITH score_cutoff AS ( SELECT STDDEV(public.remote_fn_rcf(nbr_passengers)) AS std, AVG(public.remote_fn_rcf(nbr_passengers)) AS mean, (mean + 3 * std) AS score_cutoff_value FROM public.rcf_taxi_data ) SELECT ride_timestamp, nbr_passengers, public.remote_fn_rcf(nbr_passengers) AS score FROM public.rcf_taxi_data WHERE score > ( SELECT score_cutoff_value FROM score_cutoff ) ORDER BY 2 DESC;

Execute a consulta a seguir para encontrar quaisquer pontos de dados com pontuações acima de três desvios padrão da pontuação média.

WITH score_cutoff AS ( SELECT STDDEV(public.remote_fn_rcf(nbr_passengers)) AS std, AVG(public.remote_fn_rcf(nbr_passengers)) AS mean, (mean - 3 * std) AS score_cutoff_value FROM public.rcf_taxi_data ) SELECT ride_timestamp, nbr_passengers, public.remote_fn_rcf(nbr_passengers) AS score FROM public.rcf_taxi_data WHERE score < ( SELECT score_cutoff_value FROM score_cutoff ) ORDER BY 2 DESC;

Para obter mais informações sobre o Amazon Redshift ML, consulte a seguinte documentação:

Para obter mais informações sobre machine learning, consulte a seguinte documentação: