Ottimizzazione dei costi per Amazon SageMaker Canvas con spegnimento automatico delle applicazioni inattive

Riduzione dei costi per Amazon SageMaker Canvas tramite il riavvio automatico delle applicazioni inattive

Amazon SageMaker Canvas è un ricco spazio di lavoro Machine Learning (ML) e Generative AI senza codice che ha permesso ai clienti di tutto il mondo di adottare più facilmente le tecnologie di ML per risolvere vecchie e nuove sfide grazie alla sua interfaccia visuale senza codice. Lo fa coprendo l’intero flusso di lavoro di ML: che tu stia cercando una potente preparazione dei dati e AutoML, il deployment di endpoint gestiti, capacità semplificate di MLOps e modelli pronti all’uso alimentati dai servizi AWS di intelligenza artificiale e Generative AI, SageMaker Canvas può aiutarti a raggiungere i tuoi obiettivi.

Man mano che le aziende di tutte le dimensioni adottano SageMaker Canvas, i clienti hanno chiesto modi per ottimizzare i costi. Come definito nel AWS Well-Architected Framework, un carico di lavoro ottimizzato in termini di costi utilizza completamente tutte le risorse, soddisfa i requisiti funzionali e raggiunge un risultato al prezzo più basso possibile.

Oggi, introduciamo un nuovo modo per ottimizzare ulteriormente i costi delle applicazioni SageMaker Canvas. SageMaker Canvas raccoglie ora le metriche di Amazon CloudWatch che forniscono informazioni sull’utilizzo e sull’inattività dell’app. I clienti possono utilizzare queste informazioni per spegnere automaticamente le applicazioni SageMaker Canvas inattive e evitare costi non intenzionali.

In questo post, ti mostreremo come spegnere automaticamente le applicazioni SageMaker Canvas inattive per controllare i costi utilizzando un’architettura serverless semplice. I modelli utilizzati in questo post sono disponibili su GitHub.

Comprensione e monitoraggio dei costi

L’educazione è sempre il primo passo per comprendere e controllare i costi per qualsiasi carico di lavoro, sia in loco che nel cloud. Iniziamo esaminando il modello di tariffazione di SageMaker Canvas. In poche parole, SageMaker Canvas ha un modello di tariffazione pay-as-you-go, basato su due dimensioni:

  • Istanza del workspace: precedentemente nota come tempo di sessione, è il costo associato all’esecuzione dell’app SageMaker Canvas
  • Costi del servizio AWS: costi associati all’addestramento dei modelli, al deployment degli endpoint, alla generazione di inferenze (risorse per avviare SageMaker Canvas).

I clienti hanno sempre il pieno controllo sulle risorse avviate da SageMaker Canvas e possono tenere traccia dei costi associati all’app SageMaker Canvas utilizzando il servizio AWS Billing and Cost Management. Per ulteriori informazioni, consulta Gestisci la fatturazione e i costi in SageMaker Canvas.

Per limitare i costi associati alle istanze del workspace, come pratica consigliata, è necessario disconnettersi, non chiudere la scheda del browser. Per disconnettersi, scegli il pulsante Esci sul pannello sinistro dell’app SageMaker Canvas.

Spegnimento automatico delle applicazioni SageMaker Canvas

Per gli amministratori IT che desiderano fornire controlli automatizzati per lo spegnimento delle applicazioni SageMaker Canvas e per mantenere i costi sotto controllo, ci sono due approcci:

  1. Spegnimento delle applicazioni su un programma (ogni giorno alle 19:00 o ogni venerdì alle 18:00)
  2. Spegnimento automatico delle applicazioni inattive (quando l’applicazione non è stata utilizzata per due ore)

Spegnimento delle applicazioni su un programma

Architettura di spegnimento programmato di Canvas

La chiusura programmata delle applicazioni SageMaker Canvas può essere ottenuta con pochissimo sforzo utilizzando un’espressione cron (con Amazon EventBridge Cron Rule), un componente di elaborazione (una funzione AWS Lambda) che chiama l’API Amazon SageMaker DeleteApp. Questo approccio è stato discusso nell’articolo Provisione e gestione di ambienti di apprendimento automatico con Amazon SageMaker Canvas utilizzando AWS CDK e AWS Service Catalog, ed è stato implementato nel relativo repository GitHub.

Uno dei vantaggi dell’architettura sopra descritta è che è molto semplice duplicarla per ottenere la creazione programmata dell’app SageMaker Canvas. Utilizzando una combinazione di creazione programmata e eliminazione programmata, un amministratore di cloud può assicurarsi che l’applicazione SageMaker Canvas sia pronta per essere utilizzata quando gli utenti iniziano la loro giornata lavorativa (ad esempio alle 9 del mattino), e che l’app venga automaticamente chiusa alla fine della giornata lavorativa (ad esempio alle 19 del pomeriggio, sempre chiusa nei fine settimana). Tutto ciò che è necessario fare è modificare la riga di codice che chiama l’API DeleteApp in CreateApp, oltre ad aggiornare l’espressione cron per riflettere l’orario desiderato di creazione dell’app.

Sebbene questo approccio sia molto semplice da implementare e testare, uno svantaggio dell’architettura suggerita è che non tiene conto se un’applicazione viene attualmente utilizzata o meno, chiudendola indipendentemente dal suo stato di attività corrente. In base a situazioni diverse, ciò potrebbe causare attriti con gli utenti attivi, che potrebbero vedere improvvisamente terminata la loro sessione.

Puoi ottenere il template associato a questa architettura dal seguente repository GitHub:

Spegnere automaticamente le applicazioni inattive

Architettura di spegnimento di Canvas inattive

A partire da oggi, Amazon SageMaker Canvas emette metriche CloudWatch che forniscono informazioni sull’utilizzo e l’inattività delle app. Ciò consente a un amministratore di definire una soluzione che legge la metrica di inattività, la confronta con una soglia e definisce una logica specifica per lo spegnimento automatico. Una panoramica più dettagliata della metrica di inattività emessa da SageMaker Canvas è mostrata nel paragrafo successivo.

Per ottenere lo spegnimento automatico delle applicazioni SageMaker Canvas in base alle metriche di inattività, forniamo un modello AWS CloudFormation. Questo modello è composto da tre componenti principali:

  1. Un Amazon CloudWatch Alarm, che esegue una query per verificare il valore MAX della metrica TimeSinceLastActive. Se questo valore è superiore a una soglia fornita come input al modello CloudFormation, attiva il resto dell’automazione. Questa query può essere eseguita su un singolo profilo utente, su un singolo dominio o su tutti i domini. In base al livello di controllo desiderato, è possibile utilizzare:
    1. il modello all-domains-all-users, che controlla tutto questo su tutti gli utenti e tutti i domini nella regione in cui viene distribuito il modello
    2. il modello one-domain-all-users, che controlla tutto questo su tutti gli utenti in un dominio nella regione in cui viene distribuito il modello
    3. il modello one-domain-one-user, che controlla questo per un singolo profilo utente, in un dominio, nella regione in cui viene distribuito il modello
  2. Il cambio di stato dell’allarme crea un evento sul bus eventi predefinito in Amazon EventBridge, che ha una Regola Amazon EventBridge impostata per triggerare una funzione AWS Lambda
  3. La funzione AWS Lambda identifica quale app SageMaker Canvas è stata inattiva per più del limite specificato, e la elimina con l’API DeleteApp.

Puoi recuperare i modelli di AWS CloudFormation associati a questa architettura dal seguente repository GitHub:

Come funziona la metrica di inattività di SageMaker Canvas

SageMaker Canvas emette una metrica TimeSinceLastActive nel namespace /aws/sagemaker/Canvas/AppActivity, che mostra il numero di secondi in cui l’app è stata inattiva senza attività dell’utente. Possiamo utilizzare questa nuova metrica per attivare uno spegnimento automatico dell’app SageMaker Canvas quando è stata inattiva per un periodo definito. SageMaker Canvas espone il TimeSinceLastActive con lo schema seguente:

{    "Namespace": "/aws/sagemaker/Canvas/AppActivity",    "Dimensions": [        [            "DomainId",            "UserProfileName"        ]    ],    "Metrics": [        {            "Name": "TimeSinceLastActive",            "Unit": "Seconds",            "Value": 12345        }    ]}

I componenti chiave di questa metrica sono i seguenti:

  • Dimensions, in particolare DomainID e UserProfileName, che consentono a un amministratore di individuare quali applicazioni sono inattive su tutti i domini e gli utenti
  • Value della metrica, che indica il numero di secondi trascorsi dall’ultima attività nelle applicazioni SageMaker Canvas. SageMaker Canvas considera come attività le seguenti azioni:
    • Ogni azione intrapresa nell’applicazione SageMaker Canvas (fare clic su un pulsante, trasformare un set di dati, generare un’inferenza in-app, distribuire un modello);
    • Utilizzare un modello pronto all’uso o interagire con i modelli di intelligenza artificiale generativa utilizzando l’interfaccia di chat;
    • Un’inferenza batch programmata per essere eseguita in un determinato momento; per ulteriori informazioni, fare riferimento a Gestire le automazioni.

Questa metrica può essere letta tramite API Amazon CloudWatch come get_metric_data . Ad esempio, utilizzando l’AWS SDK per Python (boto3):

import boto3, datetimecw = boto3.client('cloudwatch')metric_data_results = cw.get_metric_data(    MetricDataQueries=[        {            "Id": "q1",            "Expression": 'SELEZIONA MAX(TimeSinceLastActive) DA "/aws/sagemaker/Canvas/AppActivity" GRUPPO PER DomainId, UserProfileName',            "Period": 900        }    ],    StartTime=datetime.datetime(2023, 1, 1),    EndTime=datetime.datetime.now(),    ScanBy='TimestampAscending')

La query Python estrae il valore MAX di TimeSinceLastActive dal namespace associato a SageMaker Canvas dopo aver raggruppato questi valori per DomainID e UserProfileName.

Deploy e test della soluzione di spegnimento automatico

Per distribuire lo stack di spegnimento automatico, eseguire quanto segue:

  1. Scarica il modello di AWS CloudFormation che fa riferimento alla soluzione che desideri implementare dal repository GitHub sopra. Scegli se desideri implementare una soluzione per tutti i domini di SageMaker, per un singolo dominio di SageMaker o per un singolo utente;
  2. Aggiorna i parametri del modello:
    1. Il timeout di inattività – tempo (in secondi) in cui l’app SageMaker Canvas può restare inattiva prima di essere chiusa; il valore predefinito è di 2 ore
    2. Il periodo di allarme – tempo di aggregazione (in secondi) utilizzato da CloudWatch Alarm per calcolare il timeout di inattività; il valore predefinito è di 20 minuti
    3. (facoltativo) SageMaker Domain ID e user profile name
  3. Accedi allo stack di CloudFormation per creare le risorse

Una volta distribuita (dovrebbe richiedere meno di due minuti), la funzione AWS Lambda e l’allarme Amazon CloudWatch sono configurati per spegnere automaticamente l’app Canvas quando è inattiva. Per testare lo script di spegnimento automatico, eseguire quanto segue:

  1. Assicurati che l’app SageMaker Canvas sia in esecuzione nel dominio corretto e con il profilo utente corretto (se li hai configurati).
  2. Smetti di usare l’app SageMaker Canvas e attendi il periodo di timeout di inattività (predefinito, 2 ore).
  3. Verifica che l’app sia stata interrotta dopo essere rimasta inattiva per il tempo di soglia controllando che l’allarme CloudWatch sia stato attivato e, dopo aver avviato l’automazione, sia tornato allo stato normale.

Nel nostro test, abbiamo impostato il periodo di timeout di inattività a due ore (7200 secondi). Nel grafico seguente tracciato da Amazon CloudWatch Metrics, puoi vedere che l’app SageMaker Canvas ha emesso la metrica TimeSinceLastActive fino a quando non è stata raggiunta la soglia (1), che ha attivato l’allarme. Una volta attivato l’allarme, la funzione AWS Lambda è stata eseguita, che ha eliminato l’app e ha riportato la metrica al di sotto della soglia (2).

Canvas Auto-shutdown Metrics Plot

Conclusioni

In questo post, abbiamo implementato una soluzione di spegnimento automatico per le app SageMaker Canvas inattive utilizzando AWS Lambda e CloudWatch Alarm e la nuova metrica di inattività emessa da SageMaker Canvas. Grazie a questa soluzione, i clienti possono non solo ottimizzare i costi per i loro carichi di lavoro di Machine Learning, ma possono anche evitare addebiti non voluti per applicazioni che hanno dimenticato fossero in esecuzione nel proprio dominio SageMaker.

Non vediamo l’ora di vedere quali nuovi casi d’uso e carichi di lavoro i clienti possono risolvere con la tranquillità offerta da questa soluzione. Per ulteriori esempi su come SageMaker Canvas può aiutarti a raggiungere i tuoi obiettivi aziendali, consulta i seguenti post:

Per scoprire come puoi eseguire carichi di lavoro di livello di produzione con Amazon SageMaker Canvas, consulta i seguenti post: