Distribuzioni in sequenza - Amazon SageMaker

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à.

Distribuzioni 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 caratteristiche principali delle distribuzioni in sequenza in Amazon: SageMaker

  • 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 CloudWatch allarmi Amazon da SageMaker utilizzare per monitorare la nuova flotta. Se un problema con il codice aggiornato fa scattare uno degli allarmi, SageMaker avvia un ripristino automatico della vecchia flotta 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 continua, SageMaker fornisce l'infrastruttura necessaria per spostare il traffico dalla vecchia flotta a quella nuova senza dover effettuare il provisioning di tutte le nuove istanze contemporaneamente. SageMaker utilizza i seguenti passaggi per spostare il traffico:

  1. SageMaker fornisce il primo gruppo di istanze del nuovo parco istanze.

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

  3. Dopo il periodo di cottura, se non viene attivato alcun CloudWatch allarme Amazon, SageMaker pulisce una serie di vecchie istanze.

  4. SageMaker continua a fornire, spostare e ripulire le istanze in batch fino al completamento della distribuzione.

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 di una distribuzione progressiva del traffico si stanno spostando con successo dalla vecchia flotta a quella nuova.

Per creare una distribuzioni in sequenza, è sufficiente specificare la configurazione di distribuzione desiderata. Quindi si SageMaker occupa del provisioning di nuove istanze, della chiusura delle vecchie istanze e dello spostamento del traffico per te. È possibile creare e gestire la distribuzione tramite i comandi e e esistenti. UpdateEndpointCreateEndpoint SageMaker API AWS Command Line Interface

Prerequisiti

Prima di configurare una distribuzione continua, devi creare CloudWatch allarmi Amazon 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 CloudWatch allarmi su un endpoint, consulta la pagina dei prerequisiti Auto-Rollback Configuration and Monitoring. Per ulteriori informazioni sugli CloudWatch allarmi, consulta Using Amazon CloudWatch alarms nella Amazon CloudWatch User Guide.

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 che sei pronto per la distribuzione e hai configurato gli CloudWatch allarmi per il tuo endpoint, puoi utilizzare il comando SageMaker UpdateEndpointAPIo il comando update-endpoint in per avviare la distribuzione. AWS Command Line Interface

Come aggiornare un endpoint

L'esempio seguente mostra come aggiornare l'endpoint con una distribuzione continua utilizzando il metodo update_endpoint del client Boto3. SageMaker

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'AutoRollbackConfigurationoggetto, all'interno del Alarms campo, puoi aggiungere i tuoi allarmi per nome. CloudWatch 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 cottura, durante il quale SageMaker monitora gli allarmi per ogni lotto della nuova flotta.

    • 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 specifichi questi campi o se imposti il valore sul 100% dell'endpoint, SageMaker utilizza una strategia di rollback blu/verde e riporta tutto il traffico alla vecchia flotta 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 SageMaker console oppure puoi controllare lo stato del tuo endpoint utilizzando il. DescribeEndpointAPI

Nell'VariantStatusoggetto restituito da DescribeEndpointAPI, il Status campo 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 al per UpdateEndpointAPIriportare 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 chiamarlo DescribeEndpointAPIper verificare nuovamente lo stato dell'endpoint, che viene restituito nell'VariantStatusoggetto come campo. Status Se l'aggiornamento ha esito positivo, lo Status dell'endpoint torna a InService.