Getting started with Amazon Redshift ML (Introducción a Amazon Redshift ML) - Amazon Redshift

Getting started with Amazon Redshift ML (Introducción a Amazon Redshift ML)

Amazon Redshift ML permite a los usuarios de SQL crear, formar e implementar con más facilidad modelos de machine learning mediante comandos SQL conocidos. Con Amazon Redshift ML, puede utilizar los datos en el clúster de Redshift para entrenar modelos con Amazon SageMaker. Luego, los modelos se localizan y se pueden generar predicciones en una base de datos de Amazon Redshift. Amazon Redshift ML admite actualmente los algoritmos de machine learning: XGBoost (AUTO ON y OFF) y perceptron multicapa (AUTO ON), K-Means (AUTO OFF) y Linear Learner.

Agrupe y ajuste la configuración para la administración de Amazon Redshift ML

Antes de trabajar con Amazon Redshift ML, complete la configuración del clúster y establezca los permisos para utilizar este servicio.

Configuración del clúster para utilizar Amazon Redshift ML

Antes de trabajar con Amazon Redshift ML, complete los siguientes requisitos previos.

Como administrador de Amazon Redshift, complete la siguiente configuración única para utilizar clústeres aprovisionados de Amazon Redshift. Para utilizar Amazon Redshift ML con Amazon Redshift sin servidor, consulte Introducción a Amazon Redshift sin servidor.

Para realizar la configuración de clúster por única ver para Amazon Redshift ML

  1. Cree un clúster de Redshift con la AWS Management Console o la AWS Command Line Interface (AWS CLI). Asegúrese de adjuntar la política de AWS Identity and Access Management (IAM) cuando crea el clúster. Para obtener más información sobre los permisos necesarios para utilizar Amazon Redshift ML con Amazon SageMaker, consulte Permisos necesarios para utilizar machine learning (ML) de Amazon Redshift

  2. Cree el rol de IAM necesario para utilizar Amazon Redshift ML de una de las siguientes formas:

    • Para usar SageMaker con Amazon Redshift ML, cree un rol de IAM con las políticas AmazonS3FullAccess y AmazonSageMakerFullAccess. Si planea crear también modelos de previsión, adjunte también la política AmazonForecastFullAccess al rol.

    • Para usar Amazon Bedrock con Amazon Redshift ML, cree un rol de IAM con las políticas AmazonS3FullAccess y AmazonBedrockFullAccess.

    • Le recomendamos que cree un rol de IAM a través de la consola de Amazon Redshift que tiene la política de AmazonRedshiftAllCommandsFullAccess con permisos para ejecutar comandos SQL, como CREATE MODEL. Amazon Redshift utiliza un mecanismo fluido basado en la API para crear roles de IAM mediante programación en su Cuenta de AWS a su nombre. Amazon Redshift adjunta automáticamente políticas administradas existentes de AWS al rol de IAM. Este enfoque significa que puede permanecer dentro de la consola de Amazon Redshift y no tiene que cambiar a la consola de IAM para crear roles. Para obtener más información, consulte Creación de un rol de IAM como predeterminado para Amazon Redshift.

      Cuando se crea un rol de IAM como predeterminado para su clúster, incluya redshift como parte del nombre del recurso o utilice una etiqueta específica de RedShift para etiquetar esos recursos.

      Si su clúster tiene el enrutamiento mejorado de Amazon VPC activado, puede utilizar un rol de IAM creado a través de la consola de Amazon Redshift. Este rol de IAM tiene adjunta la política de AmazonRedshiftAllCommandsFullAccess y agrega los siguientes permisos a la política. Estos permisos adicionales permiten que Amazon Redshift cree y elimine una interfaz de red elástica (ENI) de su cuenta y la adjunte a tareas de compilación que se ejecutan en Amazon EC2 o Amazon ECS. De este modo, permite que se acceda a los objetos en los bucketS de Amazon S3 solo desde una nube virtual privada (VPC) con acceso a la 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 los modelos fundacionales de Amazon Bedrock, agregue la siguiente sección:

      // Required section if you use Bedrock models. { "Effect": "Allow", "Action": "bedrock:InvokeModel", "Resource": [ "arn:aws:bedrock:<region>::foundation-model/*" ] }
    • Si desea crear un rol de IAM que tenga una política más restrictiva, puede emplear la siguiente política. Asimismo, puede modificarla para que se adapte a sus necesidades.

      El bucket redshift-downloads/redshift-ml/ de Amazon S3 es el lugar donde se almacenan los datos de muestra utilizados en otros pasos y ejemplos. Puede quitarlo si no necesita cargar datos de Amazon S3. O bien, puede reemplazarlo con otros buckets de Amazon S3 que utilice para cargar datos en Amazon Redshift.

      Los valores your-account-id, your-role y amzn-s3-demo-bucket son los que se especifican como parte del comando CREATE MODEL.

      (Opcional) Utilice la sección de claves de AWS KMS que corresponde a la política de muestra si especifica una clave de AWS KMS mientras utiliza Amazon Redshift ML. El valor your-kms-key es la clave que se utiliza como parte del comando CREATE MODEL.

      { "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>" ] } ] }
  3. Para permitir que Amazon Redshift y SageMaker asuman el rol para interactuar con otros servicios, agregue la siguiente política de confianza al rol de IAM.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com", "sagemaker.amazonaws.com", "forecast.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  4. (Opcional) Cree un bucket de Amazon S3 y una clave AWS KMS. Estos son para que Amazon Redshift los utilice para almacenar los datos de formación enviados a Amazon SageMaker y reciba el modelo formado de Amazon SageMaker.

  5. (Opcional) Cree diferentes combinaciones de roles de IAM y buckets de Amazon S3 que permitan controlar el acceso a diferentes grupos de usuarios.

  6. (Opcional) Cuando active el enrutamiento de la VPC en su clúster de Redshift, cree un punto de conexión de Amazon S3 y otro de SageMaker para la VPC en la que se encuentra su clúster de Redshift. Esto posibilita que el tráfico pase por la VPC entre servicios durante el proceso CREATE MODEL. Para obtener más información sobre el enrutamiento de la VPC, consulte Enrutamiento de VPC mejorado en Amazon Redshift.

    Para obtener más información sobre los permisos necesarios para especificar una VPC privada para el trabajo de ajuste de hiperparámetros, consulte Permisos necesarios para utilizar Amazon Redshift ML con Amazon SageMaker.

Para obtener información sobre cómo utilizar la instrucción CREATE MODEL con objeto de comenzar a crear modelos para diferentes casos de uso, consulte CREATE MODEL.

Administración de permisos y propiedad

Al igual que con otros objetos de base de datos, como tablas o funciones, Amazon Redshift vincula la creación y el uso de modelos de ML para acceder a los mecanismos de control. Para crear un modelo que ejecute funciones de predicción, se dispone de distintos permisos.

En los siguientes ejemplos, se utilizan dos grupos de usuarios, retention_analyst_grp (creador del modelo) y marketing_analyst_grp (usuario del modelo) para demostrar cómo Amazon Redshift administra el control de acceso. El analista de retención crea modelos de machine learning que el otro conjunto de usuarios puede emplear gracias a los permisos obtenidos.

Un superusuario puede utilizar el permiso GRANT USER o GROUP para crear modelos de machine learning con la siguiente instrucción.

GRANT CREATE MODEL TO GROUP retention_analyst_grp;

Los usuarios o los grupos que tengan este permiso pueden crear un modelo en cualquier esquema del clúster siempre que el usuario cuente con el permiso habitual CREATE en el SCHEMA. El modelo de machine learning forma parte de la jerarquía de esquemas del mismo modo que las tablas, las vistas, los procedimientos y las funciones definidas por el usuario.

En el supuesto de que ya exista un esquema demo_ml, conceda a los dos grupos de usuarios el permiso correspondiente al esquema de la siguiente manera.

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 otros usuarios utilicen la función de inferencia de machine learning, conceda el permiso EXECUTE. En el siguiente ejemplo, se utiliza el permiso EXECUTE para conceder al GRUPO marketing_analyst_grp el permiso de usar el modelo.

GRANT EXECUTE ON MODEL demo_ml.customer_churn_auto_model TO GROUP marketing_analyst_grp;

Utilice la instrucción REVOKE con CREATE MODEL y EXECUTE para revocar esos permisos que se habían otorgado a los usuarios o los grupos. Para obtener más información sobre comandos de control de permisos, consulte GRANT y REVOKE.

Uso de la explicabilidad del modelo con Amazon Redshift ML

Con la explicabilidad del modelo en Amazon Redshift (ML), utiliza valores de importancia de características para ayudar a comprender cómo contribuye cada atributo de los datos de formación al resultado previsto.

La explicabilidad del modelo ayuda a mejorar los modelos de machine learning (ML) al explicar las predicciones que hacen los modelos. La explicabilidad del modelo ayuda a explicar cómo estos modelos hacen predicciones utilizando un enfoque de atribución de características.

Amazon Redshift ML incorpora la explicabilidad del modelo para proporcionar la funcionalidad de explicación del modelo a los usuarios de Amazon Redshift ML. Para obtener más información sobre el modelo de explicabilidad, consulte ¿Qué es la equidad y la explicabilidad del modelo para las predicciones de Machine Learning? en la Guía para desarrolladores de Amazon SageMaker.

La explicabilidad del modelo también monitorea las inferencias que hacen los modelos en producción para la desviación de la atribución de características. También proporciona herramientas para ayudarlo a generar informes de gobernanza de modelos que puede utilizar para informar a los equipos de riesgo y conformidad, así como a los reguladores externos.

Cuando especifica la opción AUTO ON o AUTO OFF al utilizar la instrucción CREATE MODEL, una vez finalizado el trabajo de formación de modelos, SageMaker crea la salida de la explicación. Puede utilizar la función EXPLAIN_MODEL para consultar el informe de explicabilidad en formato JSON. Para obtener más información, consulte Funciones de machine learning..

Métricas de probabilidad de Amazon Redshift ML

En los problemas de aprendizaje supervisado, las etiquetas de clase son el resultado de predicciones que utilizan los datos de entrada. Por ejemplo, si utiliza un modelo para predecir si un cliente volvería a suscribirse a un servicio de streaming, las posibles etiquetas son “probable” e “improbable”. Redshift ML proporciona la capacidad de las métricas de probabilidad, que asignan una probabilidad a cada etiqueta para indicar su probabilidad. Esto le ayuda a tomar decisiones más informadas en función de los resultados previstos. En Amazon Redshift ML, las métricas de probabilidad están disponibles al crear modelos AUTO ON con un tipo de problema de clasificación binaria o clasificación multiclase. Si omite el parámetro AUTO ON, Redshift ML asume que el modelo debe tener AUTO ON.

Creación del modelo

Al crear un modelo, Amazon Redshift detecta automáticamente el tipo de modelo y el tipo de problema. Si se trata de un problema de clasificación, Redshift crea automáticamente una segunda función de inferencia que puede utilizar para generar probabilidades en relación con cada etiqueta. El nombre de esta segunda función de inferencia es el nombre de la función de inferencia especificada seguido de la cadena _probabilities. Por ejemplo, si asigna a la función de inferencia el nombre customer_churn_predict, el nombre de la segunda función de inferencia es customer_churn_predict_probabilities. A continuación, puede consultar esta función para obtener las probabilidades de cada etiqueta.

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'

Obtención de probabilidades

Una vez que la función de probabilidad esté lista, la ejecución del comando devuelve un tipo SUPER que contiene matrices de las probabilidades devueltas y sus etiquetas asociadas. Por ejemplo, el resultado "probabilities" : [0.7, 0.3], "labels" : ["False.", "True."] significa que la etiqueta False tiene una probabilidad de 0,7 y la etiqueta True tiene una probabilidad 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"]}

Las matrices de probabilidades y etiquetas siempre se ordenan por sus probabilidades en orden descendente. Puede escribir una consulta para que devuelva solo la etiqueta predicha con la probabilidad más alta mediante la anulación de la anidación de los resultados SUPER devueltos de la función de probabilidad.

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 las consultas, puede almacenar los resultados de la función de predicción en una tabla.

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);

Puede consultar la tabla con los resultados para devolver solo las predicciones que tengan una probabilidad superior a 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

Mediante la notación de índice, puede obtener la probabilidad de una etiqueta específica. En el ejemplo siguiente se devuelven las probabilidades de todas las etiquetas 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

En el siguiente ejemplo se devuelven todas las filas que tienen una etiqueta True con una probabilidad superior a 0,7, lo que indica que es probable que el cliente abandone.

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