Distribuisci una soluzione MLOps che ospita gli endpoint del tuo modello in AWS Lambda PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Distribuisci una soluzione MLOps che ospita gli endpoint del tuo modello in AWS Lambda

Nel 2019, Amazon ha co-fondato il impegno sul clima. L'obiettivo dell'impegno è raggiungere zero emissioni nette di carbonio entro il 2040. Questo è 10 anni prima rispetto ai contorni dell'accordo di Parigi. Le aziende che si iscrivono si impegnano a fornire rapporti regolari, eliminazione del carbonio e compensazioni credibili. Al momento della stesura di questo articolo, 377 aziende hanno firmato l'impegno per il clima e il numero è ancora in crescita.

Poiché AWS si impegna ad aiutarti a raggiungere il tuo obiettivo zero netto attraverso soluzioni cloud e machine learning (ML), sono già stati sviluppati e implementati molti progetti che riducono le emissioni di carbonio. La produzione è una delle industrie che possono trarre grandi vantaggi da tali progetti. Attraverso la gestione ottimizzata dell'energia delle macchine negli stabilimenti di produzione, come compressori o refrigeratori, le aziende possono ridurre la loro impronta di carbonio con ML.

La transizione efficace da una fase di sperimentazione ML alla produzione è impegnativa. Automatizzare l'addestramento e il riaddestramento dei modelli, disporre di un registro dei modelli e tenere traccia degli esperimenti e della distribuzione sono alcune delle sfide principali. Per le aziende manifatturiere, c'è un altro livello di complessità, vale a dire come questi modelli implementati possono funzionare all'edge.

In questo post, affrontiamo queste sfide fornendo un modello di operazioni di apprendimento automatico (MLOps) che ospita una soluzione di gestione dell'energia sostenibile. La soluzione è indipendente dai casi d'uso, il che significa che puoi adattarla ai tuoi casi d'uso modificando il modello e i dati. Ti mostriamo come integrare i modelli in Pipeline di Amazon SageMaker, uno strumento di orchestrazione del flusso di lavoro nativo per la creazione di pipeline ML, che esegue un processo di addestramento e, facoltativamente, un processo di elaborazione con una simulazione Monte Carlo. Gli esperimenti vengono registrati Esperimenti Amazon SageMaker. I modelli sono tracciati e registrati nel Registro dei modelli Amazon SageMaker. Infine, forniamo il codice per la distribuzione del modello finale in un file AWS Lambda funzione.

Lambda è un servizio di elaborazione che consente di eseguire codice senza gestire o eseguire il provisioning dei server. La scalabilità automatica, la fatturazione pay-per-request e la facilità d'uso di Lambda ne fanno una scelta di implementazione comune per i team di data science. Con questo post, i data scientist possono trasformare il loro modello in una funzione Lambda conveniente e scalabile. Inoltre, Lambda consente l'integrazione con AWS IoT Greengrass, che ti aiuta a creare software che consenta ai tuoi dispositivi di agire all'edge sui dati che generano, come nel caso di una soluzione di gestione energetica sostenibile.

Panoramica della soluzione

L'architettura che implementiamo (vedi la figura seguente) è un approccio completamente basato su CI/CD all'apprendimento automatico. Gli elementi sono disaccoppiati per evitare di avere una soluzione monolitica.

Iniziamo con la parte superiore sinistra del diagramma. Il Elaborazione: creazione di immagini componente è un CI/CD-driven AWS CodeCommit repository che aiuta a costruire e spingere a docker contenitore per Registro dei contenitori Amazon Elastic (Amazon ECR). Questo contenitore di elaborazione funge da primo passaggio nella nostra pipeline ML, ma viene anche riutilizzato per i passaggi di post-elaborazione. Nel nostro caso, applichiamo una simulazione Monte Carlo come post-elaborazione. Il Formazione – Costruzione dell'immagine repository delineato in basso a sinistra ha lo stesso meccanismo del file Processando blocco sopra di esso. La differenza principale è che crea il contenitore per l'addestramento del modello.

L'oleodotto principale, Costruzione di modelli (Pipeline), è un altro repository CodeCommit che automatizza l'esecuzione delle pipeline SageMaker. Questa pipeline automatizza e collega la pre-elaborazione dei dati, l'addestramento del modello, il monitoraggio delle metriche del modello in SageMaker Experiments, la post-elaborazione dei dati e la catalogazione del modello nel registro dei modelli SageMaker.

Il componente finale è in basso a destra: Distribuzione del modello. Se segui gli esempi in Progetti Amazon SageMaker, ottieni un modello che ospita il tuo modello utilizzando un endpoint SageMaker. Il nostro repository di distribuzione ospita invece il modello in una funzione Lambda. Mostriamo un approccio per la distribuzione della funzione Lambda che può eseguire previsioni in tempo reale.

Prerequisiti

Per implementare correttamente la nostra soluzione, è necessario quanto segue:

Scarica il repository GitHub

Come primo passo, clona il file Repository GitHub alla tua macchina locale. Contiene la seguente struttura di cartelle:

  • deployment – Contiene codice rilevante per la distribuzione
  • mllib — Contiene il codice ML per la pre-elaborazione, l'addestramento, la pubblicazione e la simulazione
  • test — Contiene test unitari e di integrazione

Il file chiave per la distribuzione è lo script della shell deployment/deploy.sh. Puoi utilizzare questo file per distribuire le risorse nel tuo account. Prima di poter eseguire lo script della shell, completare i seguenti passaggi:

  1. Aprire il deployment/app.py e cambia il bucket_name sotto SageMakerPipelineSourceCodeStack. bucket_name deve essere univoco a livello globale (ad esempio, aggiungi il tuo nome completo).
  2. In deployment/pipeline/assets/modelbuild/pipelines/energy_management/pipeline.py, cambiare il default_bucket per get_pipeline con lo stesso nome specificato al punto 1.

Distribuisci la soluzione con AWS CDK

In primo luogo, configurare l'AWS CLI con l'account e la regione in cui desideri eseguire la distribuzione. Quindi esegui i seguenti comandi per passare alla directory di distribuzione, creare un ambiente virtuale, attivarlo, installare i pacchetti pip richiesti specificati in setup.pyed esegui il file deploy.sh:

cd deployment
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pre-commit install
chmod u+x deploy.sh
./deploy.sh

deploy.sh esegue le seguenti azioni:

  1. Crea un ambiente virtuale in Python.
  2. Genera lo script di attivazione dell'ambiente virtuale.
  3. Installa AWS CDK e i requisiti descritti in setup.py.
  4. Bootstrap l'ambiente.
  5. Comprimi e copia i file necessari che hai sviluppato, come il tuo mllib file, nelle cartelle corrispondenti in cui sono necessarie queste risorse.
  6. Esegue cdk deploy —require-approval never.
  7. Crea un AWS CloudFormazione stack tramite AWS CDK.

La fase iniziale della distribuzione dovrebbe richiedere meno di 5 minuti. Ora dovresti disporre di quattro repository in CodeCommit nella regione specificata tramite l'AWS CLI, come indicato nel diagramma dell'architettura. Il AWS Code Pipeline le pipeline vengono eseguite contemporaneamente. Il modelbuild ed modeldeploy le pipeline dipendono da un'esecuzione corretta della build dell'immagine di elaborazione e training. Il modeldeploy la pipeline dipende dalla corretta creazione del modello. La distribuzione del modello dovrebbe essere completata in meno di 1.5 ore.

Clona i repository di modelli in Studio

Per personalizzare le pipeline SageMaker create tramite la distribuzione di AWS CDK nell'interfaccia utente di Studio, devi prima clonare i repository in Studio. Avvia il terminale di sistema in Studio ed esegui i seguenti comandi dopo aver fornito il nome e l'ID del progetto:

git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-modelbuild
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-modeldeploy
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-processing-imagebuild
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-training-imagebuild

Dopo aver clonato i repository, puoi inviare un commit ai repository. Questi commit attivano un'esecuzione di CodePipeline per le pipeline correlate.

Puoi anche adattare la soluzione sulla tua macchina locale e lavorare sul tuo IDE preferito.

Esplora l'interfaccia utente di SageMaker Pipelines e SageMaker Experiments

Una pipeline SageMaker è una serie di passaggi interconnessi che vengono definiti utilizzando il SDK Python di Amazon SageMaker. Questa definizione di pipeline codifica una pipeline utilizzando un Directed Acyclic Graph (DAG) che può essere esportato come definizione JSON. Per ulteriori informazioni sulla struttura di tali pipeline, fare riferimento a Panoramica delle pipeline SageMaker.

Spostarsi Risorse di SageMaker riquadro e scegliere la risorsa Pipelines da visualizzare. Sotto Nome, tu dovresti vedere PROJECT_NAME-PROJECT_ID. Nell'interfaccia utente di esecuzione dovrebbe esserci un'esecuzione corretta che dovrebbe richiedere poco più di 1 ora. La pipeline dovrebbe apparire come mostrato nello screenshot seguente.

Pipeline di Amazon SageMaker

L'esecuzione è stata attivata automaticamente dopo la distribuzione dello stack AWS CDK. È possibile richiamare manualmente un'esecuzione scegliendo Creare esecuzione. Da lì puoi scegliere i parametri della tua pipeline come il tipo di istanza e il numero di istanze per le fasi di elaborazione e addestramento. Inoltre, puoi dare alla corsa un nome e una descrizione. La pipeline è altamente configurabile tramite i parametri della pipeline a cui è possibile fare riferimento e definire in tutta la definizione della pipeline.

Sentiti libero di avviare un'altra esecuzione della pipeline con i parametri desiderati. Successivamente, vai al file Risorse di SageMaker riquadro di nuovo e scegli Esperimenti e prove. Lì dovresti vedere di nuovo una linea con un nome come PROJECT_NAME-PROJECT_ID. Passare all'esperimento e scegliere l'unica esecuzione con un ID casuale. Da lì, scegli il lavoro di formazione SageMaker per esplorare le metriche relative al lavoro di formazione.

L'obiettivo di SageMaker Experiments è semplificare al massimo la creazione di esperimenti, popolarli con prove ed eseguire analisi tra prove ed esperimenti. SageMaker Pipelines è strettamente integrato con SageMaker Experiments e, per impostazione predefinita, per ogni esecuzione crea un esperimento, una prova e componenti di prova nel caso in cui non esistano.

Approva la distribuzione di Lambda nel registro dei modelli

Come passaggio successivo, vai al registro dei modelli in Risorse di SageMaker. Qui puoi ritrovare una riga con un nome come PROJECT_NAME-PROJECT_ID. Passare all'unico modello esistente e approvarlo. Questo distribuisce automaticamente l'artefatto del modello in un contenitore in Lambda.

Dopo aver approvato il modello nel registro dei modelli, an Amazon EventBridge viene attivata la regola dell'evento. Questa regola esegue la pipeline CodePipeline con il finale *-modeldeploy. In questa sezione, discutiamo di come questa soluzione utilizza il modello approvato e lo ospita in una funzione Lambda. CodePipeline accetta anche il repository CodeCommit esistente che termina con *-modeldeploy e usa quel codice per essere eseguito in CodeBuild. La voce principale per CodeBuild è la buildspec.yml file. Diamo prima un'occhiata a questo:

version: 0.2

env:
  shell: bash

phases:
  install:
    runtime_versions:
      python: 3.8
    commands:
      - python3 -m ensurepip --upgrade
      - python3 -m pip install --upgrade pip
      - python3 -m pip install --upgrade virtualenv
      - python3 -m venv .venv
      - source .venv/bin/activate
      - npm install -g aws-cdk@2.26.0
      - pip install -r requirements.txt
      - cdk bootstrap
  build:
    commands:
      - python build.py --model-package-group-name "$SOURCE_MODEL_PACKAGE_GROUP_NAME"
      - tar -xf model.tar.gz
      - cp model.joblib lambda/digital_twin
      - rm model.tar.gz
      - rm model.joblib
      - cdk deploy --require-approval never

Durante la fase di installazione, ci assicuriamo che le librerie Python siano aggiornate, creiamo un ambiente virtuale, installiamo AWS CDK v2.26.0 e installiamo il aws-cdk Libreria Python insieme ad altri che utilizzano il file dei requisiti. Anche noi eseguire il bootstrap dell'account AWS. Nella fase di costruzione, corriamo build.py, di cui parleremo in seguito. Quel file scarica l'ultimo artefatto del modello SageMaker approvato da Servizio di archiviazione semplice Amazon (Amazon S3) alla tua istanza CodeBuild locale. Questo .tar.gz viene decompresso e il suo contenuto copiato nella cartella che contiene anche il nostro codice Lambda principale. La funzione Lambda viene distribuita utilizzando AWS CDK e il codice viene eseguito da un container Docker da Amazon ECR. Questa operazione viene eseguita automaticamente da AWS CDK.

I build.py file è un file Python che utilizza principalmente l'estensione SDK AWS per Python (Boto3) per elencare i pacchetti modello disponibili.

La funzione get_approved_package restituisce l'URI Amazon S3 dell'artefatto che viene quindi scaricato, come descritto in precedenza.

Dopo aver distribuito correttamente il tuo modello, puoi farlo test direttamente sulla console Lambda nella regione in cui hai scelto di eseguire il deployment. Il nome della funzione deve contenere DigitalTwinStack-DigitalTwin*. Apri la funzione e vai a Test scheda. È possibile utilizzare il seguente evento per eseguire una chiamata di prova:

{
  "flow": "[280, 300]",
  "pressure": "[69, 70]",
  "simulations": "10",
  "no_of_trials": "10",
  "train_error_weight": "1.0"
}

Dopo aver eseguito l'evento di test, si ottiene una risposta simile a quella mostrata nello screenshot seguente.

Prova la funzione AWS Lambda

Se desideri eseguire più simulazioni o prove, puoi aumentare il limite di timeout di Lambda e sperimentare il codice! Oppure potresti voler raccogliere i dati generati e visualizzare lo stesso in Amazon QuickSight. Di seguito è riportato un esempio. È il tuo turno ora!

Amazon QuickSight

ripulire

Per evitare ulteriori addebiti, completare i seguenti passaggi:

  • Nella console AWS CloudFormation, elimina il file EnergyOptimization pila.
    Questo elimina l'intera soluzione.
  • Elimina la pila DigitalTwinStack, che ha distribuito la tua funzione Lambda.

Conclusione

In questo post, ti abbiamo mostrato una pipeline MLOps basata su CI/CD di una soluzione di gestione dell'energia in cui manteniamo disaccoppiato ogni passaggio. Puoi tenere traccia delle pipeline e degli esperimenti ML nell'interfaccia utente di Studio. Abbiamo anche dimostrato un approccio di distribuzione diverso: dopo l'approvazione di un modello nel registro dei modelli, una funzione Lambda che ospita il modello approvato viene creata automaticamente tramite CodePipeline.

Se sei interessato a esplorare la pipeline MLOps su AWS o la soluzione di gestione dell'energia sostenibile, dai un'occhiata a Repository GitHub e distribuisci lo stack nel tuo ambiente AWS!


Informazioni sugli autori

Distribuisci una soluzione MLOps che ospita gli endpoint del tuo modello in AWS Lambda PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Laurens van der Maas è un Data Scientist presso AWS Professional Services. Lavora a stretto contatto con i clienti creando le loro soluzioni di machine learning su AWS ed è appassionato di come il machine learning stia cambiando il mondo così come lo conosciamo.

Distribuisci una soluzione MLOps che ospita gli endpoint del tuo modello in AWS Lambda PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Kangkang Wang è un consulente AI/ML con AWS Professional Services. Ha una vasta esperienza nell'implementazione di soluzioni AI/ML nel settore sanitario e delle scienze della vita. Le piace anche aiutare i clienti aziendali a creare piattaforme AI/ML scalabili per accelerare il viaggio nel cloud dei loro data scientist.

Distribuisci una soluzione MLOps che ospita gli endpoint del tuo modello in AWS Lambda PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Selena Tabbara è un Data Scientist presso AWS Professional Services. Lavora ogni giorno con i suoi clienti per raggiungere i loro risultati aziendali innovando sulle piattaforme AWS. Nel suo tempo libero, Selena ama suonare il pianoforte, fare escursioni e guardare il basket.

Michael Waller Michael Waller è un consulente senior con focus su AI/ML con AWS Professional Services. Michael è appassionato di consentire ai clienti nel loro viaggio nel cloud di diventare AWSome. È entusiasta della produzione e gli piace aiutare a trasformare lo spazio di produzione attraverso i dati.

Timestamp:

Di più da Apprendimento automatico di AWS