Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Premiers pas avec Amazon Redshift ML
Amazon Redshift ML permet aux utilisateurs de SQL de créer, d'entraîner et de déployer facilement des modèles de machine learning à l'aide d'instructions SQL familières. Avec Amazon Redshift ML, vous pouvez utiliser les données de votre cluster Redshift pour entraîner des modèles avec Amazon AI. SageMaker Ensuite, les modèles sont localisés et les prédictions peuvent être faites dans une base de données Amazon Redshift. Amazon Redshift ML prend actuellement en charge les algorithmes d'apprentissage automatique suivants : XGBoost (AUTO ON et OFF), perceptron multicouche (AUTO ON), K-Means (AUTO OFF) et Linear Learner.
Rubriques
Cluster et configuration de la mise en place pour l'administration Amazon Redshift ML
Avant de travailler avec Amazon Redshift ML, terminez la configuration du cluster et configurez les autorisations pour utiliser Amazon Redshift ML.
Configuration du cluster pour l'utilisation d'Amazon Redshift ML
Avant de travailler avec Amazon Redshift ML, vous devez remplir les conditions préalables suivantes.
En tant qu'administrateur Amazon Redshift, effectuez la configuration unique suivante pour utiliser les clusters provisionnés par Amazon Redshift. Pour utiliser Amazon Redshift ML avec Amazon Redshift Serverless, consultez Getting started with Amazon Redshift Serverless.
Pour effectuer une configuration de cluster unique pour Amazon Redshift ML
-
Créez un cluster Redshift à l'aide du AWS Management Console ou du AWS Command Line Interface ()AWS CLI. Assurez-vous d'associer la politique AWS Identity and Access Management (IAM) lors de la création du cluster. Pour plus d'informations sur les autorisations requises pour utiliser Amazon Redshift ML avec Amazon SageMaker AI, consultez Autorisations requises pour utiliser Amazon Redshift machine learning (ML)
-
Créez le rôle IAM requis pour utiliser le machine learning Amazon Redshift de l'une des manières suivantes :
-
Pour utiliser l' SageMaker IA avec Amazon Redshift ML, créez un rôle IAM avec des
AmazonS3FullAccess
politiques.AmazonSageMakerFullAccess
Si vous envisagez également de créer des modèles de prévisions, associez également la politiqueAmazonForecastFullAccess
à votre rôle. -
Pour utiliser Amazon Bedrock avec Amazon Redshift ML, créez un rôle
AmazonS3FullAccess
IAM avec des politiques.AmazonBedrockFullAccess
-
Nous vous recommandons de créer un rôle IAM via la console Amazon Redshift avec la politique
AmazonRedshiftAllCommandsFullAccess
disposant des autorisations nécessaires pour exécuter des commandes SQL, telles que CREATE MODEL. Amazon Redshift utilise un mécanisme transparent basé sur une API pour créer des rôles IAM par programme en votre nom. Compte AWS Amazon Redshift associe automatiquement les politiques AWS gérées existantes au rôle IAM. Cette approche signifie que vous pouvez rester dans la console Amazon Redshift et que vous n'avez pas besoin de passer à la console IAM pour créer des rôles. Pour plus d'informations, consultez Création d'un rôle IAM par défaut pour Amazon Redshift.Lorsqu'un rôle IAM est créé comme rôle par défaut pour votre cluster, incluez
redshift
dans le nom de la ressource ou utilisez une balise spécifique à RedShift pour étiqueter ces ressources.Si le routage Amazon VPC amélioré est activé sur votre cluster, vous pouvez utiliser un rôle IAM créé via la console Amazon Redshift. Ce rôle IAM a la politique
AmazonRedshiftAllCommandsFullAccess
attachée et ajoute les autorisations suivantes à la politique. Ces autorisations supplémentaires permettent à Amazon Redshift de créer et de supprimer une Elastic Network Interface (ENI) dans votre compte et de l'associer à des tâches de compilation exécutées sur Amazon ou EC2 Amazon ECS. Cela permet d'accéder aux objets de vos compartiments Amazon S3 uniquement à partir d'un Virtual Private Cloud (VPC) avec un accès Internet bloqué.{ "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": "*" }
Pour utiliser les modèles de fondation Amazon Bedrock, ajoutez la section suivante :
// Required section if you use Bedrock models. { "Effect": "Allow", "Action": "bedrock:InvokeModel", "Resource": [ "arn:aws:bedrock:
<region>
::foundation-model/*" ] } -
Si vous souhaitez créer un rôle IAM avec une politique plus restrictive, vous pouvez utiliser celle qui suit. Vous pouvez également modifier cette politique afin de répondre à vos besoins.
Le compartiment Amazon S3
redshift-downloads/redshift-ml/
est l'emplacement où sont stockées les exemples de données utilisés pour les autres étapes et exemples. Vous pouvez le supprimer si vous n'avez pas besoin de charger des données à partir d'Amazon S3. Ou alors, remplacez-le par d'autres compartiments Amazon S3 que vous utilisez pour charger des données dans Amazon Redshift.Les valeurs
,your-account-id
etyour-role
amzn-s3-demo-bucket
sont celles que vous spécifiez dans le cadre de votre instruction CREATE MODEL.(Facultatif) Utilisez la section AWS KMS clés de l'exemple de politique si vous spécifiez une AWS KMS clé lors de l'utilisation d'Amazon Redshift ML. La valeur
est la clé que vous utilisez dans le cadre de votre instruction 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>
" ] } ] }
-
-
Pour permettre à Amazon Redshift et à SageMaker AI d'assumer le rôle d'interaction avec d'autres services, ajoutez la politique de confiance suivante au rôle IAM.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com", "sagemaker.amazonaws.com", "forecast.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
-
(Facultatif) Créez un compartiment Amazon S3 et une AWS KMS clé. Ils sont destinés à Amazon Redshift pour stocker les données de formation envoyées à Amazon SageMaker AI et recevoir le modèle entraîné depuis Amazon SageMaker AI.
-
(Facultatif) Créez différentes combinaisons de rôles IAM et de compartiments Amazon S3 pour contrôler l'accès à différents groupes d'utilisateurs.
-
(Facultatif) Lorsque vous activez le routage VPC pour votre cluster Redshift, créez un point de terminaison Amazon S3 et un point de terminaison SageMaker AI pour le VPC dans lequel se trouve votre cluster Redshift. Cela permet au trafic de s'exécuter via votre VPC entre des services pendant l'exécution de la commande CREATE MODEL. Pour plus d'informations sur le routage VPC, consultez Routage VPC amélioré dans Amazon Redshift.
Pour plus d'informations sur les autorisations requises pour spécifier un VPC privé pour votre tâche de réglage des hyperparamètres, consultez Autorisations requises pour utiliser Amazon Redshift ML avec Amazon AI. SageMaker
Pour plus d'informations sur la manière d'utiliser l'instruction CREATE MODEL pour commencer à créer des modèles pour différents cas d'utilisation, consultez CREATE MODEL.
Gestion des autorisations et de la propriété
Tout comme pour d'autres objets de base de données, tels que des tables ou des fonctions, Amazon Redshift lie la création et l'utilisation de modèles ML pour accéder aux mécanismes de contrôle. Il existe des autorisations distinctes pour la création d'un modèle exécutant des fonctions de prédiction.
Les exemples suivants illustrent comment Amazon Redshift gère le contrôle d'accès en utilisant deux groupes d'utilisateurs, retention_analyst_grp
(créateur du modèle) et marketing_analyst_grp
(utilisateur du modèle). L'analyste de rétention crée des modèles de machine learning que d'autres groupes d'utilisateurs peuvent utiliser grâce aux autorisations acquises.
Un super-utilisateur peut accorder l'autorisation GRANT USER ou GROUP pour créer des modèles de machine learning à l'aide de l'instruction suivante.
GRANT CREATE MODEL TO GROUP retention_analyst_grp;
Les utilisateurs ou groupes disposant de cette autorisation peuvent créer un modèle dans n'importe quel schéma du cluster si un utilisateur dispose de l'autorisation CREATE habituelle sur le SCHEMA. Le modèle de machine learning fait partie de la hiérarchie du schéma de la même manière que les tables, les vues, les procédures et les fonctions définies par l'utilisateur.
En supposant qu'un schéma demo_ml
existe déjà, accordez l'autorisation aux deux groupes d'utilisateurs sur le schéma comme suit.
GRANT CREATE, USAGE ON SCHEMA demo_ml TO GROUP retention_analyst_grp;
GRANT USAGE ON SCHEMA demo_ml TO GROUP marketing_analyst_grp;
Vous pouvez permettre à d'autres utilisateurs d'utiliser votre fonction d'inférence du machine learning en leur accordant l'autorisation EXECUTE. L'exemple suivant utilise l'autorisation EXECUTE pour accorder au groupe marketing_analyst_grp l'autorisation d'utiliser le modèle.
GRANT EXECUTE ON MODEL demo_ml.customer_churn_auto_model TO GROUP marketing_analyst_grp;
Utilisez l'instruction REVOKE avec CREATE MODEL et EXECUTE pour révoquer ces autorisations auprès d'utilisateurs ou de groupes. Pour plus d'informations sur les instructions de contrôle d'autorisations, consultez GRANT et REVOKE.
Utilisation de l'explicabilité du modèle avec Amazon Redshift ML
Avec l'explicabilité du modèle dans Amazon Redshift ML, vous utilisez des valeurs d'importance des fonctions pour aider à comprendre comment chaque attribut de vos données d'entraînement contribue au résultat prédit.
L'explicabilité du modèle aide à améliorer vos modèles de machine learning (ML) en expliquant les prédictions réalisées par vos modèles. L'explicabilité du modèle vous explique comment les modèles réalisent des prédictions à l'aide d'une approche d'attribution de fonctions.
Amazon Redshift ML intègre l'explicabilité du modèle pour fournir une fonctionnalité d'explication du modèle aux utilisateurs Amazon Redshift ML. Pour plus d'informations sur l'explicabilité des modèles, consultez Qu'est-ce que l'équité et l'explicabilité des modèles pour les prédictions du Machine Learning ? dans le manuel Amazon SageMaker AI Developer Guide.
L'explicabilité du modèle surveille également les inférences produites par les modèles en production, pour la dérive dans l'attribution de fonctions. Elle fournit également les outils nécessaires pour générer des rapports de gouvernance de modèles destinés aux équipes responsables des risques et de la conformité, et aux organismes de réglementation externes.
Lorsque vous spécifiez l'option AUTO ON ou AUTO OFF lorsque vous utilisez l'instruction CREATE MODEL, une fois la tâche d'entraînement du modèle terminée, l' SageMaker IA crée la sortie d'explication. Vous pouvez utiliser la fonction EXPLAIN_MODEL pour interroger le rapport d'explicabilité au format JSON. Pour de plus amples informations, veuillez consulter Solutions de machine learning.
Métriques de probabilité Amazon Redshift ML
Dans les problèmes d'apprentissage supervisé, les étiquettes de classe sont le résultat de prédictions utilisant les données d'entrée. Par exemple, si vous utilisez un modèle pour prédire si un client se réabonnera à un service de streaming, les étiquettes possibles sont probable et peu probable. Redshift ML offre la possibilité d'utiliser des métriques de probabilité, qui attribuent une probabilité à chaque étiquette pour indiquer sa probabilité. Cela vous permet de prendre des décisions plus éclairées en fonction des résultats prévus. Dans Amazon Redshift ML, des métriques de probabilité sont disponibles lors de la création de modèles AUTO ON présentant un type de problème de classification binaire ou de classification multi-classes. Si vous omettez le paramètre AUTO ON, Redshift ML suppose que le modèle doit disposer de la fonction AUTO ON.
Créer le modèle
Lors de la création d'un modèle, Amazon Redshift détecte automatiquement le type de modèle et le type de problème. S'il s'agit d'un problème de classification, Redshift crée automatiquement une deuxième fonction d'inférence que vous pouvez utiliser pour générer des probabilités relatives à chaque étiquette. Le nom de cette deuxième fonction d'inférence est le nom de la fonction d'inférence que vous avez spécifié, suivi de la chaîne _probabilities
. Par exemple, si vous nommez votre fonction d'inférence customer_churn_predict
, le nom de la deuxième fonction d'inférence est customer_churn_predict_probabilities
. Vous pouvez ensuite interroger cette fonction pour obtenir les probabilités de chaque étiquette.
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'
Obtenir des probabilités
Une fois que la fonction de probabilité est prête, l'exécution de la commande renvoie un type SUPER qui contient des tableaux des probabilités renvoyées et leurs étiquettes associées. Par exemple, le résultat "probabilities" : [0.7, 0.3], "labels" : ["False.", "True."]
signifie que l'étiquette False a une probabilité de 0,7 et que l'étiquette True a une probabilité 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"]}
Les tableaux de probabilités et d'étiquettes sont toujours triés en fonction de leurs probabilités par ordre décroissant. Vous pouvez écrire une requête pour renvoyer uniquement l'étiquette prédite présentant la probabilité la plus élevée en désimbriquant les résultats renvoyés par SUPER par la fonction de probabilité.
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
Pour simplifier les requêtes, vous pouvez stocker les résultats de la fonction de prédiction dans une table.
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);
Vous pouvez interroger la table contenant les résultats pour renvoyer uniquement les prédictions dont la probabilité est supérieure à 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
En utilisant la notation d'index, vous pouvez obtenir la probabilité d'une étiquette spécifique. L'exemple suivant renvoie les probabilités de toutes les étiquettes 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
L'exemple suivant renvoie toutes les lignes portant une étiquette True
avec une probabilité supérieure à 0,7, ce qui indique que le client est susceptible de se désister.
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