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 SQL aux utilisateurs de créer, d'entraîner et de déployer facilement des modèles d'apprentissage automatique à l'aide de commandes familièresSQL. Avec Amazon Redshift ML, vous pouvez utiliser les données de votre cluster Redshift pour entraîner des modèles avec Amazon. 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 : XGBoost (AUTOON etOFF) et perceptron multicouche (AUTOON), K-Means () et Linear AUTO OFF 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'attacher 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, consultez Autorisations requises pour utiliser Amazon Redshift machine learning (ML)
-
Créez le IAM rôle requis pour utiliser Amazon Redshift ML de l'une des manières suivantes :
-
Pour l'utiliser SageMaker avec Amazon Redshift ML, créez un IAM rôle avec
AmazonS3FullAccess
desAmazonSageMakerFullAccess
politiques. 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 IAM un rôle et
AmazonS3FullAccess
desAmazonBedrockFullAccess
politiques. -
Nous vous recommandons de créer un IAM rôle via la console Amazon Redshift doté d'une
AmazonRedshiftAllCommandsFullAccess
politique d'autorisation permettant d'exécuter des SQL commandes, telles que. CREATE MODEL Amazon Redshift utilise un mécanisme transparent API pour créer des IAM rôles en votre Compte AWS nom de manière programmatique. Amazon Redshift associe automatiquement les politiques AWS gérées existantes au IAM rôle. Cette approche signifie que vous pouvez rester dans la console Amazon Redshift sans avoir à passer à la IAM console pour créer des rôles. Pour plus d'informations, consultez Création d'un IAM rôle par défaut pour Amazon Redshift.Lorsqu'un IAM rôle est créé par défaut pour votre cluster,
redshift
incluez-le dans le nom de la ressource ou utilisez une balise spécifique à Redshift pour étiqueter ces ressources.Si le VPC routage Amazon amélioré est activé sur votre cluster, vous pouvez utiliser un IAM rôle créé via la console Amazon Redshift. La
AmazonRedshiftAllCommandsFullAccess
politique est attachée à ce IAM rôle et ajoute les autorisations suivantes à la politique. Ces autorisations supplémentaires permettent à Amazon Redshift de créer et de supprimer une interface Elastic Network (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 depuis un cloud privé virtuel (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 IAM rôle avec une politique plus restrictive, vous pouvez utiliser la stratégie suivante. 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.Le
,your-account-id
, etvotre rôle
amzn-s3-demo-bucket
les valeurs sont celles que vous spécifiez dans le cadre de votre CREATE MODEL commande.(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. Le
value est la clé que vous utilisez dans le cadre de votre CREATE MODEL commande.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 autoriser Amazon Redshift et SageMaker assumer le rôle d'interagir avec d'autres services, ajoutez la politique de confiance suivante au IAM rôle.
{ "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 et recevoir le modèle entraîné par Amazon. SageMaker
-
(Facultatif) Créez différentes combinaisons de IAM rôles et de compartiments Amazon S3 pour contrôler l'accès aux différents groupes d'utilisateurs.
-
(Facultatif) Lorsque vous activez le VPC routage pour votre cluster Redshift, créez un point de terminaison Amazon S3 et un point de SageMaker terminaison pour VPC celui dans lequel se trouve votre cluster Redshift. Cela permet au trafic de traverser vos services VPC entre les deux pendant CREATEMODEL. Pour plus d'informations sur le VPC routage, consultez la section VPCRoutage amélioré dans Amazon Redshift.
Pour plus d'informations sur les autorisations requises pour spécifier une valeur privée VPC pour votre tâche de réglage d'hyperparamètres, consultez Autorisations requises pour utiliser Amazon Redshift ML avec Amazon. SageMaker
Pour plus d'informations sur la façon d'utiliser l'CREATEMODELinstruction pour commencer à créer des modèles pour différents cas d'utilisation, consultezCREATE 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 superutilisateur peut GRANT USER ou est GROUP autorisé à créer des modèles d'apprentissage automatique à l'aide de l'instruction suivante.
GRANT CREATE MODEL TO GROUP retention_analyst_grp;
Les utilisateurs ou les 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'CREATEautorisation habituelle sur leSCHEMA. 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;
Pour permettre à d'autres utilisateurs d'utiliser votre fonction d'inférence d'apprentissage automatique, accordez l'EXECUTEautorisation. L'exemple suivant utilise l'EXECUTEautorisation pour accorder au marketing_analyst_grp GROUP l'autorisation d'utiliser le modèle.
GRANT EXECUTE ON MODEL demo_ml.customer_churn_auto_model TO GROUP marketing_analyst_grp;
Utilisez l'REVOKEinstruction avec CREATE MODEL et EXECUTE pour révoquer ces autorisations accordées à des utilisateurs ou à des 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 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'AUTOOFFoption AUTO ON ou que vous utilisez l'CREATEMODELinstruction, une fois la tâche de formation du modèle terminée, la sortie d'explication est SageMaker créée. Vous pouvez utiliser la MODEL fonction EXPLAIN _ pour interroger le rapport d'explicabilité dans un JSON format. 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, les 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 multiclasse. Si vous omettez le paramètre AUTO ON, Redshift ML suppose que le modèle doit avoir AUTO la valeur 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 SUPERtype contenant 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émêlant les résultats SUPER renvoyés 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