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:
- Amazon EventBridge monitor AWS CodeCommit repository per le modifiche e avvia una serie di AWS Code Pipeline se viene rilevato un commit del codice.
- Se c'è un cambio di codice, AWSCodeBuild orchestra l'addestramento del modello utilizzando i processi di addestramento SageMaker.
- Una volta completato il lavoro di formazione, il Registro dei modelli SageMaker registra e cataloga il modello addestrato.
- 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.
- 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:
- 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.
- Il modello CodePipeline è stato esteso con più fasi per eseguire una distribuzione tra regioni del modello approvato.
- 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.
- 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.
- Scegli Modifica.
- Scegli Aggiungi fase.
- Nel Nome d'arte, accedere
SecondaryRegionDeployment
. - Scegli Aggiungi fase.
- 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. - Nel Nome dell'azione, accedere
ManualApprovaltoDeploytoSecondaryRegion
. - Nel Fornitore di azioniscegli Approvazione manuale.
- Lascia tutte le altre impostazioni ai valori predefiniti e scegli Fatto.
- Nel
SecondaryRegionDeployment
palcoscenico, scegli Aggiungi gruppo di azioni (dopoManualApprovaltoDeploytoSecondaryRegion
).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. - Nel Nome dell'azione, accedere
DeploytoSecondaryRegion
. - Nel Fornitore di azioniscegli Formazione del cloud AWS.
- Nel Regione, inserisci il nome della tua regione secondaria (ad esempio,
us-west-2
). - Nel Artefatti di input, accedere
BuildArtifact
. - Nel Modalità Azione, accedere
CreateorUpdateStack
. - Nel NomeStack, accedere
DeploytoSecondaryRegion
. - Sotto Modello, Per Nome del manufatto, selezionare
BuildArtifact
. - Sotto Modello, Per Nome del file, accedere
template-export-secondary-region.yml
. - Girare Utilizza il file di configurazione on.
- Sotto Modello, Per Nome del manufatto, selezionare
BuildArtifact
. - Sotto Modello, Per Nome del file, accedere
secondary-region-config-export.json
. - Sotto Capabilitiesscegli
CAPABILITY_NAMED_IAM
. - Nel Ruoloscegli
AmazonSageMakerServiceCatalogProductsUseRole
creato da SageMaker Projects. - Scegli Fatto.
- Scegli Risparmi.
- 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.
- Sulla console IAM, scegli Ruoli nel pannello di navigazione.
- Cerca e seleziona
AmazonSageMakerServiceCatalogProductsUseRole
. - Scegli la policy IAM in Nome della politica:
AmazonSageMakerServiceCatalogProductsUseRole-XXXXXXXXX
. - Scegli Modifica politica e poi JSON.
- 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)
- Scegli Politica di revisione.
- 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:
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.
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.
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.
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.
- 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.
- Scegli il progetto e sul Modifica menù, scegliere Ambiente.
- 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.
- Aggiungi le seguenti variabili di ambiente, definendo i nomi dei modelli CloudFormation aggiuntivi, della regione secondaria e dei parametri specifici del modello:
- EXPORT_TEMPLATE_NAME_SECONDARY_REGION - Per Valore, accedere
template-export-secondary-region.yml
e per Tipologiascegli Testo semplice. - EXPORT_TEMPLATE_SECONDARY_REGION_CONFIG - Per Valore, accedere
secondary-region-config-export.json
e per Tipologiascegli Testo semplice. - AWS_SECONDARY_REGION - Per Valore, inserisci us-west-2 e for Tipologiascegli Testo semplice.
- STRUTTURA - Per Valore, accedere
xgboost
(sostituisci con il tuo framework) e for Tipologiascegli Testo semplice. - MODELLO_VERSIONE - Per Valore, inserisci 1.0-1 (sostituisci con la versione del tuo modello) e for Tipologiascegli Testo semplice.
- EXPORT_TEMPLATE_NAME_SECONDARY_REGION - Per Valore, accedere
- Copia il valore di
ARTIFACT_BUCKET
nel Blocco note o in un altro editor di testo. Questo valore è necessario nel passaggio successivo. - 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.
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.
- Sulla console Amazon S3, scegli Crea un secchio.
- Nel Nome del secchio, inserire il valore di
ARTEFACT_BUCKET
copiato nel passaggio precedente e aggiungi-replica
fino alla fine (ad esempiosagemaker-project-X-XXXXXXXX-replica
. - Nel Regione AWS, inserisci la tua Regione secondaria (
us-west-2
). - 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.
- In Studio (regione principale), scegli Risorse di SageMaker nel pannello di navigazione.
- Nel Seleziona la risorsa da visualizzarescegli Registro dei modelli.
- Scegli il nome del gruppo di modelli che inizia con il nome del tuo progetto.
- Nel riquadro di destra, controlla la versione, la fase e lo stato del modello.
- Se lo stato è in sospeso, scegli la versione del modello e poi scegli Aggiorna stato.
- 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.
- 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.
- Scegli il segno più per apportare modifiche.
- Sotto Cambiato, Aggiungere
build.py
edbuildspec.yml
. - Sotto non tracciato, Aggiungere
endpoint-config-template-secondary-region.yml
edsecondary-region-config.json
. - Inserisci un commento nel Sommario campo e scegli Commettere.
- 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.
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
Mehran Najafi, dottore di ricerca, è un Senior Solutions Architect per AWS specializzato in soluzioni AI/ML e SaaS su larga scala.
Steven Alekhin è un Senior Solutions Architect per AWS specializzato in MLOps su larga scala.
- Avanzato (300)
- 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
- Livelli di apprendimento
- machine learning
- Platone
- platone ai
- Platone Data Intelligence
- Gioco di Platone
- PlatoneDati
- gioco di plato
- scala ai
- sintassi
- Istruzioni tecniche
- zefiro