Pipeline di Amazon SageMaker consente ai data scientist e agli ingegneri del machine learning (ML) di automatizzare i flussi di lavoro di formazione, aiutandoti a creare un processo ripetibile per orchestrare le fasi di sviluppo del modello per una sperimentazione rapida e la riqualificazione del modello. Puoi automatizzare l'intero flusso di lavoro di creazione del modello, inclusa la preparazione dei dati, la progettazione delle funzionalità, l'addestramento del modello, l'ottimizzazione e la convalida del modello, nonché catalogarlo nel registro del modello. È possibile configurare le pipeline in modo che vengano eseguite automaticamente a intervalli regolari o quando vengono attivati determinati eventi oppure è possibile eseguirle manualmente in base alle esigenze.
In questo post evidenziamo alcuni dei miglioramenti apportati a Amazon Sage Maker SDK e introducono nuove funzionalità di Amazon SageMaker Pipelines che semplificano la creazione e l'addestramento di modelli ML per i professionisti del machine learning.
Pipelines continua a innovare la propria esperienza di sviluppo e, con queste recenti versioni, ora puoi utilizzare il servizio in modo più personalizzato:
- 2.99.0, 2.101.1, 2.102.0, 2.104.0 – Documentazione aggiornata su
PipelineVariable
utilizzo per stimatore, processore, sintonizzatore, trasformatore e classi base del modello, modelli Amazon e modelli framework. Verranno apportate ulteriori modifiche alle versioni più recenti dell'SDK per supportare tutte le sottoclassi di stimatori e processori. - 2.90.0 - Disponibilità di ModelloStep per le attività di creazione e registrazione delle risorse del modello integrato.
- 2.88.2 - Disponibilità di Pipeline Session per l'interazione gestita con entità e risorse SageMaker.
- 2.88.2 – Compatibilità delle sottoclassi per fasi di lavoro della pipeline del flusso di lavoro in questo modo puoi creare astrazioni di processi e configurare ed eseguire processi di elaborazione, formazione, trasformazione e ottimizzazione come faresti senza una pipeline.
- 2.76.0 - Disponibilità di FailStep per arrestare in modo condizionale una pipeline con uno stato di errore.
In questo post ti guideremo attraverso un flusso di lavoro utilizzando un set di dati di esempio con particolare attenzione alla creazione e alla distribuzione del modello per dimostrare come implementare le nuove funzionalità di Pipelines. Alla fine, dovresti disporre di informazioni sufficienti per utilizzare con successo queste funzionalità più recenti e semplificare i carichi di lavoro ML.
Panoramica delle funzionalità
Pipelines offre le seguenti nuove funzionalità:
- Annotazione della variabile pipeline – Alcuni parametri del metodo accettano più tipi di input, inclusi
PipelineVariables
ed è stata aggiunta ulteriore documentazione per chiarire dovePipelineVariables
sono supportati sia nell'ultima versione stabile della documentazione dell'SDK di SageMaker che nella firma init delle funzioni. Ad esempio, nel seguente stimatore TensorFlow, la firma init ora lo mostramodel_dir
edimage_uri
supportoPipelineVariables
, mentre gli altri parametri no. Per ulteriori informazioni, fare riferimento a Stimatore del flusso tensoriale.- Prima:
- Dopo:
- Sessione della pipeline - Pipeline Session è un nuovo concetto introdotto per portare unità nell'SDK di SageMaker e introduce l'inizializzazione lenta delle risorse della pipeline (le chiamate di esecuzione vengono acquisite ma non eseguite finché la pipeline non viene creata ed eseguita). IL
PipelineSession
contesto eredita ilSageMakerSession
e implementa metodi convenienti per interagire con altre entità e risorse SageMaker, come processi di formazione, endpoint e set di dati di input archiviati in Servizio di archiviazione semplice Amazon (Amazon S3). - Compatibilità delle sottoclassi con le fasi di lavoro della pipeline del flusso di lavoro – Ora puoi creare astrazioni di lavoro e configurare ed eseguire lavori di elaborazione, formazione, trasformazione e ottimizzazione come faresti senza una pipeline.
- Ad esempio, creando una fase di elaborazione con
SKLearnProcessor
precedentemente richiesto quanto segue: - Come vediamo nel codice precedente,
ProcessingStep
deve eseguire fondamentalmente la stessa logica di preelaborazione di.run
, semplicemente senza avviare la chiamata API per avviare il lavoro. Ma con la compatibilità delle sottoclassi ora abilitata con le fasi di lavoro della pipeline del flusso di lavoro, dichiariamo il filestep_args
argomento che accetta la logica di preelaborazione con .run in modo da poter creare un'astrazione del lavoro e configurarla come la utilizzeresti senza Pipelines. Passiamo anche nelpipeline_session
, Che è unPipelineSession
oggetto, invece disagemaker_session
per assicurarsi che le chiamate di esecuzione vengano acquisite ma non chiamate finché la pipeline non viene creata ed eseguita. Vedere il seguente codice:
- Ad esempio, creando una fase di elaborazione con
- Fase del modello (un approccio semplificato con fasi di creazione e registrazione del modello) –Pipelines offre due tipi di passaggi per l'integrazione con i modelli SageMaker:
CreateModelStep
edRegisterModel
. Ora puoi ottenere entrambi utilizzando solo il fileModelStep
tipo. Si noti che aPipelineSession
è necessario per raggiungere questo obiettivo. Ciò comporta somiglianze tra i passaggi della pipeline e l'SDK.- Prima:
-
- Dopo:
- Fail step (arresto condizionale della corsa della pipeline) -
FailStep
consente di arrestare una pipeline con uno stato di errore se viene soddisfatta una condizione, ad esempio se il punteggio del modello è inferiore a una determinata soglia.
Panoramica della soluzione
In questa soluzione, il punto di ingresso è il Amazon Sage Maker Studio ambiente di sviluppo integrato (IDE) per una sperimentazione rapida. Studio offre un ambiente per gestire l'esperienza Pipelines end-to-end. Con Studio puoi ignorare il file Console di gestione AWS per la gestione dell’intero flusso di lavoro. Per ulteriori informazioni sulla gestione delle pipeline da Studio, fare riferimento a Visualizza, traccia ed esegui pipeline SageMaker in SageMaker Studio.
Il diagramma seguente illustra l'architettura di alto livello del flusso di lavoro ML con i diversi passaggi per addestrare e generare inferenze utilizzando le nuove funzionalità.
La pipeline comprende i seguenti passaggi:
- Preelabora i dati per creare le funzionalità richieste e suddividi i dati in set di dati di training, convalida e test.
- Crea un lavoro di formazione con il framework SageMaker XGBoost.
- Valutare il modello addestrato utilizzando il set di dati di test.
- Controlla se il punteggio AUC è superiore a una soglia predefinita.
- Se il punteggio AUC è inferiore alla soglia, interrompere l'esecuzione della pipeline e contrassegnarla come non riuscita.
- Se il punteggio AUC è maggiore della soglia, crea un modello SageMaker e registralo nel registro dei modelli SageMaker.
- Applicare la trasformazione batch al set di dati specificato utilizzando il modello creato nel passaggio precedente.
Prerequisiti
Per seguire questo post, è necessario un account AWS con a Dominio Studio.
Pipelines è integrato direttamente con entità e risorse SageMaker, quindi non è necessario interagire con altri servizi AWS. Inoltre, non è necessario gestire alcuna risorsa perché è un servizio completamente gestito, il che significa che crea e gestisce le risorse per te. Per ulteriori informazioni sui vari componenti SageMaker che sono sia API Python autonome sia componenti integrati di Studio, consultare la Pagina del prodotto SageMaker.
Prima di iniziare, installa SageMaker SDK versione >= 2.104.0 e xlrd >=1.0.0 nel notebook Studio utilizzando il seguente snippet di codice:
Flusso di lavoro di machine learning
Per questo post, utilizzerai i seguenti componenti:
- Preparazione dei dati
- Elaborazione di SageMaker – SageMaker Processing è un servizio completamente gestito che ti consente di eseguire trasformazioni di dati personalizzate e ingegneria di funzionalità per carichi di lavoro ML.
- Modellismo
- Formazione e valutazione del modello
- Formazione con un clic – La funzionalità di formazione distribuita di SageMaker. SageMaker fornisce librerie di training distribuite per il parallelismo dei dati e il parallelismo dei modelli. Le librerie sono ottimizzate per l'ambiente di formazione SageMaker, aiutano ad adattare i lavori di formazione distribuiti a SageMaker e migliorano la velocità e la produttività della formazione.
- Esperimenti di SageMaker – Experiments è una funzionalità di SageMaker che ti consente di organizzare, monitorare, confrontare e valutare le tue iterazioni ML.
- Trasformazione batch SageMaker – La trasformazione batch o il punteggio offline è un servizio gestito in SageMaker che ti consente di effettuare previsioni su un set di dati più grande utilizzando i tuoi modelli ML.
- Orchestrazione del flusso di lavoro
Una pipeline SageMaker è una serie di passaggi interconnessi definiti da una definizione di pipeline JSON. Codifica una pipeline utilizzando un grafico aciclico diretto (DAG). Il DAG fornisce informazioni sui requisiti e sulle relazioni tra ciascuna fase della pipeline e la sua struttura è determinata dalle dipendenze dei dati tra le fasi. Queste dipendenze vengono create quando le proprietà dell'output di un passaggio vengono passate come input a un altro passaggio.
Il diagramma seguente illustra i diversi passaggi nella pipeline SageMaker (per un caso d'uso di previsione del tasso di abbandono) in cui le connessioni tra i passaggi vengono dedotte da SageMaker in base agli input e agli output definiti dalle definizioni dei passaggi.
Le sezioni successive illustrano la creazione di ogni passaggio della pipeline e l'esecuzione dell'intera pipeline una volta creata.
Struttura del progetto
Partiamo dalla struttura del progetto:
- /sm-pipelines-end-to-end-esempio – Il nome del progetto
- /dati – I set di dati
- /condutture – I file di codice per i componenti della pipeline
- /fidelizzazione dei clienti
- preprocess.py
- valutare.py
- /fidelizzazione dei clienti
- sagemaker-pipelines-project.ipynb – Un notebook che illustra il flusso di lavoro di modellazione utilizzando le nuove funzionalità di Pipelines
Scarica il dataset
Per seguire questo post, devi scaricare e salvare il set di dati di esempio nella cartella dati all'interno della directory home del progetto, che salva il file in File system elastico Amazon (Amazon EFS) all'interno dell'ambiente Studio.
Costruisci i componenti della pipeline
Ora sei pronto per creare i componenti della pipeline.
Importa istruzioni e dichiara parametri e costanti
Crea un taccuino di Studio chiamato sagemaker-pipelines-project.ipynb
all'interno della directory home del progetto. Immettere il seguente blocco di codice in una cella ed eseguire la cella per configurare gli oggetti client SageMaker e S3, creare PipelineSession
e configura la posizione del bucket S3 utilizzando il bucket predefinito fornito con una sessione SageMaker:
Le pipeline supportano la parametrizzazione, che consente di specificare i parametri di input in fase di esecuzione senza modificare il codice della pipeline. È possibile utilizzare i moduli disponibili sotto il sagemaker.workflow.parameters
modulo, come ParameterInteger
, ParameterFloat
e ParameterString
, per specificare i parametri della pipeline di vari tipi di dati. Eseguire il codice seguente per impostare più parametri di input:
Genera un set di dati batch
Genera il set di dati batch, che utilizzerai successivamente nella fase di trasformazione batch:
Carica i dati in un bucket S3
Carica i set di dati su Amazon S3:
Definire uno script di elaborazione e una fase di elaborazione
In questa fase, prepari uno script Python per eseguire l'ingegneria delle funzionalità, una codifica a caldo e curare la formazione, la convalida e le suddivisioni dei test da utilizzare per la creazione del modello. Esegui il codice seguente per creare lo script di elaborazione:
Successivamente, esegui il seguente blocco di codice per creare un'istanza del processore e il passaggio Pipelines per eseguire lo script di elaborazione. Poiché lo script di elaborazione è scritto in Panda, usi a SKLearn Processor. Gli oleodotti ProcessingStep
La funzione accetta i seguenti argomenti: il processore, le posizioni S3 di input per i set di dati grezzi e le posizioni S3 di output per salvare i set di dati elaborati.
Definire una fase di formazione
Configura l'addestramento del modello utilizzando uno stimatore SageMaker XGBoost e le pipeline TrainingStep
funzione:
Definire lo script di valutazione e la fase di valutazione del modello
Esegui il seguente blocco di codice per valutare il modello una volta addestrato. Questo script incapsula la logica per verificare se il punteggio AUC soddisfa la soglia specificata.
Successivamente, esegui il seguente blocco di codice per creare un'istanza del processore e il passaggio Pipelines per eseguire lo script di valutazione. Poiché lo script di valutazione utilizza il pacchetto XGBoost, usi a ScriptProcessor
insieme all'immagine XGBoost. Le condutture ProcessingStep
La funzione accetta i seguenti argomenti: il processore, le posizioni S3 di input per i set di dati grezzi e le posizioni S3 di output per salvare i set di dati elaborati.
Definire una fase di creazione del modello
Esegui il seguente blocco di codice per creare un modello SageMaker utilizzando il passaggio del modello Pipelines. Questo passaggio utilizza l'output del passaggio di training per creare un pacchetto del modello per la distribuzione. Tieni presente che il valore per l'argomento del tipo di istanza viene passato utilizzando il parametro Pipelines definito in precedenza nel post.
Definire una fase di trasformazione batch
Esegui il seguente blocco di codice per eseguire la trasformazione batch utilizzando il modello addestrato con l'input batch creato nel primo passaggio:
Definire un passaggio del modello di registro
Il codice seguente registra il modello nel registro dei modelli SageMaker utilizzando il passaggio del modello Pipelines:
Definire un passaggio di errore per arrestare la pipeline
Il codice seguente definisce il passaggio Pipelines fail per interrompere l'esecuzione della pipeline con un messaggio di errore se il punteggio AUC non soddisfa la soglia definita:
Definire un passaggio condizionale per verificare il punteggio AUC
Il codice seguente definisce un passaggio di condizione per verificare il punteggio AUC e creare in modo condizionale un modello ed eseguire una trasformazione batch e registrare un modello nel registro del modello o interrompere l'esecuzione della pipeline in uno stato non riuscito:
Costruisci ed esegui la pipeline
Dopo aver definito tutti i passaggi del componente, puoi assemblarli in un oggetto Pipelines. Non è necessario specificare l'ordine della pipeline perché Pipelines deduce automaticamente la sequenza dell'ordine in base alle dipendenze tra i passaggi.
Esegui il seguente codice in una cella del tuo notebook. Se la pipeline esiste già, il codice aggiorna la pipeline. Se la pipeline non esiste, ne crea una nuova.
Conclusione
In questo post, abbiamo introdotto alcune delle nuove funzionalità ora disponibili con Pipelines insieme ad altre funzionalità integrate di SageMaker e all'algoritmo XGBoost per sviluppare, iterare e distribuire un modello per la previsione del tasso di abbandono. La soluzione può essere estesa con ulteriori origini dati
per implementare il tuo flusso di lavoro ML. Per ulteriori dettagli sui passaggi disponibili nel flusso di lavoro Pipeline, fare riferimento a Pipeline di modellismo Amazon SageMaker ed Flussi di lavoro di SageMaker. Esempi di AWS SageMaker Il repository GitHub contiene più esempi di vari casi d'uso che utilizzano Pipelines.
Informazioni sugli autori
Jerry Peng è un ingegnere di sviluppo software con AWS SageMaker. Si concentra sulla creazione di sistemi MLOps end-to-end su larga scala, dalla formazione al monitoraggio dei modelli in produzione. La sua passione è anche portare il concetto di MLOps a un pubblico più ampio.
Dewen Qi è un ingegnere di sviluppo software in AWS. Attualmente si concentra sullo sviluppo e sul miglioramento delle pipeline SageMaker. Al di fuori del lavoro, le piace esercitarsi nel violoncello.
Gayatri Ghanakota è un ingegnere esperto di machine learning con AWS Professional Services. È appassionata di sviluppo, distribuzione e spiegazione di soluzioni AI/ML in vari domini. Prima di ricoprire questo ruolo, ha guidato numerose iniziative come data scientist e ingegnere ML con le migliori aziende globali nel settore finanziario e retail. Ha conseguito un master in Informatica con specializzazione in Data Science presso l'Università del Colorado, Boulder.
Rupinder Grewal è un Senior Specialist Solutions Architect di Ai/ML con AWS. Attualmente si concentra sulla pubblicazione di modelli e MLOp su SageMaker. Prima di questo ruolo ha lavorato come Machine Learning Engineer, costruendo e ospitando modelli. Al di fuori del lavoro gli piace giocare a tennis e andare in bicicletta sui sentieri di montagna.
Ray Li è un Data Scientist senior con AWS Professional Services. La sua specialità si concentra sulla creazione e l'operatività di soluzioni AI/ML per clienti di varie dimensioni, dalle startup alle organizzazioni aziendali. Al di fuori del lavoro, Ray ama il fitness e viaggiare.
- AI
- oh arte
- generatore d'arte
- un robot
- Amazon Sage Maker
- intelligenza artificiale
- certificazione di intelligenza artificiale
- intelligenza artificiale nel settore bancario
- robot di intelligenza artificiale
- robot di intelligenza artificiale
- software di intelligenza artificiale
- Apprendimento automatico di AWS
- blockchain
- conferenza blockchain ai
- geniale
- intelligenza artificiale conversazionale
- criptoconferenza ai
- dall's
- apprendimento profondo
- google ai
- machine learning
- Platone
- platone ai
- Platone Data Intelligence
- Gioco di Platone
- PlatoneDati
- gioco di plato
- scala ai
- sintassi
- zefiro