Conceitos básicos do Amazon Redshift ML
O Amazon Redshift ML facilita a criação, o treinamento e a implantação de modelos de Machine Learning usando comandos SQL familiares. Com o Amazon Redshift ML, você pode usar os dados no cluster do Redshift para treinar modelos com o Amazon SageMaker AI. Depois, os modelos são localizados e as previsões podem ser feitas em um banco de dados do Amazon Redshift. No momento, o Amazon Redshift ML é compatível com os seguintes algoritmos de machine learning: XGBoost (AUTO ON e OFF) e perceptron multicamada (AUTO ON), K-Means (AUTO OFF) e Linear Learner.
Tópicos
Definir cluster e configuração para administração do Amazon Redshift ML
Antes de trabalhar com o Amazon Redshift ML, conclua a configuração do cluster e configure as permissões para usar o Amazon Redshift ML.
Configuração de cluster para usar o Amazon Redshift ML
Antes de trabalhar com o Amazon Redshift ML, preencha os pré-requisitos a seguir.
Como administrador do Amazon Redshift, faça a configuração única a seguir para usar clusters provisionados pelo Amazon Redshift. Para usar o Amazon Redshift ML com o Amazon Redshift sem servidor, consulte Getting started with Amazon Redshift Serverless.
Para executar a configuração única do cluster para o Amazon Redshift ML
-
Crie um cluster do Amazon Redshift usando o AWS Management Console ou a AWS Command Line Interface (AWS CLI). Anexe a política do AWS Identity and Access Management (IAM) ao criar o cluster. Para ter mais informações sobre as permissões necessárias para usar o Amazon Redshift ML com o Amazon SageMaker, consulte Permissões necessárias para usar o machine learning (ML) do Amazon Redshift.
-
Crie o perfil do IAM necessário para usar o Amazon Redshift ML realizando um dos seguintes procedimentos:
-
Para usar o SageMaker AI com o Amazon Redshift ML, crie um perfil do IAM com as políticas
AmazonS3FullAccess
eAmazonSageMakerFullAccess
. Se você também planeja criar modelos do Forecast, anexe igualmente a políticaAmazonForecastFullAccess
ao seu perfil. -
Para usar o Amazon Bedrock com o Amazon Redshift ML, crie um perfil do IAM com as políticas
AmazonS3FullAccess
eAmazonBedrockFullAccess
. -
Recomendamos criar uma função do IAM por meio do console do Amazon Redshift que tenha a política
AmazonRedshiftAllCommandsFullAccess
com permissões para executar comandos SQL, como CREATE MODEL. O Amazon Redshift usa um mecanismo contínuo baseado em API para criar funções do IAM de maneira programática em sua Conta da AWS em seu nome. O Amazon Redshift anexa automaticamente políticas gerenciadas pela AWS existentes para a função do IAM. Essa metodologia significa que você pode permanecer no console do Amazon Redshift e não precisa alternar para o console do IAM para criar a função. Para obter mais informações, consulte Criar uma função do IAM como padrão para o Amazon Redshift.Quando uma função do IAM for criada como padrão para o cluster, inclua
redshift
como parte do nome do recurso ou use uma etiqueta específica do RedShift para etiquetar esses recursos.Se o cluster estiver com o roteamento aprimorado da Amazon VPC ativado, será possível usar uma função do IAM criada por meio do console do Amazon Redshift. Essa função do IAM tem a política
AmazonRedshiftAllCommandsFullAccess
anexada e adiciona as permissões a seguir à política. Essas permissões adicionais permitem que o Amazon Redshift crie e exclua uma interface de rede elástica (ENI) em sua conta e a anexe a tarefas de compilação em execução no Amazon EC2 ou no Amazon ECS. Isso permite que os objetos dos buckets do Amazon S3 sejam acessados somente de dentro de uma Virtual Private Cloud (VPC) com acesso à Internet bloqueado.{ "Effect": "Allow", "Action": [ "ec2:DescribeVpcEndpoints", "ec2:DescribeDhcpOptions", "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeNetworkInterfaces", "ec2:DeleteNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:CreateNetworkInterface", "ec2:ModifyNetworkInterfaceAttribute" ], "Resource": "*" }
Para usar os modelos de base do Amazon Bedrock, adicione a seguinte seção:
// Required section if you use Bedrock models. { "Effect": "Allow", "Action": "bedrock:InvokeModel", "Resource": [ "arn:aws:bedrock:
<region>
::foundation-model/*" ] } -
Se você deseja criar uma função do IAM com uma política mais restritiva, use a política a seguir. Você também pode modificar essa política para atender às suas necessidades.
O bucket do Amazon S3
redshift-downloads/redshift-ml/
é o local onde os dados de amostra usados para outras etapas e exemplos são armazenados. Você pode removê-lo se não precisar carregar dados do Amazon S3. Ou substitua-o por outros buckets do Amazon S3 que você usa para carregar dados no Amazon Redshift.Os valores
,your-account-id
eyour-role
amzn-s3-demo-bucket
são os que você especifica como parte do comando CREATE MODEL.(Opcional) Use as chaves AWS KMS da política de exemplo se você especificar uma chave AWS KMS ao usar o Amazon Redshift ML. O valor
é a chave que você usa como parte do comando CREATE MODEL.your-kms-key
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetAuthorizationToken", "ecr:GetDownloadUrlForLayer", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents", "sagemaker:*Job*", "sagemaker:AddTags", "sagemaker:CreateModel", "sagemaker:CreateEndpoint", "sagemaker:CreateEndpointConfig", "sagemaker:DeleteEndpoint", "sagemaker:DeleteEndpointConfig, "sagemaker:DeleteModel" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole", "s3:AbortMultipartUpload", "s3:GetObject", "s3:DeleteObject", "s3:PutObject" ], "Resource": [ "arn:aws:iam::
<your-account-id>
:role/<your-role>
", "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:s3:::redshift-downloads/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket, "arn:aws:s3:::redshift-downloads" ] } // Optional section needed if you use AWS KMS keys. ,{ "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:Decrypt", "kms:DescribeKey", "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": [ "arn:aws:kms:<your-region>
:<your-account-id>
:key/<your-kms-key>
" ] } ] }
-
-
Para permitir que o Amazon Redshift e o SageMaker AI assumam a função de interagir com outros serviços, adicione a política de confiança a seguir ao perfil do IAM.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com", "sagemaker.amazonaws.com", "forecast.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
-
(Opcional) Criar um bucket do Amazon S3 e uma chave AWS KMS. Eles são usados pelo Amazon Redshift para armazenar os dados de treinamento enviados ao Amazon SageMaker AI e receber o modelo treinado do Amazon SageMaker AI.
-
(Opcional) Crie diferentes combinações de funções do IAM e buckets do Amazon S3 para controlar o acesso a diferentes grupos de usuários.
-
(Opcional) Ao ativar o roteamento de VPC para seu cluster do Redshift, crie o seguinte:
Um endpoint do Amazon S3 ou a VPC em que o cluster do Redshift está.
Um endpoint do SageMaker IA ou um endpoint da VPC do Amazon Bedrock.
Isso possibilita que o tráfego seja executado por meio de sua VPC entre esses serviços durante a operação CREATE MODEL. Para obter mais informações sobre o roteamento da VPC, consulte Roteamento aprimorado da VPC no Amazon Redshift.
Para obter mais informações sobre as permissões necessárias para especificar uma VPC privada para seu trabalho de ajuste de hiperparâmetros, consulte Permissions required to use Amazon Redshift ML with Amazon SageMaker AI.
nota
As chamadas de inferência feitas para modelos remotos do SageMaker IA não passam pela VPC.
Para obter informações sobre como usar a instrução CREATE MODEL para começar a criar modelos para diferentes casos de uso, consulte CREATE MODEL.
Gerenciar permissões e propriedade
Assim como em outros objetos de banco de dados, como tabelas ou funções, o Amazon Redshift vincula a criação e o uso de modelos ML para acessar mecanismos de controle. Há permissões separadas para a criação de um modelo que executa as funções de previsão.
Os exemplos a seguir usam dois grupos de usuários: retention_analyst_grp
(criador do modelo) e marketing_analyst_grp
(usuário do modelo), para ilustrar como o Amazon Redshift gerencia o controle de acesso. O analista de retenção cria modelos de machine learning que outros conjuntos de usuários podem usar com as permissões obtidas.
Um superusuário pode conceder permissão USER ou GROUP para criar modelos de Machine Learning usando a instrução a seguir.
GRANT CREATE MODEL TO GROUP retention_analyst_grp;
Usuários ou grupos com essa permissão podem criar um modelo em qualquer esquema no cluster se um usuário tiver a permissão usual de CREATE no SCHEMA. O modelo de Machine Learning faz parte da hierarquia de esquemas de forma semelhante a tabelas, exibições, procedimentos e funções definidas pelo usuário.
Supondo que já exista um esquema demo_ml
, conceda aos dois grupos de usuários a permissão no esquema da seguinte forma.
GRANT CREATE, USAGE ON SCHEMA demo_ml TO GROUP retention_analyst_grp;
GRANT USAGE ON SCHEMA demo_ml TO GROUP marketing_analyst_grp;
Para permitir que outros usuários usem a função de inferência de machine learning, conceda a permissão EXECUTE. O exemplo a seguir usa a permissão EXECUTE para conceder ao GRUPO marketing_analyst_grp a permissão de usar o modelo.
GRANT EXECUTE ON MODEL demo_ml.customer_churn_auto_model TO GROUP marketing_analyst_grp;
Use a instrução REVOKE com CREATE MODEL e EXECUTE para revogar essas permissões de usuários ou grupos. Para obter mais informações sobre comandos de controle de permissão, consulte GRANT e REVOKE.
Usar a explicabilidade do modelo com o Amazon Redshift ML
Com a explicabilidade do modelo do Amazon Redshift ML, você usa valores relevantes de recursos para ajudar a entender como cada atributo dos dados de treinamento contribui para o resultado previsto.
A explicabilidade do modelo ajuda a melhorar os modelos de machine learning (ML) ao explicar as previsões feitas pelos modelos. A explicabilidade do modelo ajuda a explicar como esses modelos fazem previsões usando uma abordagem de atribuição de recursos.
O Amazon Redshift ML incorpora a explicabilidade do modelo para fornecer funcionalidade de explicação do modelo aos usuários do Amazon Redshift ML. Para obter mais informações sobre a explicabilidade do modelo, consulte O que é imparcialidade e explicabilidade do modelo para predições de machine learning? no Guia do desenvolvedor do Amazon SageMaker AI.
A explicabilidade do modelo também monitora as inferências que os modelos fazem na produção para oscilação de atribuição de recursos. Também fornece ferramentas para ajudar você a gerar relatórios de governança de modelos que podem ser usados para informar equipes de risco e conformidade e reguladores externos.
Quando você especifica a opção AUTO ON ou AUTO OFF ao usar a instrução CREATE MODEL, após a conclusão do trabalho de treinamento do modelo, o SageMaker AI cria a saída da explicação. É possível usar a função EXPLAIN_MODEL para consultar o relatório de explicabilidade em formato JSON. Para obter mais informações, consulte Funções de machine learning.
Métricas de probabilidade do Amazon Redshift ML
Em problemas de aprendizado supervisionado, os rótulos de classes são resultados de previsões que usam os dados de entrada. Por exemplo, se você está usando um modelo para prever se um cliente se inscreveria novamente em um serviço de streaming, possíveis rótulos são “provável” e “pouco provável”. O Redshift ML oferece o recurso de métricas de probabilidade, que atribuem uma probabilidade a cada rótulo para indicar sua probabilidade. Isso ajuda você a tomar decisões mais informadas com base nos resultados previstos. No Amazon Redshift ML, as métricas de probabilidade estão disponíveis ao criar modelos AUTO ON com um tipo de problema de classificação binária ou classificação multiclasse. Se você omitir o parâmetro AUTO ON, o Redshift ML assumirá que o modelo deve ter AUTO ON.
Criar o modelo
Ao criar um modelo, o Amazon Redshift detecta automaticamente o tipo de modelo e o tipo de problema. Se for um problema de classificação, o Redshift criará automaticamente uma segunda função de inferência que você poderá usar para gerar probabilidades relativas a cada rótulo. O nome dessa segunda função de inferência é o nome da função de inferência especificada seguido pela string _probabilities
. Por exemplo, se você nomear sua função de inferência como customer_churn_predict
, o nome da segunda função de inferência será customer_churn_predict_probabilities
. Depois, você pode consultar essa função para obter as probabilidades de cada rótulo.
CREATE MODEL customer_churn_model FROM customer_activity PROBLEM_TYPE BINARY_CLASSIFICATION TARGET churn FUNCTION customer_churn_predict IAM_ROLE {default} AUTO ON SETTINGS ( S3_BUCKET 'amzn-s3-demo-bucket'
Obter probabilidades
Quando a função de probabilidade estiver pronta, a execução do comando retornará um tipo SUPER com matrizes das probabilidades retornadas e seus rótulos associados. Por exemplo, o resultado "probabilities" : [0.7, 0.3], "labels" : ["False.", "True."]
significa que o rótulo False tem uma probabilidade de 0,7 e o rótulo True tem uma probabilidade de 0,3.
SELECT customer_churn_predict_probabilities(Account_length, Area_code, VMail_message, Day_mins, Day_calls, Day_charge,Eve_mins, Eve_calls, Eve_charge, Night_mins, Night_calls, Night_charge,Intl_mins, Intl_calls, Intl_charge, Cust_serv_calls) FROM customer_activity; customer_churn_predict_probabilities -------------------- {"probabilities" : [0.7, 0.3], "labels" : ["False.", "True."]} {"probabilities" : [0.8, 0.2], "labels" : ["False.", "True."]} {"probabilities" : [0.75, 0.25], "labels" : ["True.", "False"]}
As matrizes de probabilidades e rótulos são sempre ordenadas em ordem decrescente de probabilidade. Você pode escrever uma consulta para retornar apenas o rótulo previsto com a maior probabilidade desaninhando os resultados retornados de SUPER da função de probabilidade.
SELECT prediction.labels[0], prediction.probabilities[0] FROM (SELECT customer_churn_predict_probabilities(Account_length, Area_code, VMail_message, Day_mins, Day_calls, Day_charge,Eve_mins, Eve_calls, Eve_charge, Night_mins, Night_calls, Night_charge,Intl_mins, Intl_calls, Intl_charge, Cust_serv_calls) AS prediction FROM customer_activity); labels | probabilities -----------+-------------- "False." | 0.7 "False." | 0.8 "True." | 0.75
Para simplificar as consultas, você pode armazenar os resultados da função de previsão em uma tabela.
CREATE TABLE churn_auto_predict_probabilities AS (SELECT customer_churn_predict_probabilities(Account_length, Area_code, VMail_message, Day_mins, Day_calls, Day_charge,Eve_mins, Eve_calls, Eve_charge, Night_mins, Night_calls, Night_charge,Intl_mins, Intl_calls, Intl_charge, Cust_serv_calls) AS prediction FROM customer_activity);
Você pode consultar a tabela com os resultados para retornar somente previsões que tenham uma probabilidade maior que 0,7.
SELECT prediction.labels[0], prediction.probabilities[0] FROM churn_auto_predict_probabilities WHERE prediction.probabilities[0] > 0.7; labels | probabilities -----------+-------------- "False." | 0.8 "True." | 0.75
Usando a notação de índices, você pode obter a probabilidade de um rótulo específico. O exemplo a seguir retorna as probabilidades de todos os rótulos True.
SELECT label, index, p.prediction.probabilities[index] FROM churn_auto_predict_probabilities p, p.prediction.labels AS label AT index WHERE label='True.'; label | index | probabilities ---------+-------+--------------- "True." | 0 | 0.3 "True." | 0 | 0.2 "True." | 0 | 0.75
O exemplo a seguir retorna todas as linhas que têm um rótulo True
com uma probabilidade maior que 0,7, indicando que é provável que o cliente retorne.
SELECT prediction.labels[0], prediction.probabilities[0] FROM churn_auto_predict_probabilities WHERE prediction.probabilities[0] > 0.7 AND prediction.labels[0] = "True."; labels | probabilities -----------+-------------- "True." | 0.75