Amazon Redshift non supporterà più la creazione di nuovi Python a UDFs partire dal 1° novembre 2025. Se vuoi usare Python UDFs, crea la UDFs data precedente a quella data. Python esistente UDFs continuerà a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Nozioni di base su Amazon Redshift ML
Amazon Redshift ML rende più semplice agli utenti SQL la creazione, l'addestramento e l'implementazione dei modelli di machine learning grazie all'uso di comandi SQL familiari. Con Amazon Redshift ML, puoi utilizzare i dati nel tuo cluster Redshift per addestrare modelli con Amazon AI. SageMaker Successivamente i modelli vengono localizzati ed è possibile fare le previsioni all'interno di un database Amazon Redshift. Amazon Redshift ML attualmente supporta gli algoritmi di apprendimento automatico: XGBoost (AUTO ON e OFF) e perceptron multistrato (AUTO ON), K-Means (AUTO OFF) e Linear Learner.
Argomenti
Configurare il cluster e le impostazioni di Amazon Redshift ML
Prima di lavorare con Amazon Redshift ML, completare la configurazione del cluster e configurare le autorizzazioni per l'utilizzo di Amazon Redshift ML.
Configurazione del cluster per l'utilizzo di Amazon Redshift ML
Prima di lavorare con Amazon Redshift ML, completare i prerequisiti seguenti.
In qualità di amministratore di Amazon Redshift, esegui la seguente configurazione una tantum per utilizzare i cluster con provisioning di Amazon Redshift. Per usare Amazon Redshift ML con Amazon Redshift Serverless, consulta la pagina Guida introduttiva ad Amazon Redshift Serverless.
Per eseguire una configurazione del cluster una tantum per Amazon Redshift ML
-
Crea un cluster Redshift utilizzando AWS Management Console o il AWS Command Line Interface ()AWS CLI. Assicurati di allegare la policy AWS Identity and Access Management (IAM) durante la creazione del cluster. Per ulteriori informazioni sulle autorizzazioni necessarie per utilizzare Amazon Redshift ML con SageMaker Amazon AI, consulta Autorizzazioni necessarie per utilizzare Amazon Redshift machine learning (ML)
-
Crea il ruolo IAM richiesto per l'utilizzo di Amazon Redshift ML in uno dei modi seguenti:
-
Per utilizzare l' SageMaker intelligenza artificiale con Amazon Redshift ML, crea un ruolo IAM con policy
AmazonS3FullAccess
eAmazonSageMakerFullAccess
policy. Se intendi creare anche modelli di previsione, collega la policyAmazonForecastFullAccess
anche al tuo ruolo. -
Per utilizzare Amazon Bedrock con Amazon Redshift ML, crea un ruolo IAM
AmazonS3FullAccess
conAmazonBedrockFullAccess
policy. -
È consigliabile creare un ruolo IAM tramite la console Amazon Redshift che dispone della policy
AmazonRedshiftAllCommandsFullAccess
con autorizzazioni per eseguire comandi SQL, ad esempio CREATE MODEL. Amazon Redshift utilizza un meccanismo semplice basato su API per creare in modo programmatico ruoli IAM per tuo conto. Account AWS Amazon Redshift associa automaticamente le policy AWS gestite esistenti al ruolo IAM. Questo approccio significa che puoi rimanere all'interno della console Amazon Redshift e non devi passare alla console IAM per la creazione di ruoli. Per ulteriori informazioni, consultare Creazione di un ruolo IAM come predefinito per Amazon Redshift.Quando viene creato un ruolo IAM come predefinito per il cluster, includere
redshift
come parte del nome della risorsa o utilizzare un tag specifico di RedShift per taggare tali risorse.Se il tuo cluster ha attivato il routing Amazon VPC avanzato, puoi utilizzare un ruolo IAM creato tramite la console Amazon Redshift. Questo ruolo IAM ha la policy
AmazonRedshiftAllCommandsFullAccess
allegata e aggiunge le seguenti autorizzazioni alla policy. Queste autorizzazioni aggiuntive consentono ad Amazon Redshift di creare ed eliminare un'interfaccia di rete elastica (ENI) nel tuo account e collegarla alle attività di compilazione in esecuzione su Amazon EC2 o Amazon ECS. In questo modo è possibile accedere agli oggetti presenti nei bucket Amazon S3 solo dall'interno di un cloud privato virtuale (VPC) con l'accesso a Internet bloccato.{ "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": "*" }
Per utilizzare i modelli Amazon Bedrock Foundation, aggiungi la seguente sezione:
// Required section if you use Bedrock models. { "Effect": "Allow", "Action": "bedrock:InvokeModel", "Resource": [ "arn:aws:bedrock:
<region>
::foundation-model/*" ] } -
Se si desidera creare un ruolo IAM con una policy più restrittiva, è possibile utilizzare la policy seguente. È inoltre possibile modificare questa policy per soddisfare le esigenze specifiche.
Il bucket Amazon S3
redshift-downloads/redshift-ml/
è la posizione in cui vengono memorizzati i dati di esempio utilizzati per altri passaggi ed esempi. È possibile rimuoverlo se non è necessario caricare dati da Amazon S3. In alternativa, sostituirlo con altri bucket Amazon S3 utilizzati per caricare i dati in Amazon Redshift.I valori
,your-account-id
eyour-role
amzn-s3-demo-bucket
sono quelli specificati dall'utente come parte del comando CREATE MODEL.(Facoltativo) Utilizza la sezione AWS KMS keys della policy di esempio se specifichi una AWS KMS chiave durante l'utilizzo di Amazon Redshift ML. Il valore
è la chiave che si utilizza come parte del comando CREATE MODEL.your-kms-key
-
-
Per consentire ad Amazon Redshift e SageMaker AI di assumere il ruolo di interagire con altri servizi, aggiungi la seguente policy di fiducia al ruolo IAM.
-
(Facoltativo) Crea un bucket Amazon S3 e una chiave. AWS KMS Questi possono essere utilizzati da Amazon Redshift per archiviare i dati di formazione inviati ad Amazon SageMaker AI e ricevere il modello addestrato da Amazon SageMaker AI.
-
(Facoltativo) Creare diverse combinazioni di ruoli IAM e bucket Amazon S3 per controllare l'accesso a diversi gruppi di utenti.
-
(Facoltativo) Quando attivi il routing VPC per il tuo cluster Redshift, crea quanto segue:
Un endpoint Amazon S3 o il VPC in cui si trova il cluster Redshift
Un endpoint SageMaker AI o un endpoint VPC Amazon Bedrock
Ciò fa sì che il traffico possa essere eseguito attraverso il VPC tra i servizi durante CREATE MODEL. Per ulteriori informazioni sul routing VPC, consultare Routing VPC avanzato in Amazon Redshift.
Per ulteriori informazioni sulle autorizzazioni necessarie per specificare un VPC privato per il processo di ottimizzazione degli iperparametri, consulta Autorizzazioni necessarie per utilizzare Amazon Redshift ML con Amazon AI. SageMaker
Nota
Le chiamate di inferenza effettuate a modelli di SageMaker intelligenza artificiale remoti non passano attraverso il tuo VPC.
Per informazioni su come utilizzare l'istruzione CREATE MODEL per iniziare a creare modelli per diversi casi d'uso, consultare CREATE MODEL.
Gestione delle autorizzazioni e della proprietà
Proprio come per altri oggetti di database, come tabelle o funzioni, Amazon Redshift associa la creazione e l'utilizzo di modelli ML per accedere ai meccanismi di controllo. Esistono autorizzazioni separate per la creazione di un modello che esegue funzioni di previsione.
Gli esempi seguenti utilizzano due gruppi di utenti, retention_analyst_grp
(creatore del modello) e marketing_analyst_grp
(utente del modello) che illustrano come Amazon Redshift gestisce il controllo degli accessi. L'analista di conservazione crea modelli di machine learning che altri utenti possono utilizzare tramite autorizzazioni acquisite.
Un utente con privilegi avanzati può concedere autorizzazioni USER o GROUP per creare modelli di machine learning utilizzando la seguente istruzione.
GRANT CREATE MODEL TO GROUP retention_analyst_grp;
Gli utenti o i gruppi con questa autorizzazione possono creare un modello in qualsiasi schema del cluster se un utente dispone dell'autorizzazione CREATE per SCHEMA. Il modello di machine learning fa parte della gerarchia dello schema in modo simile a tabelle, viste, procedure e funzioni definite dall'utente.
Supponendo che esista già uno schema demo_ml
, concedere ai due gruppi di utenti l'autorizzazione per lo schema come indicato di seguito.
GRANT CREATE, USAGE ON SCHEMA demo_ml TO GROUP retention_analyst_grp;
GRANT USAGE ON SCHEMA demo_ml TO GROUP marketing_analyst_grp;
Per consentire ad altri utenti di utilizzare la funzione di inferenza di machine learning, concedere l'autorizzazione EXECUTE. Nell'esempio seguente viene utilizzata l'autorizzazione EXECUTE per concedere a marketing_analyst_grp GROUP l'autorizzazione per l'uso del modello.
GRANT EXECUTE ON MODEL demo_ml.customer_churn_auto_model TO GROUP marketing_analyst_grp;
Utilizzare l'istruzione REVOKE con CREATE MODEL ed EXECUTE per revocare tali autorizzazioni da utenti o gruppi. Per ulteriori informazioni sui comandi di controllo delle autorizzazioni, consultare GRANT e REVOKE.
Utilizzo della spiegabilità del modello con Amazon Redshift ML
Con la spiegabili del modello in Amazon Redshift ML, utilizzi i valori di importanza delle funzionalità per capire in che modo ciascun attributo nei dati di formazione contribuisce al risultato previsto.
La spiegabilità del modello aiuta a migliorare i modelli di Machine Learning (ML) grazie all'illustrazione delle previsioni effettuate dai modelli. La spiegabilità del modello aiuta a spiegare come questi modelli fanno previsioni utilizzando un approccio di attribuzione delle funzionalità.
Amazon Redshift ML incorpora la spiegabilità del modello per fornire funzionalità di spiegazione del modello agli utenti di Amazon Redshift ML. Per ulteriori informazioni sulla spiegabilità dei modelli, consulta What Is Fairness and Model Explainability for Machine Learning Predictions? nella Amazon SageMaker AI Developer Guide.
La spiegabilità del modello monitora anche le inferenze effettuate dai modelli in produzione per la deriva dell'attribuzione delle funzionalità. Fornisce inoltre strumenti per aiutarti a generare report di governance dei modelli che puoi utilizzare per informare i team di rischio e conformità e le autorità di regolamentazione esterne.
Quando si specifica l'opzione AUTO ON o AUTO OFF quando si utilizza l'istruzione CREATE MODEL, al termine del processo di formazione del modello, l' SageMaker IA crea l'output esplicativo. È possibile utilizzare la funzione EXPLAIN_MODEL per interrogare il report di spiegabilità in formato JSON. Per ulteriori informazioni, consulta Funzioni di machine learning.
Parametri di probabilità di Amazon Redshift ML
Nei problemi di apprendimento supervisionato, le etichette delle classi sono il risultato di previsioni che utilizzano i dati di input. Ad esempio, se utilizzi un modello per prevedere se un cliente si iscriverà nuovamente a un servizio di streaming, le possibili etichette sono "probabile" e "improbabile". Redshift ML offre parametri di probabilità che assegnano a ciascuna etichetta un valore di probabilità. Questo aiuta a prendere decisioni migliori sulla base dei risultati previsti. In Amazon Redshift ML, i parametri di probabilità sono disponibili quando si creano modelli AUTO ON con un tipo di problema di classificazione binaria o multiclasse. Se si omette il parametro AUTO ON, Redshift ML presuppone che il modello debba essere impostato su AUTO ON.
Creazione del modello
Durante la creazione di un modello, Amazon Redshift rileva automaticamente il tipo di modello e il tipo di problema. Se si tratta di un problema di classificazione, Redshift crea automaticamente una seconda funzione di inferenza che è possibile utilizzare per generare il valore di probabilità di ciascuna etichetta. Il nome di questa seconda funzione di inferenza è il nome della prima funzione di inferenza seguito dalla stringa _probabilities
. Ad esempio, se la prima funzione di inferenza è stata denominata customer_churn_predict
, allora il nome della seconda funzione di inferenza sarà customer_churn_predict_probabilities
. Questa funzione può essere quindi utilizzata per eseguire query sulle probabilità di ciascuna etichetta.
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'
Come generare le probabilità
Una volta che la funzione di generazione delle probabilità è pronta, l'esecuzione del comando restituisce un tipo SUPER che contiene array delle probabilità restituite e le relative etichette associate. Ad esempio, il risultato "probabilities" : [0.7, 0.3], "labels" : ["False.", "True."]
indica che l'etichetta False ha una probabilità di 0,7, mentre l'etichetta True ha una probabilità di 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"]}
Gli array delle probabilità e delle etichette sono sempre mostrati in base al loro valore di probabilità in ordine decrescente. È possibile scrivere una query per ottenere solo l'etichetta prevista con la probabilità più alta separando i risultati SUPER restituiti dalla funzione di generazione delle 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
Per semplificare le query, è possibile memorizzare i risultati della funzione di previsione in una tabella.
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);
È possibile eseguire query sulla tabella con i risultati per ottenere solo previsioni con una probabilità superiore 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
Utilizzando una notazione dell'indice è possibile ottenere la probabilità di un'etichetta specifica. L'esempio seguente restituisce le probabilità di tutte le etichette 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'esempio seguente restituisce tutte le righe che includono un'etichetta True
con una probabilità maggiore di 0,7, indicante il probabile abbandono del cliente.
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