Utilizzare implementazioni in sequenza - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzare implementazioni in sequenza

Quando aggiorni l'endpoint, puoi specificare un'implementazione progressiva per spostare gradualmente il traffico dal vecchio parco istanze a un nuovo parco istanze. Puoi controllare la dimensione delle fasi di spostamento del traffico e specificare un periodo di valutazione per monitorare le nuove istanze alla ricerca di eventuali problemi prima di eliminare le istanze dal vecchio parco istanze. Con le implementazioni periodiche, le istanze del vecchio parco istanze vengono ripulite dopo ogni trasferimento di traffico verso il nuovo parco istanze, riducendo la quantità di istanze aggiuntive necessarie per aggiornare l'endpoint. Ciò è utile soprattutto per le istanze accelerate che sono molto richieste.

Le distribuzioni in sequenza sostituiscono gradualmente l'implementazione precedente della versione del modello con la nuova versione aggiornando l'endpoint in batch di dimensioni configurabili. Il comportamento di spostamento del traffico delle distribuzioni in sequenza è simile alla modalità di spostamento del traffico lineare nelle implementazioni blu/verdi, ma le implementazioni cicliche offrono il vantaggio di requisiti di capacità ridotti rispetto alle implementazioni blu/verdi. Con le distribuzioni in sequenza, sono attive meno istanze alla volta e hai un controllo più granulare sul numero di istanze che desideri aggiornare nel nuovo parco istanze. Se disponi di modelli di grandi dimensioni o di un endpoint di grandi dimensioni con molte istanze, dovresti prendere in considerazione l'utilizzo di una distribuzioni in sequenza anziché una distribuzione blu/verde.

L’elenco seguente descrive le funzionalità principali delle implementazioni in sequenza in Amazon SageMaker AI:

  • Periodo di baking. Il periodo di baking è un periodo di tempo prestabilito per monitorare il nuovo parco istanze prima di passare alla fase di implementazione successiva. Se uno degli allarmi preimpostati scatta durante un periodo di baking, tutto il traffico degli endpoint torna al vecchio parco istanze. Il periodo di baking ti aiuta ad aumentare la fiducia nell'aggiornamento prima di rendere permanente il cambio di traffico.

  • Dimensioni del batch in sequenza. Hai un controllo granulare sulla dimensione di ogni batch per lo spostamento del traffico o sul numero di istanze che desideri aggiornare in ogni batch. Questo numero può variare dal 5 al 50% delle dimensioni del parco istanze. Puoi specificare la dimensione del batch come numero di istanze o come percentuale totale del tuo parco istanze.

  • Rollback automatici. Puoi specificare gli allarmi Amazon CloudWatch che SageMaker AI utilizza per monitorare il nuovo parco. Se un problema con il codice aggiornato fa scattare uno degli allarmi, SageMaker AI avvia un rollback automatico del parco precedente per mantenerne la disponibilità, riducendo così al minimo i rischi.

Nota

Se l'endpoint utilizza una delle funzionalità elencate nella pagina Esclusioni, non è possibile utilizzare le distribuzioni in sequenza.

Come funziona

Durante un’implementazione in sequenza, SageMaker AI fornisce l’infrastruttura per spostare il traffico dal parco precedente al nuovo senza dover effettuare il provisioning di tutte le nuove istanze in una volta. SageMaker AI utilizza le seguenti fasi per spostare il traffico:

  1. SageMaker AI fornisce il primo batch di istanze del nuovo parco.

  2. Una parte del traffico viene spostata dalle vecchie istanze al primo batch di nuove istanze.

  3. Dopo il periodo di incorporamento, se non viene attivato alcun allarme Amazon CloudWatch, SageMaker AI pulisce un batch di istanze precedenti.

  4. SageMaker AI continua a fornire, spostare e pulire le istanze in batch fino al completamento dell’implementazione.

Se viene attivato un allarme durante uno dei periodi di baking, il traffico viene ripristinato al vecchio parco istanze in batch della dimensione specificata dall'utente. In alternativa, puoi specificare la distribuzioni in sequenza per riportare il 100% del traffico al vecchio parco istanze se scatta un allarme.

Il diagramma seguente mostra la progressione di una distribuzione in sequenza di successo, come descritto nelle fasi precedenti.

Le fasi dello spostamento riuscito del traffico di un’implementazione in sequenza dal parco precedente al nuovo.

Per creare una distribuzioni in sequenza, è sufficiente specificare la configurazione di distribuzione desiderata. Quindi SageMaker AI gestisce il provisioning di nuove istanze, la terminazione delle istanze precedente e lo spostamento del traffico per tuo conto. Puoi creare e gestire la distribuzione tramite l'API e i comandi UpdateEndpoint e CreateEndpoint SageMaker esistenti e AWS Command Line Interface.

Prerequisiti

Prima di configurare una distribuzioni in sequenza, devi creare allarmi Amazon CloudWatch per monitorare i parametri dal tuo endpoint. Se uno qualsiasi degli allarmi scatta durante il periodo di baking, il traffico inizia a rifluire verso il vecchia parco istanze. Per informazioni su come configurare gli allarmi CloudWatch su un endpoint, consulta la pagina dei prerequisiti Configurazione e monitoraggio del rollback automatico. Per ulteriori informazioni sugli allarmi CloudWatch, consulta Utilizzo degli allarmi di Amazon CloudWatch nella Guida per l'utente di Amazon CloudWatch.

Inoltre, consulta la pagina Esclusioni per assicurarti che l'endpoint soddisfi i requisiti per una distribuzioni in sequenza.

Determina la dimensione del batch di sequenza

Prima di aggiornare l'endpoint, determina la dimensione del batch che desideri utilizzare per spostare in modo incrementale il traffico verso il nuovo parco istanze.

Per le implementazioni in sequenza, puoi specificare una dimensione del batch pari al 5-50% della capacità del tuo parco istanze. Se scegli un batch di grandi dimensioni, la distribuzione viene completata più rapidamente. Tuttavia, tieni presente che l'endpoint richiede una maggiore capacità durante l'aggiornamento, all'incirca il sovraccarico delle dimensioni del batch. Se scegli un batch di dimensioni inferiori, la distribuzione richiede più tempo, ma si utilizza meno capacità durante la distribuzione.

Configurare una distribuzioni in sequenza

Una volta giunto il momento dell’implementazione, dopo aver configurato gli allarmi CloudWatch per il tuo endpoint, puoi utilizzare l’API UpdateEndpoint di SageMaker AI o il comando update-endpoint nell’AWS Command Line Interface per avviare l’implementazione.

Come aggiornare un endpoint

L’esempio seguente mostra come aggiornare l’endpoint con un’implementazione in sequenza utilizzando il metodo update_endpoint del client Boto3 SageMaker AI.

Per configurare una distribuzioni in sequenza, utilizza l'esempio e i campi seguenti:

  • Per EndpointName, utilizza il nome dell'endpoint esistente che desideri aggiornare.

  • Per EndpointConfigName, utilizza il nome della configurazione dell'endpoint che desideri utilizzare.

  • Nell’oggetto AutoRollbackConfiguration, all’interno del campo Alarms, puoi aggiungere gli allarmi CloudWatch per nome. Crea una voce AlarmName: <your-cw-alarm> per ogni allarme che desideri utilizzare.

  • I nDeploymentConfig, per l'oggetto RollingUpdatePolicy, specifica i seguenti campi:

    • MaximumExecutionTimeoutInSeconds: il limite di tempo per la distribuzione totale. Il superamento di questo limite causa un timeout. Il valore massimo che puoi specificare per questo campo è 28800 secondi o 8 ore.

    • WaitIntervalInSeconds: la durata del periodo di incorporamento, durante il quale SageMaker AI monitora gli allarmi per ogni batch del nuovo parco.

    • MaximumBatchSize: specifica il Type di batch che desideri utilizzare (conteggio delle istanze o percentuale complessiva del parco istanze) e il Value o la dimensione di ogni batch.

    • RollbackMaximumBatchSize: utilizza questo oggetto per specificare la strategia di rollback nel caso in cui scatti un allarme. Specifica il Type di batch che desideri utilizzare (conteggio delle istanze o percentuale complessiva del parco istanze) e il Value o la dimensione di ogni batch. Se non si specificano questi campi o se si imposta il valore al 100% dell’endpoint, SageMaker AI utilizza una strategia di rollback blu/verde e riporta tutto il traffico al parco precedente quando scatta un allarme.

import boto3 client = boto3.client("sagemaker") response = client.update_endpoint( EndpointName="<your-endpoint-name>", EndpointConfigName="<your-config-name>", DeploymentConfig={ "AutoRollbackConfiguration": { "Alarms": [ { "AlarmName": "<your-cw-alarm>" }, ] }, "RollingUpdatePolicy": { "MaximumExecutionTimeoutInSeconds": number, "WaitIntervalInSeconds": number, "MaximumBatchSize": { "Type": "INSTANCE_COUNT" | "CAPACITY_PERCENTAGE" (default), "Value": number }, "RollbackMaximumBatchSize": { "Type": "INSTANCE_COUNT" | "CAPACITY_PERCENTAGE" (default), "Value": number }, } } )

Dopo aver aggiornato l'endpoint, potresti voler controllare lo stato della distribuzioni in sequenza e verificare lo stato dell'endpoint. Puoi controllare lo stato del tuo endpoint nella console SageMaker AI oppure puoi controllare lo stato del tuo endpoint utilizzando l’API DescribeEndpoint.

Nell'oggetto VariantStatus restituito dall'API DescribeEndpoint, il campo Status indica lo stato di implementazione o operativo corrente dell'endpoint. Per ulteriori informazioni sui possibili stati e sul loro significato, consulta ProductionVariantStatus.

Se hai tentato di eseguire una distribuzioni in sequenza e lo stato dell'endpoint è UpdateRollbackFailed, consulta la sezione seguente per una guida alla risoluzione dei problemi.

Gestione dei guasti

Se le distribuzioni in sequenza falliscono e anche il rollback automatico fallisce, l'endpoint può avere uno stato di UpdateRollbackFailed. Questo stato significa che diverse configurazioni degli endpoint vengono distribuite sulle istanze sottostanti all'endpoint e che l'endpoint è in servizio con una combinazione di configurazioni di endpoint vecchie e nuove.

Puoi effettuare un'altra chiamata all'API UpdateEndpoint per riportare l'endpoint a uno stato integro. Specifica la configurazione dell’endpoint e la configurazione di distribuzione desiderate (come distribuzioni in sequenza, blu/verde o nessuna delle due) per aggiornare l'endpoint.

Puoi chiamare l'API DescribeEndpoint per verificare nuovamente lo stato dell'endpoint, che viene restituito nell'oggetto VariantStatus come campo Status. Se l'aggiornamento ha esito positivo, lo Status dell'endpoint torna a InService.