Abilita CI/CD di endpoint Amazon SageMaker multi-regione PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Abilita CI/CD di endpoint Amazon SageMaker multi-regione

Amazon Sage Maker ed Endpoint di inferenza SageMaker fornire la capacità di formazione e distribuzione dei carichi di lavoro di intelligenza artificiale e machine learning (ML). Con gli endpoint di inferenza, puoi distribuire i tuoi modelli per l'inferenza in tempo reale o batch. Gli endpoint supportano vari tipi di modelli ML ospitati utilizzando Contenitori per l'apprendimento profondo AWS o i tuoi contenitori con algoritmi AI/ML personalizzati. Quando avvii endpoint di inferenza SageMaker con più istanze, SageMaker distribuisce le istanze su più zone di disponibilità (in una singola regione) per un'elevata disponibilità.

In alcuni casi, tuttavia, per garantire la latenza più bassa possibile per i clienti in diverse aree geografiche, potrebbe essere necessario distribuire endpoint di inferenza in più regioni. L'implementazione multiregionale degli endpoint SageMaker e di altri componenti applicativi e infrastrutturali correlati può anche far parte di una strategia di ripristino di emergenza per i carichi di lavoro mission-critical volta a mitigare il rischio di un errore regionale.

Progetti SageMaker implementa una serie di modelli MLOps predefiniti che possono aiutare a gestire le distribuzioni degli endpoint. In questo post mostriamo come estendere una pipeline di progetti SageMaker MLOps per abilitare la distribuzione multiregionale dei tuoi endpoint di inferenza AI/ML.

Panoramica della soluzione

SageMaker Projects distribuisce pipeline MLOP sia di formazione che di distribuzione; puoi usarli per addestrare un modello e distribuirlo utilizzando un endpoint di inferenza. Per ridurre la complessità e i costi di una soluzione multi-regione, presupponiamo che si addestri il modello in una singola regione e si distribuiscano endpoint di inferenza in due o più regioni.

Questo post presenta una soluzione che modifica leggermente un modello di progetto SageMaker per supportare la distribuzione in più regioni. Per illustrare meglio le modifiche, la figura seguente mostra sia una pipeline MLOps standard creata automaticamente da SageMaker (passaggi 1-5) sia le modifiche necessarie per estenderla a una regione secondaria (passaggi 6-11).

Il modello SageMaker Projects distribuisce automaticamente una soluzione MLOps standard, che include i seguenti componenti:

  1. Amazon EventBridge monitor AWS CodeCommit repository per le modifiche e avvia una serie di AWS Code Pipeline se viene rilevato un commit del codice.
  2. Se c'è un cambio di codice, AWSCodeBuild orchestra l'addestramento del modello utilizzando i processi di addestramento SageMaker.
  3. Una volta completato il lavoro di formazione, il Registro dei modelli SageMaker registra e cataloga il modello addestrato.
  4. Per prepararsi alla fase di distribuzione, CodeBuild estende il valore predefinito AWS CloudFormazione file di configurazione del modello con parametri di un modello approvato dal registro del modello.
  5. Infine, CodePipeline esegue i modelli CloudFormation per distribuire il modello approvato agli endpoint di inferenza di produzione e gestione temporanea.

I seguenti passaggi aggiuntivi modificano il modello di progetti MLOps per abilitare la distribuzione del modello AI/ML nella regione secondaria:

  1. Una replica del Servizio di archiviazione semplice Amazon (Amazon S3) nella regione primaria in cui è richiesto l'archiviazione degli artefatti del modello nella regione secondaria.
  2. Il modello CodePipeline è stato esteso con più fasi per eseguire una distribuzione tra regioni del modello approvato.
  3. Come parte del processo di distribuzione tra regioni, il modello CodePipeline utilizza un nuovo modello CloudFormation per distribuire l'endpoint di inferenza in una regione secondaria. Il modello CloudFormation distribuisce il modello dagli artefatti del modello dal bucket di replica S3 creato nel passaggio 6.

9–11 facoltativamente, creare risorse in Amazon percorso 53, Gateway API Amazone AWS Lambda per instradare il traffico dell'applicazione agli endpoint di inferenza nella regione secondaria.

Prerequisiti

Crea un progetto SageMaker nella tua regione principale (us-east-2 in questo post). Completa i passaggi in Creazione, automazione, gestione e ridimensionamento dei flussi di lavoro ML utilizzando Amazon SageMaker Pipelines fino alla sezione Modifica del codice di esempio per un caso d'uso personalizzato.

Aggiorna la tua pipeline in CodePipeline

In questa sezione, discuteremo come aggiungere l'approvazione manuale di CodePipeline e le fasi di distribuzione del modello tra regioni alla pipeline esistente creata per te da SageMaker.

  1. Nella console CodePipeline nella tua regione principale, trova e seleziona la pipeline contenente il nome del tuo progetto e che termina con deploy. Questa pipeline è già stata creata per te da SageMaker Projects. Puoi modificare questa pipeline per aggiungere fasi di distribuzione dell'endpoint AI/ML per la regione secondaria.
  2. Scegli Modifica.
  3. Scegli Aggiungi fase.
  4. Nel Nome d'arte, accedere SecondaryRegionDeployment.
  5. Scegli Aggiungi fase.
  6. Nel SecondaryRegionDeployment palcoscenico, scegli Aggiungi gruppo di azioni.In questo gruppo di azioni aggiungi un passaggio di approvazione manuale per la distribuzione del modello nella regione secondaria.
  7. Nel Nome dell'azione, accedere ManualApprovaltoDeploytoSecondaryRegion.
  8. Nel Fornitore di azioniscegli Approvazione manuale.
  9. Lascia tutte le altre impostazioni ai valori predefiniti e scegli Fatto.
  10. Nel SecondaryRegionDeployment palcoscenico, scegli Aggiungi gruppo di azioni (dopo ManualApprovaltoDeploytoSecondaryRegion).In questo gruppo di azioni aggiungi una fase di distribuzione AWS CloudFormation tra regioni. Potrai specificare i nomi degli artefatti di build che creerai più avanti in questo post.
  11. Nel Nome dell'azione, accedere DeploytoSecondaryRegion.
  12. Nel Fornitore di azioniscegli Formazione del cloud AWS.
  13. Nel Regione, inserisci il nome della tua regione secondaria (ad esempio, us-west-2).
  14. Nel Artefatti di input, accedere BuildArtifact.
  15. Nel Modalità Azione, accedere CreateorUpdateStack.
  16. Nel NomeStack, accedere DeploytoSecondaryRegion.
  17. Sotto Modello, Per Nome del manufatto, selezionare BuildArtifact.
  18. Sotto Modello, Per Nome del file, accedere template-export-secondary-region.yml.
  19. Girare Utilizza il file di configurazione on.
  20. Sotto Modello, Per Nome del manufatto, selezionare BuildArtifact.
  21. Sotto Modello, Per Nome del file, accedere secondary-region-config-export.json.
  22. Sotto Capabilitiesscegli CAPABILITY_NAMED_IAM.
  23. Nel Ruoloscegli AmazonSageMakerServiceCatalogProductsUseRole creato da SageMaker Projects.
  24. Scegli Fatto.
  25. Scegli Risparmi.
  26. Se un Salva le modifiche alla pipeline viene visualizzata la finestra di dialogo, scegliere Risparmi nuovamente.

Modifica il ruolo IAM

Dobbiamo aggiungere ulteriori autorizzazioni al file Gestione dell'identità e dell'accesso di AWS Ruolo (IAM) AmazonSageMakerServiceCatalogProductsUseRole creato da Catalogo dei servizi AWS per abilitare l'accesso al bucket CodePipeline e S3 per la distribuzione in più regioni.

  1. Sulla console IAM, scegli Ruoli nel pannello di navigazione.
  2. Cerca e seleziona AmazonSageMakerServiceCatalogProductsUseRole.
  3. Scegli la policy IAM in Nome della politica: AmazonSageMakerServiceCatalogProductsUseRole-XXXXXXXXX.
  4. Scegli Modifica politica e poi JSON.
  5. Modifica le autorizzazioni AWS CloudFormation per consentire a CodePipeline di sincronizzare il bucket S3 nella regione secondaria. Puoi sostituire la policy IAM esistente con quella aggiornata dalle seguenti Repository GitHub (vedi righe:16-18, 198, 213)
  6. Scegli Politica di revisione.
  7. Scegli Salvare le modifiche.

Aggiungi il modello di distribuzione per la regione secondaria

Per avviare un endpoint di inferenza nella regione secondaria, il file SecondaryRegionDeployment stage necessita di un modello CloudFormation (per endpoint-config-template-secondary-region.yml) e un file di configurazione (secondary-region-config.json).

Il modello CloudFormation è configurato interamente tramite parametri; puoi modificarlo ulteriormente per adattarlo alle tue esigenze. Allo stesso modo, puoi utilizzare il file di configurazione per definire i parametri per la configurazione di avvio dell'endpoint, come il tipo di istanza e il conteggio delle istanze:

{
  "Parameters": {
    "StageName": "secondary-prod",
    "EndpointInstanceCount": "1",
    "EndpointInstanceType": "ml.m5.large",
    "SamplingPercentage": "100",
    "EnableDataCapture": "true"
  }

Per aggiungere questi file al tuo progetto, scaricali dai collegamenti forniti e caricali su Amazon Sage Maker Studio nella Regione primaria. In Studio, scegli File Browser e poi la cartella contenente il nome del tuo progetto e che termina con modeldeploy.

Carica questi file nella cartella principale del repository di distribuzione scegliendo l'icona di caricamento. Assicurati che i file si trovino nella cartella principale come mostrato nello screenshot seguente.

Screenshot dei file di configurazione

Modifica il file Python di compilazione

Successivamente, dobbiamo adattare la distribuzione build.py file per abilitare la distribuzione dell'endpoint SageMaker nella regione secondaria per effettuare le seguenti operazioni:

  • Recuperare la posizione degli artefatti del modello e Registro dei contenitori Amazon Elastic (Amazon ECR) URI per l'immagine del modello nella regione secondaria
  • Preparare un file di parametri utilizzato per passare gli argomenti specifici del modello al modello CloudFormation che distribuisce il modello nella regione secondaria

Puoi scaricare l'aggiornato build.py file e sostituisci quello esistente nella cartella. In Studio, scegli File Browser e poi la cartella contenente il nome del tuo progetto e che termina con modeldeploy. Individua il file build.py e sostituiscilo con quello che hai scaricato.

Il modello CloudFormation utilizza gli artefatti del modello archiviati in un bucket S3 e il percorso dell'immagine Amazon ECR per distribuire l'endpoint di inferenza nella regione secondaria. Questa operazione è diversa dalla distribuzione dal registro del modello nella regione primaria, poiché non è necessario disporre di un registro del modello nella regione secondaria.

Screenshot dei parametri dell'ambiente primario e secondario

Modificare il file delle specifiche di compilazione

buildspec.yml contiene istruzioni eseguite da CodeBuild. Modifichiamo questo file per eseguire le seguenti operazioni:

  • Installa la libreria Python SageMaker necessaria per supportare l'esecuzione del codice
  • Passare attraverso la regione secondaria e i parametri specifici del modello build.py
  • Aggiungi la sincronizzazione dei contenuti del bucket S3 dalle regioni primarie a quelle secondarie
  • Esporta il modello CloudFormation della regione secondaria e il file dei parametri associati come artefatti della fase CodeBuild

Aprire il buildspec.yml file dalla cartella di distribuzione del modello e apportare le modifiche evidenziate come mostrato nello screenshot seguente.

Screenshot del file build yaml

In alternativa è possibile scaricare quanto segue buildspec.yml file per sostituire il file predefinito.

Aggiungi variabili di ambiente CodeBuild

In questa fase, aggiungi i parametri di configurazione richiesti affinché CodeBuild crei i file di configurazione della distribuzione del modello nella regione secondaria.

  1. Nella console CodeBuild nella regione primaria, trova il progetto contenente il nome del tuo progetto e che termina con deploy. Questo progetto è già stato creato per te da SageMaker Projects.

Screenshot della pipeline di codice

  1. Scegli il progetto e sul Modifica menù, scegliere Ambiente.

Screenshot delle configurazioni

  1. Nel Configurazione avanzata sezione, deseleziona Consenti ad AWS CodeBuild di modificare questo ruolo del servizio in modo che possa essere utilizzato con questo progetto di compilazione.
  2. Aggiungi le seguenti variabili di ambiente, definendo i nomi dei modelli CloudFormation aggiuntivi, della regione secondaria e dei parametri specifici del modello:
    1. EXPORT_TEMPLATE_NAME_SECONDARY_REGION - Per Valore, accedere template-export-secondary-region.yml e per Tipologiascegli Testo semplice.
    2. EXPORT_TEMPLATE_SECONDARY_REGION_CONFIG - Per Valore, accedere secondary-region-config-export.json e per Tipologiascegli Testo semplice.
    3. AWS_SECONDARY_REGION - Per Valore, inserisci us-west-2 e for Tipologiascegli Testo semplice.
    4. STRUTTURA - Per Valore, accedere xgboost (sostituisci con il tuo framework) e for Tipologiascegli Testo semplice.
    5. MODELLO_VERSIONE - Per Valore, inserisci 1.0-1 (sostituisci con la versione del tuo modello) e for Tipologiascegli Testo semplice.
  3. Copia il valore di ARTIFACT_BUCKET nel Blocco note o in un altro editor di testo. Questo valore è necessario nel passaggio successivo.
  4. Scegli Aggiorna ambiente.

Sono necessari i valori specificati per l'addestramento del modello FRAMEWORK ed MODEL_VERSION. Ad esempio, per trovare questi valori per il modello Abalone utilizzato nella distribuzione boilerplate MLOps, aprire Studio e sul file File Browser menu, apri la cartella con il nome del tuo progetto e che termina con modelbuild. Navigare verso pipelines/abalone e apri il pipeline.py file. Cercare sagemaker.image_uris.retrieve e copiare i valori rilevanti.

Screenshot del framework ML

Crea un bucket di replica S3 nella regione secondaria

Dobbiamo creare un bucket S3 per contenere gli artefatti del modello nella regione secondaria. SageMaker utilizza questo bucket per ottenere la versione più recente del modello per avviare un endpoint di inferenza. Devi farlo solo una volta. CodeBuild sincronizza automaticamente il contenuto del bucket nella regione primaria con il bucket di replica con ogni esecuzione della pipeline.

  1. Sulla console Amazon S3, scegli Crea un secchio.
  2. Nel Nome del secchio, inserire il valore di ARTEFACT_BUCKET copiato nel passaggio precedente e aggiungi -replica fino alla fine (ad esempio sagemaker-project-X-XXXXXXXX-replica.
  3. Nel Regione AWS, inserisci la tua Regione secondaria (us-west-2).
  4. Lascia tutti gli altri valori ai valori predefiniti e scegli Crea un secchio.

Approvare un modello per la distribuzione

La fase di distribuzione della pipeline richiede l'avvio di un modello approvato. Ciò è necessario per la distribuzione nella regione primaria.

  1. In Studio (regione principale), scegli Risorse di SageMaker nel pannello di navigazione.
  2. Nel Seleziona la risorsa da visualizzarescegli Registro dei modelli.
  3. Scegli il nome del gruppo di modelli che inizia con il nome del tuo progetto.
  4. Nel riquadro di destra, controlla la versione, la fase e lo stato del modello.
  5. Se lo stato è in sospeso, scegli la versione del modello e poi scegli Aggiorna stato.
  6. Cambia stato in Approvato, Quindi scegliere Aggiorna stato.

Distribuire e verificare le modifiche

Tutte le modifiche richieste per la distribuzione multi-regione del tuo endpoint di inferenza SageMaker sono ora complete e puoi avviare il processo di distribuzione.

  1. In Studio, salva tutti i file che hai modificato, scegli Idiotae scegli il repository contenente il nome del tuo progetto e che termina con deploy.
  2. Scegli il segno più per apportare modifiche.
  3. Sotto Cambiato, Aggiungere build.py ed buildspec.yml.
  4. Sotto non tracciato, Aggiungere endpoint-config-template-secondary-region.yml ed secondary-region-config.json.
  5. Inserisci un commento nel Sommario campo e scegli Commettere.
  6. Invia le modifiche al repository scegliendo Spingi.

L'invio di queste modifiche al repository CodeCommit attiva una nuova esecuzione della pipeline, poiché un evento EventBridge monitora i commit inviati. Dopo alcuni istanti, puoi monitorare l'esecuzione accedendo alla pipeline sulla console CodePipeline.

Assicurati di fornire l'approvazione manuale per la distribuzione nella produzione e nella regione secondaria.

Puoi verificare che l'endpoint della regione secondaria sia stato creato sulla console SageMaker, scegliendo Performance modelli/hostess nel riquadro di navigazione e confermando lo stato dell'endpoint in Attività Recente.

Screenshot della dashboard di Sage Maker

Aggiungi API Gateway e Route 53 (facoltativo)

Facoltativamente è possibile seguire le istruzioni in Chiama un endpoint del modello Amazon SageMaker utilizzando Amazon API Gateway e AWS Lambda per esporre l'endpoint di inferenza SageMaker nella regione secondaria come API utilizzando API Gateway e Lambda.

ripulire

Per eliminare il progetto SageMaker, vedere Elimina un progetto MLOps utilizzando Amazon SageMaker Studio. Per garantire che l'endpoint di inferenza secondario venga distrutto, vai alla console AWS CloudFormation ed elimina gli stack correlati nelle regioni primarie e secondarie; questo distrugge gli endpoint di inferenza di SageMaker.

Conclusione

In questo post, abbiamo mostrato come uno specialista MLOps può modificare un modello MLOps preconfigurato per il proprio caso d'uso di distribuzione multiregionale, come la distribuzione di carichi di lavoro in più aree geografiche o come parte dell'implementazione di una strategia di disaster recovery multiregionale. Con questo approccio di distribuzione, non è necessario configurare i servizi nella regione secondaria e puoi riutilizzare le configurazioni CodePipeline e CloudBuild nella regione primaria per la distribuzione tra regioni. Inoltre, puoi risparmiare sui costi continuando l'addestramento dei tuoi modelli nella regione primaria utilizzando l'inferenza SageMaker in più regioni per scalare la tua distribuzione AI/ML a livello globale.

Fateci sapere il vostro feedback nella sezione commenti.


Informazioni sugli autori

Abilita CI/CD di endpoint Amazon SageMaker multi-regione PlatoBlockchain Data Intelligence. Ricerca verticale. Ai. Mehran Najafi, dottore di ricerca, è un Senior Solutions Architect per AWS specializzato in soluzioni AI/ML e SaaS su larga scala.

Abilita CI/CD di endpoint Amazon SageMaker multi-regione PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Steven Alekhin è un Senior Solutions Architect per AWS specializzato in MLOps su larga scala.

Timestamp:

Di più da Apprendimento automatico di AWS