Scalare un endpoint a zero istanze - Amazon SageMaker AI

Scalare un endpoint a zero istanze

In fase di configurazione del dimensionamento automatico per un endpoint, è possibile consentire al processo di ridurre orizzontalmente a zero il numero di istanze in servizio. In questo modo, risparmi sui costi nei periodi in cui l’endpoint non gestisce richieste di inferenza e quindi non richiede istanze attive.

Tuttavia, dopo la riduzione orizzontale a zero istanze, l’endpoint non può rispondere alle richieste di inferenza in entrata finché non esegue il provisioning di almeno un’istanza. Per automatizzare il processo di provisioning, è possibile creare una policy di dimensionamento per fasi con Application Auto Scaling. Quindi, è possibile assegnare la policy a un allarme Amazon CloudWatch.

Dopo aver impostato la policy di dimensionamento per fasi e l’allarme, l’endpoint esegue automaticamente il provisioning di un’istanza subito dopo aver ricevuto una richiesta di inferenza a cui non può rispondere. Il processo di provisioning richiede diversi minuti. Durante questo periodo, qualsiasi tentativo di invocare l’endpoint genera un errore.

Le procedure seguenti spiegano come impostare il dimensionamento automatico per un endpoint in modo che esegua una riduzione orizzontale fino a zero istanze e un aumento orizzontale a partire da zero istanze. Le procedure utilizzano comandi con l’AWS CLI.

Prima di iniziare

Prima che l’endpoint possa essere ridotto orizzontalmente fino a zero istanze e aumentato orizzontalmente da partire da zero istanze, deve soddisfare i seguenti requisiti:

  • È in servizio.

  • Ospita uno o più componenti di inferenza. Un endpoint può essere ridotto orizzontalmente fino a zero istanze e aumentato orizzontalmente da partire da zero istanze solo se ospita componenti di inferenza.

    Per informazioni sull’hosting dei componenti di inferenza sugli endpoint SageMaker AI, consulta Implementazione di modelli per l’inferenza in tempo reale.

  • Nella configurazione dell’endpoint, per l’oggetto ManagedInstanceScaling di variante di produzione, il parametro MinInstanceCount è stato impostato su 0.

    Per informazioni di riferimento su questo parametro, consulta ProductionVariantManagedInstanceScaling.

Per consentire la riduzione orizzontale di un endpoint fino a zero istanze (AWS CLI)

Per ogni componente di inferenza ospitato dall’endpoint, procedi come segue:

  1. Registra il componente di inferenza come destinazione scalabile. Una volta registrato, imposta la capacità minima su 0, come mostrato dal comando seguente:

    aws application-autoscaling register-scalable-target \ --service-namespace sagemaker \ --resource-id inference-component/inference-component-name \ --scalable-dimension sagemaker:inference-component:DesiredCopyCount \ --min-capacity 0 \ --max-capacity n

    In questo esempio, sostituisci inference-component-name con il nome del componente di inferenza. Sostituisci n con il numero massimo di copie del componente di inferenza da fornire durante l’aumento orizzontale.

    Per ulteriori informazioni su questo comando e su ciascuno dei relativi parametri, consulta register-scalable-target nella nella documentazione di riferimento dei comandi della AWS CLI.

  2. Applica una policy con monitoraggio delle destinazioni al componente di inferenza, come mostrato dal comando seguente:

    aws application-autoscaling put-scaling-policy \ --policy-name my-scaling-policy \ --policy-type TargetTrackingScaling \ --resource-id inference-component/inference-component-name \ --service-namespace sagemaker \ --scalable-dimension sagemaker:inference-component:DesiredCopyCount \ --target-tracking-scaling-policy-configuration file://config.json

    In questo esempio, sostituisci inference-component-name con il nome del componente di inferenza.

    Nell’esempio, il file config.json contiene una configurazione della policy con monitoraggio delle destinazioni, come la seguente:

    { "PredefinedMetricSpecification": { "PredefinedMetricType": "SageMakerInferenceComponentInvocationsPerCopy" }, "TargetValue": 1, "ScaleInCooldown": 300, "ScaleOutCooldown": 300 }

    Per ulteriori esempi di configurazioni di policy con monitoraggio, consulta Definizione di una policy di dimensionamento.

    Per ulteriori informazioni su questo comando e su ciascuno dei relativi parametri, consulta put-scaling-policy nella nella documentazione di riferimento dei comandi della AWS CLI.

Per consentire l’aumento orizzontale di un endpoint a partire da zero istanze (AWS CLI)

Per ogni componente di inferenza ospitato dall’endpoint, procedi come segue:

  1. Applica una policy di dimensionamento per fasi al componente di inferenza, come mostrato dal comando seguente:

    aws application-autoscaling put-scaling-policy \ --policy-name my-scaling-policy \ --policy-type StepScaling \ --resource-id inference-component/inference-component-name \ --service-namespace sagemaker \ --scalable-dimension sagemaker:inference-component:DesiredCopyCount \ --step-scaling-policy-configuration file://config.json

    In questo esempio, sostituisci my-scaling-policy con un nome univoco per la tua policy. Sostituisci inference-component-name con il nome del componente di inferenza.

    Nell’esempio, il file config.json contiene una configurazione della policy di dimensionamento per fasi, come la seguente:

    { "AdjustmentType": "ChangeInCapacity", "MetricAggregationType": "Maximum", "Cooldown": 60, "StepAdjustments": [ { "MetricIntervalLowerBound": 0, "ScalingAdjustment": 1 } ] }

    Quando viene attivata questa policy di dimensionamento per fasi, SageMaker AI fornisce le istanze necessarie per supportare le copie del componente di inferenza.

    Dopo aver creato la policy di dimensionamento per fasi, prendi nota del relativo nome della risorsa Amazon (ARN). Il valore ARN per l’allarme CloudWatch è necessario nella fase successiva.

    Per ulteriori informazioni sulle policy di dimensionamento per fasi, consulta Policy di dimensionamento per fasi nella Guida per l’utente di Application Auto Scaling.

  2. Crea un allarme CloudWatch e assegna la policy di dimensionamento per fasi, come mostrato nell’esempio seguente:

    aws cloudwatch put-metric-alarm \ --alarm-actions step-scaling-policy-arn \ --alarm-description "Alarm when SM IC endpoint invoked that has 0 instances." \ --alarm-name ic-step-scaling-alarm \ --comparison-operator GreaterThanThreshold \ --datapoints-to-alarm 1 \ --dimensions "Name=InferenceComponentName,Value=inference-component-name" \ --evaluation-periods 1 \ --metric-name NoCapacityInvocationFailures \ --namespace AWS/SageMaker \ --period 60 \ --statistic Sum \ --threshold 1

    In questo esempio, sostituisci step-scaling-policy-arn con l’ARN della tua policy di dimensionamento per fasi. Sostituisci ic-step-scaling-alarm con un nome a tua scelta. Sostituisci inference-component-name con il nome del componente di inferenza.

    Questo esempio imposta il parametro --metric-name su NoCapacityInvocationFailures. SageMaker AI emette questa metrica quando un endpoint riceve una richiesta di inferenza, ma l’endpoint non ha istanze attive per soddisfare la richiesta. Quando si verifica questo evento, l’allarme avvia la policy di dimensionamento per fasi della fase precedente.

    Per ulteriori informazioni su questo comando e su ciascuno dei relativi parametri, consulta put-metric-alarm nella nella documentazione di riferimento dei comandi della AWS CLI.