Definizione di una policy di dimensionamento - Amazon SageMaker AI

Definizione di una policy di dimensionamento

Prima di aggiungere una policy di dimensionamento al modello, salva la configurazione come blocco JSON in un file di testo. Questo file di testo viene utilizzato quando si invoca l’AWS Command Line Interface (AWS CLI) o l’API Application Auto Scaling. È possibile ottimizzare il dimensionamento scegliendo una metrica CloudWatch appropriata. Tuttavia, prima di utilizzare una metrica personalizzata in produzione, è necessario testare il dimensionamento automatico con la metrica personalizzata.

Questa sezione mostra esempi di configurazioni per policy di dimensionamento con monitoraggio delle destinazioni.

Specificare una metrica predefinita (metrica CloudWatch: InvocationsPerInstance)

Di seguito è riportato un esempio di configurazione della policy con monitoraggio delle destinazioni per una variante che mantiene la media delle invocazioni per istanza a 70. Salva questa configurazione in un file denominato config.json.

{ "TargetValue": 70.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "SageMakerVariantInvocationsPerInstance" } }

Per ulteriori informazioni, consulta TargetTrackingScalingPolicyConfiguration nella guida di riferimento dell'Applicazione di Dimensionamento automatico API.

Specifica una metrica predefinita ad alta risoluzione (metriche CloudWatch: ConcurrentRequestsPerModel e ConcurrentRequestsPerCopy)

Con le seguenti metriche CloudWatch ad alta risoluzione, è possibile impostare policy di dimensionamento per il volume di richieste simultanee ricevute dai modelli:

ConcurrentRequestsPerModel

Il numero di richieste simultanee ricevute da un container di modelli.

ConcurrentRequestsPerCopy

Il numero di richieste simultanee ricevute da un componente di inferenza.

Queste metriche tengono traccia del numero di richieste simultanee gestite dai container di modelli, incluse le richieste in coda all’interno dei container. Per i modelli che inviano la risposta di inferenza come flusso di token, queste metriche tengono traccia di ogni richiesta fino a quando il modello non invia l’ultimo token per la richiesta.

In quanto metriche ad alta risoluzione, emettono dati più frequentemente rispetto alle metriche CloudWatch standard. Le metriche standard, ad esempio InvocationsPerInstance, emettono dati una volta al minuto. Tuttavia, queste metriche ad alta risoluzione emettono dati ogni 10 secondi. Pertanto, con l’aumento del traffico simultaneo verso i modelli, la policy esegue l’aumento orizzontale molto più rapidamente rispetto alle metriche standard. Tuttavia, man mano che il traffico verso i modelli diminuisce, la policy si riduce orizzontalmente alla stessa velocità delle metriche standard.

Di seguito è riportato un esempio di configurazione della policy con monitoraggio delle destinazioni che aggiunge istanze se il numero di richieste simultanee per modello è maggiore di 5. Salva questa configurazione in un file denominato config.json.

{ "TargetValue": 5.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "SageMakerVariantConcurrentRequestsPerModelHighResolution" } }

In caso di utilizzo di componenti di inferenza per implementare più modelli sullo stesso endpoint, è possibile creare una policy equivalente. In tal caso, imposta PredefinedMetricType su SageMakerInferenceComponentConcurrentRequestsPerCopyHighResolution.

Per ulteriori informazioni, consulta TargetTrackingScalingPolicyConfiguration nella guida di riferimento dell'Applicazione di Dimensionamento automatico API.

Definire una metrica personalizzata (metrica CloudWatch: CPUUtilization)

Per creare una policy di dimensionamento con monitoraggio delle destinazioni con una metrica personalizzata, specifica il nome, il namespace, l’unità, la statistica e nessuna o più dimensioni della metrica. Una dimensione è composta da un nome di dimensione e un valore di dimensione. È possibile utilizzare qualsiasi metrica di variante di produzione che varia in proporzione alla capacità.

La configurazione di esempio seguente mostra una policy di dimensionamento con monitoraggio delle destinazioni con una metrica personalizzata. La policy scala la variante in base a un utilizzo medio della CPU del 50% in tutte le istanze. Salva questa configurazione in un file denominato config.json.

{ "TargetValue": 50.0, "CustomizedMetricSpecification": { "MetricName": "CPUUtilization", "Namespace": "/aws/sagemaker/Endpoints", "Dimensions": [ {"Name": "EndpointName", "Value": "my-endpoint" }, {"Name": "VariantName","Value": "my-variant"} ], "Statistic": "Average", "Unit": "Percent" } }

Per ulteriori informazioni, consulta CustomizedMetricSpecification nella Documentazione di riferimento delle API di Application Auto Scaling.

Definire una metrica personalizzata (metrica CloudWatch: ExplanationsPerInstance)

In caso di spiegabilità online attivata, l’endpoint emette una metrica ExplanationsPerInstance che restituisce il numero medio di record spiegati al minuto, per istanza, per una variante. L'utilizzo delle risorse per spiegare i record può essere più diverso da quello dei record di previsione. È vivamente consigliabile utilizzare questa metrica per il dimensionamento degli endpoint con monitoraggio delle destinazioni con la spiegabilità online attivata.

È possibile creare più policy con monitoraggio delle destinazioni per una destinazione scalabile. Prendi in considerazione l’aggiunta della policy InvocationsPerInstance dalla sezione Specificare una metrica predefinita (metrica CloudWatch: InvocationsPerInstance) (oltre alla policy ExplanationsPerInstance). Se la maggior parte delle invocazioni non restituisce una spiegazione a causa del valore di soglia impostato nel parametro EnableExplanations, l’endpoint può scegliere la policy InvocationsPerInstance. Se il numero di spiegazioni è elevato, l'endpoint può utilizzare la policy ExplanationsPerInstance.

La configurazione di esempio seguente mostra una policy di dimensionamento con monitoraggio delle destinazioni con una metrica personalizzata. Il dimensionamento della policy regola il numero di istanze di variante in modo che ogni istanza abbia una metrica ExplanationsPerInstance di 20. Salva questa configurazione in un file denominato config.json.

{ "TargetValue": 20.0, "CustomizedMetricSpecification": { "MetricName": "ExplanationsPerInstance", "Namespace": "AWS/SageMaker", "Dimensions": [ {"Name": "EndpointName", "Value": "my-endpoint" }, {"Name": "VariantName","Value": "my-variant"} ], "Statistic": "Sum" } }

Per ulteriori informazioni, consulta CustomizedMetricSpecification nella Documentazione di riferimento delle API di Application Auto Scaling.

Specificare i tempi di raffreddamento

Facoltativamente, è possibile definire i tempi di raffreddamento nella policy di dimensionamento con monitoraggio delle destinazioni specificando i parametri ScaleOutCooldown e ScaleInCooldown.

Di seguito è riportato un esempio di configurazione della policy con monitoraggio delle destinazioni per una variante che mantiene la media delle invocazioni per istanza a 70. La configurazione della policy fornisce un tempo di raffreddamento per la riduzione orizzontale di 10 minuti (600 secondi) e un tempo di raffreddamento per l’aumento orizzontale di 5 minuti (300 secondi). Salva questa configurazione in un file denominato config.json.

{ "TargetValue": 70.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "SageMakerVariantInvocationsPerInstance" }, "ScaleInCooldown": 600, "ScaleOutCooldown": 300 }

Per ulteriori informazioni, consulta TargetTrackingScalingPolicyConfiguration nella guida di riferimento dell'Applicazione di Dimensionamento automatico API.