Integra SageMaker Autopilot nei tuoi processi di MLOps utilizzando un progetto personalizzato di SageMaker.

Integrate SageMaker Autopilot in your MLOps processes using a custom SageMaker project.

Ogni organizzazione ha il proprio set di standard e pratiche che forniscono sicurezza e governance per il loro ambiente AWS. Amazon SageMaker è un servizio completamente gestito per preparare i dati e costruire, addestrare e distribuire modelli di machine learning (ML) per qualsiasi caso d’uso con infrastruttura, strumenti e flussi di lavoro completamente gestiti. SageMaker fornisce un set di modelli per le organizzazioni che desiderano iniziare rapidamente con i flussi di lavoro ML e le pipeline di integrazione continua e consegna continua (CI/CD) DevOps.

La maggior parte dei clienti enterprise ha già una pratica MLOps ben consolidata con un ambiente standardizzato in posizione, ad esempio un repository, infrastruttura e guardie di sicurezza standardizzati, e desidera estendere il proprio processo MLOps anche a strumenti AutoML no-code e low-code. Hanno anche molti processi che devono essere rispettati prima di promuovere un modello in produzione. Cercano un modo veloce e facile per passare dalla fase iniziale a una fase operativa ripetibile, affidabile e, alla fine, scalabile, come indicato nel seguente diagramma. Per ulteriori informazioni, consultare la roadmap MLOps foundation per le imprese con Amazon SageMaker.

Anche se queste aziende hanno team di data science e MLOps robusti per aiutarli a costruire pipeline affidabili e scalabili, vogliono che i loro utenti di strumenti AutoML low-code producano codice e artefatti del modello in modo che possano essere integrati con le loro pratiche standardizzate, rispettando la struttura del loro repository di codice e con le opportune convalidhe, test, passaggi e approvazioni.

Cercano un meccanismo per consentire agli strumenti low-code di generare tutto il codice sorgente per ogni passaggio delle attività AutoML (preelaborazione, addestramento e postelaborazione) in una struttura di repository standardizzata che possa fornire ai loro esperti di data science la capacità di visualizzare, convalidare e modificare il flusso di lavoro in base alle loro esigenze e quindi generare un modello di pipeline personalizzato che possa essere integrato in un ambiente standardizzato (dove hanno definito il loro repository di codice, gli strumenti di compilazione del codice e i processi).

Questo post mostra come avere un processo ripetibile con strumenti low-code come Amazon SageMaker Autopilot in modo che possa essere integrato senza problemi nel tuo ambiente, quindi non devi orchestrare questo flusso di lavoro end-to-end da solo. Dimostriamo come utilizzare il codice degli strumenti low-code/no-code CI/CD per integrarlo nel tuo ambiente MLOps, rispettando le migliori pratiche MLOps.

Panoramica della soluzione

Per mostrare il flusso di lavoro orchestrato, utilizziamo il dataset UCI Adult 1994 Census Income disponibile pubblicamente per prevedere se una persona ha un reddito annuale superiore a $50.000 all’anno. Si tratta di un problema di classificazione binaria; le opzioni per la variabile target del reddito sono superiori o inferiori a $50.000.

La seguente tabella riassume i componenti chiave del dataset.

Caratteristiche del set di dati Multivariato Numero di istanze 48842 Zona Sociale
Caratteristiche dell’attributo: Categorico, Intero Numero di attributi: 14 Data donata 1996-05-01
Attività associate: Classificazione Valori mancanti? Numero di visite web 2749715

La seguente tabella riassume le informazioni sull’attributo.

Nome della colonna Descrizione
Età Continuo
Classe lavorativa Privato, Non-incorporato, Incorporato, Federale-gov, Locale-gov, Stato-gov, Senza-paga, Mai-lavorato
fnlwgt continuo
Istruzione Laurea, Alcune-college, 11th, HS-grad, Scuola-professionale, Assoc-acdm, Assoc-voc, 9th, 7th-8th, 12th, Laurea magistrale, 1st-4th, 10th, Dottorato di ricerca, 5th-6th, Scuola materna.
Numero di istruzione continuo
Stato civile Sposato-civile-spouse, Divorziato, Mai-sposato, Separato, Vedovo, Sposato-spouse-assente, Sposato-AF-spouse.
Occupazione ech-support, Craft-repair, Other-service, Sales, Exec-managerial, Prof-specialty, Handlers-cleaners, Machine-op-inspct, Adm-clerical, Farming-fishing, Transport-moving, Priv-house-serv, Protective-serv, Armed-Forces
Relazione Moglie, Proprio-figlio, Marito, Non-in-famiglia, Altro-parente, Non-sposato.
Razza Bianco, Asiatico-Pac-Islander, Amer-Indian-Eskimo, Altro, Nero
Sesso Femmina, Maschio
Guadagno di capitale Continuo
Perdita di capitale Continuo
Ore di lavoro alla settimana Continuo
Paese natale Stati Uniti, Cambogia, Inghilterra, Puerto-Rico, Canada, Germania, Outlying-US(Guam-USVI-etc), India, Giappone, Grecia, Sud, Cina, Cuba, Iran, Honduras, Filippine, Italia, Polonia, Giamaica, Vietnam, Messico, Portogallo, Irlanda, Francia, Repubblica Dominicana, Laos, Ecuador, Taiwan, Haiti, Columbia, Ungheria, Guatemala, Nicaragua, Scozia, Thailandia, Jugoslavia, El Salvador, Trinadad&Tobago, Perù, Hong, Holand-Paesi Bassi.
Classe Classe di reddito, sia <=50K o >=50K

In questo post, mostriamo come utilizzare Amazon SageMaker Projects, uno strumento che aiuta le organizzazioni a configurare e standardizzare gli ambienti per MLOps con strumenti AutoML a basso codice come Autopilot e Amazon SageMaker Data Wrangler.

Autopilot elimina la fatica di costruire modelli di ML. Basta fornire un dataset tabulare e selezionare la colonna target da prevedere, e Autopilot esplorerà automaticamente diverse soluzioni per trovare il miglior modello. Si può quindi distribuire direttamente il modello in produzione con un solo clic o iterare sulle soluzioni raccomandate per migliorare ulteriormente la qualità del modello.

Data Wrangler fornisce una soluzione end-to-end per importare, preparare, trasformare, caratterizzare e analizzare i dati. Si può integrare un flusso di preparazione dati di Data Wrangler nei propri workflow di ML per semplificare e razionalizzare la pre-elaborazione dei dati e l’ingegneria delle caratteristiche con pochissimo o nessun codice. Si possono anche aggiungere propri script e trasformazioni Python per personalizzare i workflow. Utilizziamo Data Wrangler per eseguire la pre-elaborazione del dataset prima di inviare i dati ad Autopilot.

SageMaker Projects aiuta le organizzazioni a configurare e standardizzare gli ambienti per automatizzare le diverse fasi coinvolte in un ciclo di vita di ML. Sebbene i notebook siano utili per la costruzione e l’esperimento dei modelli, un team di scienziati dei dati e ingegneri di ML che condividono il codice necessitano di un modo più scalabile per mantenere la consistenza del codice e un controllo di versione rigoroso.

Per aiutarti a iniziare con i paradigmi di costruzione e distribuzione del modello comuni, SageMaker Projects offre un insieme di modelli di prima parte (modelli 1P). I modelli 1P si concentrano in genere sulla creazione di risorse per la costruzione e la formazione dei modelli. I modelli includono progetti che utilizzano i servizi nativi di AWS per CI/CD, come AWS CodeBuild e AWS CodePipeline. SageMaker Projects può supportare offerte di modelli personalizzati, in cui le organizzazioni utilizzano un modello di CloudFormation di AWS per eseguire uno stack Terraform e creare le risorse necessarie per un workflow di ML.

Le organizzazioni possono voler estendere i modelli 1P per supportare casi d’uso oltre alla semplice formazione e distribuzione dei modelli. I modelli di progetto personalizzati sono un modo per creare un flusso di lavoro standard per i progetti di ML. Si possono creare diversi modelli e utilizzare le politiche di Identity and Access Management (IAM) di AWS per gestire l’accesso a quei modelli su Amazon SageMaker Studio, garantendo che ciascun utente acceda a progetti dedicati ai propri casi d’uso.

Per saperne di più su SageMaker Projects e sulla creazione di modelli di progetto personalizzati allineati alle best practice, fare riferimento a Build Custom SageMaker Project Templates – Best Practices.

Questi modelli personalizzati vengono creati come prodotti AWS Service Catalog e forniti come modelli di organizzazione sull’interfaccia utente di Studio. Qui gli scienziati dei dati possono scegliere un modello e far avviare e preconfigurare il proprio flusso di lavoro di ML. I progetti vengono forniti utilizzando i prodotti AWS Service Catalog. I modelli di progetto vengono utilizzati dalle organizzazioni per fornire progetti per ciascuno dei loro team.

In questo post, mostriamo come creare un modello di progetto personalizzato per avere un flusso di lavoro MLOps end-to-end utilizzando SageMaker projects, AWS Service Catalog e Amazon SageMaker Pipelines integrando Data Wrangler e Autopilot con gli umani nella soluzione per facilitare le fasi di formazione e distribuzione del modello. Gli umani nella soluzione sono le diverse persone coinvolte in una pratica MLOps che lavorano in collaborazione per la costruzione e la distribuzione di un flusso di lavoro di ML di successo.

Il seguente diagramma illustra il flusso di lavoro di automazione low-code/no-code end-to-end.

Il flusso di lavoro include i seguenti passaggi:

  1. Il team Ops o il team Platform avvia il modello di CloudFormation per impostare i prerequisiti necessari per fornire il modello di SageMaker personalizzato.
  2. Quando il modello è disponibile in SageMaker, il Data Science Lead utilizza il modello per creare un progetto SageMaker.
  3. La creazione del progetto SageMaker avvierà un prodotto AWS Service Catalog che aggiunge due codici seme ai repository AWS CodeCommit:
    • Il codice seme per la pipeline di costruzione del modello include una pipeline che pre-elabora il dataset di apprendimento automatico UCI utilizzando Data Wrangler, crea automaticamente un modello di ML con piena visibilità utilizzando Autopilot, valuta le prestazioni del modello utilizzando una fase di elaborazione e registra il modello in un registro di modelli in base alle prestazioni del modello.
    • Il codice seme per la distribuzione del modello include un passaggio CodeBuild per trovare l’ultimo modello approvato nel registro dei modelli e creare file di configurazione per distribuire i modelli di CloudFormation come parte dei pipeline CI/CD utilizzando CodePipeline. Il modello di CloudFormation distribuisce il modello in ambienti di staging e di produzione.
  4. Il primo commit del codice seme avvia una pipeline CI/CD utilizzando CodePipeline che attiva una pipeline SageMaker, che è una serie di passaggi interconnessi codificati utilizzando un grafo aciclico diretto (DAG). In questo caso, i passaggi coinvolti sono l’elaborazione dei dati utilizzando un flusso di Data Wrangler, la formazione del modello utilizzando Autopilot, la creazione del modello, la valutazione del modello e, se l’elaborazione è superata, la registrazione del modello.

Per maggiori dettagli sulla creazione di pipeline SageMaker utilizzando Autopilot, fare riferimento a Lanciare esperimenti Amazon SageMaker Autopilot direttamente da Amazon SageMaker Pipelines per automatizzare facilmente i flussi di lavoro MLOps.

  1. Dopo che il modello è stato registrato, il responsabile dell’approvazione del modello può approvare o respingere il modello in Studio.
  2. Quando il modello è approvato, viene attivato un flusso di distribuzione CodePipeline integrato con il secondo codice seme.
  3. Questo flusso crea un endpoint serverless e scalabile SageMaker per l’ambiente di staging.
  4. C’è una fase di test automatizzata nel flusso di distribuzione che verrà testata sull’endpoint di staging.
  5. I risultati del test vengono memorizzati in Amazon Simple Storage Service (Amazon S3). Il flusso si fermerà per un responsabile della distribuzione di produzione, che potrà esaminare tutti gli artefatti prima di approvare.
  6. Dopo l’approvazione, il modello viene distribuito in produzione sotto forma di endpoint serverless scalabile. Le applicazioni di produzione possono ora consumare l’endpoint per l’elaborazione delle inferenze.

I passaggi di distribuzione consistono nei seguenti:

  1. Creare il modello di progetto SageMaker personalizzato per Autopilot e altre risorse utilizzando AWS CloudFormation. Questo è un compito di impostazione unica.
  2. Creare il progetto SageMaker utilizzando il modello personalizzato.

Nelle sezioni seguenti, procediamo con ciascuno di questi passaggi in maggiori dettagli ed esploriamo la pagina dei dettagli del progetto.

Prerequisiti

Questa guida include i seguenti prerequisiti:

  • Un account AWS.
  • Una policy di dominio Studio associata al ruolo di esecuzione IAM. Per istruzioni su come assegnare le autorizzazioni al ruolo, fare riferimento a Autorizzazioni API Amazon SageMaker: Azioni, autorizzazioni e risorse di riferimento. Per ulteriori informazioni, fare riferimento a Esempi di policy basate sull’identità di Amazon SageMaker.
  • Per questa guida, si utilizza un modello CloudFormation. Seguire le istruzioni in Introduzione ad AWS CloudFormation per ulteriori informazioni.

Creare le risorse della soluzione con AWS CloudFormation

È possibile scaricare e lanciare il modello CloudFormation tramite la console AWS CloudFormation, l’interfaccia della riga di comando AWS (AWS CLI), l’SDK o semplicemente scegliendo Avvia stack:

Il modello CloudFormation è disponibile anche nel repository AWS Samples GitHub Code. Il repository contiene quanto segue:

  • Un modello CloudFormation per impostare il modello di progetto SageMaker personalizzato per Autopilot
  • Codice seme con il codice ML per impostare le pipeline SageMaker per automatizzare le fasi di elaborazione dei dati e di formazione
  • Una cartella di progetto per il modello CloudFormation utilizzato da AWS Service Catalog mappato al modello di progetto SageMaker personalizzato che verrà creato

Il modello CloudFormation richiede diversi parametri in input.

Di seguito sono riportati i parametri delle informazioni sul prodotto di AWS Service Catalog:

  • Nome del prodotto – Il nome del prodotto AWS Service Catalog che sarà associato al modello MLOps personalizzato del progetto SageMaker
  • Descrizione del prodotto – La descrizione del prodotto AWS Service Catalog
  • Proprietario del prodotto – Il proprietario del prodotto Service Catalog
  • Distributore del prodotto – Il distributore del prodotto Service Catalog

Di seguito sono riportati i parametri delle informazioni sul supporto del prodotto di AWS Service Catalog:

  • Descrizione del supporto del prodotto – Una descrizione del supporto per questo prodotto
  • Email di supporto del prodotto – Un indirizzo email del team che supporta il prodotto AWS Service Catalog
  • URL di supporto del prodotto – Un URL di supporto per il prodotto AWS Service Catalog

Di seguito sono riportati i parametri di configurazione del repository del codice sorgente:

  • URL alla versione compressa del repository GitHub – Utilizzare i valori predefiniti se non si sta forking il repository AWS Samples.
  • Nome e branch del repository GitHub – Questi dovrebbero corrispondere alla cartella principale della zip. Utilizzare i valori predefiniti se non si sta forking il repository AWS Samples.
  • StudioUserExecutionRole – Fornire l’ARN del ruolo IAM di esecuzione dell’utente di Studio.

Dopo aver lanciato lo stack CloudFormation da questo modello, è possibile monitorare lo stato sulla console AWS CloudFormation.

Quando lo stack è completo, copia il valore della chiave CodeStagingBucketName nella scheda Outputs dello stack CloudFormation e salvati il valore in un editor di testo per usarlo in seguito.

Crea il progetto SageMaker utilizzando il nuovo modello personalizzato

Per creare il tuo progetto SageMaker, completa i seguenti passaggi:

  1. Accedi a Studio. Per maggiori informazioni, consulta la guida alla registrazione al dominio Amazon SageMaker.
  2. Nella barra laterale di Studio, scegli l’icona home.
  3. Scegli Deployments dal menu, quindi scegli Projects.
  4. Scegli Crea progetto.
  5. Scegli Organization templates per visualizzare il nuovo modello personalizzato MLOps.
  6. Scegli Seleziona modello di progetto.

  1. Per i Dettagli del progetto, inserisci un nome e una descrizione per il tuo progetto.
  2. Per MLOpsS3Bucket, inserisci il nome del bucket S3 salvato in precedenza.

  1. Scegli Crea progetto.

Viene visualizzato un messaggio che indica che SageMaker sta provvedendo a configurare e gestire le risorse.

Quando il progetto è completo, ricevi un messaggio di successo e il tuo progetto viene elencato nella lista Projects.

Esplora i dettagli del progetto

Nella pagina dei dettagli del progetto, puoi visualizzare le varie schede associate al progetto. Approfondiamo ognuna di queste schede in dettaglio.

Repository

Questa scheda elenca i repository di codice associati a questo progetto. Puoi scegliere clona repo sotto Percorso locale per clonare i due repository di codice seme creati in CodeCommit dal progetto SageMaker. Questa opzione ti fornisce l’accesso Git ai repository di codice dal progetto SageMaker stesso.

Quando il clone del repository è completo, il percorso locale appare nella colonna Percorso locale. Puoi scegliere il percorso per aprire la cartella locale che contiene il codice del repository in Studio.

La cartella sarà accessibile nel riquadro di navigazione. Puoi utilizzare l’icona del browser dei file per nascondere o mostrare l’elenco delle cartelle. Puoi apportare le modifiche al codice qui o scegliere l’icona Git per stage, commit e push delle modifiche.

Pipeline

Questa scheda elenca le pipeline di ML di SageMaker che definiscono i passaggi per preparare i dati, addestrare i modelli e distribuire i modelli. Per informazioni sulle pipeline di ML di SageMaker, vedere Crea e gestisci le pipeline di SageMaker .

Puoi scegliere la pipeline che è attualmente in esecuzione per vedere il suo stato più recente. Nell’esempio seguente, il passaggio di elaborazione dei dati viene eseguito utilizzando un flusso di dati Wrangler.

Puoi accedere al flusso di dati dal percorso locale del repository del codice che abbiamo clonato in precedenza. Scegli l’icona del browser dei file per mostrare il percorso, che è elencato nella cartella pipelines del repository della costruzione del modello.

Nella cartella pipelines, apri la cartella autopilot.

Nella cartella autopilot, apri il file preprocess.flow.

Ci vorrà un momento per aprire il flusso di dati Wrangler.

In questo esempio, vengono eseguite tre trasformazioni dati tra la sorgente e la destinazione. Puoi scegliere ogni trasformazione per vedere ulteriori dettagli.

Per istruzioni su come includere o rimuovere le trasformazioni in Data Wrangler, fare riferimento a Trasforma i dati .

Per ulteriori informazioni, fare riferimento alla preparazione unificata dei dati e all’addestramento del modello con Amazon SageMaker Data Wrangler e Amazon SageMaker Autopilot – Parte 1 .

Quando hai finito di esaminare, scegli l’icona di spegnimento e interrompi le risorse Data Wrangler in Running Apps e Kernel Sessions .

Esperimenti

Questa scheda elenca gli esperimenti Autopilot associati al progetto. Per maggiori informazioni su Autopilot, vedere Sviluppo automatico del modello con Amazon SageMaker Autopilot .

Gruppi di modelli

Questa scheda elenca i gruppi di versioni del modello che sono stati creati dalle esecuzioni della pipeline nel progetto. Quando l’esecuzione della pipeline è completa, il modello creato dall’ultimo passaggio della pipeline sarà accessibile qui.

Puoi scegliere il gruppo di modelli per accedere all’ultima versione del modello.

Lo stato della versione del modello nell’esempio seguente è In sospeso. È possibile selezionare la versione del modello e scegliere Aggiorna stato per aggiornare lo stato.

Scegliere Approvato e scegliere Aggiorna stato per approvare il modello.

Dopo che lo stato del modello è stato approvato, il pipeline di distribuzione del modello all’interno di CodePipeline verrà avviato.

È possibile aprire la pipeline distribuita per vedere le diverse fasi nel repository.

Come mostrato nella precedente schermata, questa pipeline ha quattro fasi:

  • Origine – In questa fase, CodePipeline verifica il codice del repository di CodeCommit nel bucket S3.
  • Costruisci – In questa fase, i modelli di CloudFormation vengono preparati per la distribuzione del codice del modello.
  • DeployStaging – Questa fase è composta da tre sottoprocessi:
    • DeployResourcesStaging – Nel primo sottoprocesso, lo stack di CloudFormation viene distribuito per creare un endpoint di SageMaker senza server nell’ambiente di staging.
    • TestStaging – Nel secondo sottoprocesso, viene eseguito il testing automatizzato utilizzando CodeBuild sull’endpoint per verificare se l’inferenza sta avvenendo come previsto. I risultati dei test saranno disponibili nel bucket S3 con il nome sagemaker-progetto-<ID del progetto SageMaker>.

È possibile ottenere l’ID del progetto SageMaker nella scheda Impostazioni del progetto SageMaker. All’interno del bucket S3, scegliere la cartella del nome del progetto (ad esempio, sagemaker-MLOp-AutoP) e all’interno di essa, aprire la cartella TestArtifa/. Scegliere il file oggetto in questa cartella per vedere i risultati dei test.

È possibile accedere allo script di testing dal percorso locale del repository del codice che abbiamo clonato in precedenza. Scegliere l’icona del browser dei file per visualizzare il percorso. Notare che questo sarà il repository di distribuzione. In tale repository, aprire la cartella di test e scegliere il file di codice Python test.py.

È possibile apportare modifiche a questo codice di testing in base al proprio caso d’uso.

  • Approva distribuzione – Nel terzo sottoprocesso, c’è un processo di approvazione aggiuntivo prima dell’ultima fase di distribuzione in produzione. È possibile scegliere Revisione e approvarla per procedere.

  • DeployProd – In questa fase, lo stack di CloudFormation viene distribuito per creare un endpoint SageMaker serverless per l’ambiente di produzione.

Endpoint

Questa scheda elenca gli endpoint SageMaker che ospitano i modelli distribuiti per l’infrazione. Quando tutte le fasi del processo di distribuzione del modello sono complete, i modelli vengono distribuiti agli endpoint SageMaker e sono accessibili all’interno del progetto SageMaker.

Impostazioni

Questa è l’ultima scheda nella pagina del progetto e elenca le impostazioni per il progetto. Ciò include il nome e la descrizione del progetto, le informazioni sul modello del progetto e SourceModelPackageGroupName e i metadati del progetto.

Pulizia

Per evitare costi aggiuntivi di infrastruttura associati all’esempio in questo post, assicurati di eliminare gli stack di CloudFormation. Inoltre, assicurati di eliminare gli endpoint SageMaker, eventuali notebook in esecuzione e i bucket S3 creati durante la configurazione.

Conclusioni

Questo post descrive un approccio di pipeline di ML facile da usare per automatizzare e standardizzare l’addestramento e la distribuzione di modelli di ML utilizzando SageMaker Projects, Data Wrangler, Autopilot, Pipelines e Studio. Questa soluzione può aiutarti a eseguire attività di AutoML (preprocessamento, addestramento e postprocessamento) in una struttura di repository standardizzata che può fornire ai tuoi esperti di dati la capacità di visualizzare, convalidare e modificare il flusso di lavoro secondo le loro esigenze e quindi generare un modello di pipeline personalizzato che può essere integrato in un progetto SageMaker.

Puoi modificare le pipeline con le tue fasi di preprocessamento e di pipeline per il tuo caso d’uso e distribuire il nostro flusso di lavoro end-to-end. Facci sapere nei commenti come ha funzionato il modello personalizzato per il tuo caso d’uso.