Definir una política de escalado
Antes de agregar una política de escalado al modelo, guarde la configuración de política como bloque JSON en un archivo de texto. Puede utilizar ese archivo de texto al invocar la AWS Command Line Interface (AWS CLI) o la API de Application Auto Scaling. Puede optimizar el escalado si elige una métrica de CloudWatch adecuada. Sin embargo, antes de usar una métrica personalizada en producción, debe probar el escalado automático con su métrica personalizada.
En esta sección, se muestran ejemplos de configuraciones de políticas para las políticas de escalado de seguimiento de destino.
Temas
- Especificación de una métrica predefinida (métrica de CloudWatch: InvocationsPerInstance)
- Especificación de una métrica predefinida de alta resolución (métricas de CloudWatch: ConcurrentRequestsPerModel y ConcurrentRequestsPerCopy)
- Definición de una métrica personalizada (métrica de CloudWatch: CPUUtilization)
- Definición de una métrica personalizada (métrica de CloudWatch: ExplanationsPerInstance)
- Especificación de periodos de recuperación
Especificación de una métrica predefinida (métrica de CloudWatch: InvocationsPerInstance)
A continuación, se muestra un ejemplo de configuración de política de seguimiento de destino para una variante que mantiene el promedio de invocaciones por instancia en 70. Guarde esta configuración en un archivo llamado config.json
.
{ "TargetValue":
70.0
, "PredefinedMetricSpecification": { "PredefinedMetricType": "SageMakerVariantInvocationsPerInstance" } }
Para obtener más información, consulte TargetTrackingScalingPolicyConfiguration en la Referencia de la API de Application Auto Scaling.
Especificación de una métrica predefinida de alta resolución (métricas de CloudWatch: ConcurrentRequestsPerModel y ConcurrentRequestsPerCopy)
Con las siguientes métricas de CloudWatch de alta resolución, puede establecer políticas de escalado para el volumen de solicitudes simultáneas que reciben sus modelos:
- ConcurrentRequestsPerModel
-
El número de solicitudes simultáneas que recibe un contenedor de modelos.
- ConcurrentRequestsPerCopy
-
El número de solicitudes simultáneas que recibe un componente de inferencia.
Estas métricas realizan un seguimiento del número de solicitudes simultáneas que gestionan los contenedores de modelos, incluidas las solicitudes que están en cola dentro de los contenedores. En el caso de los modelos que envían su respuesta de inferencia como un flujo de tokens, estas métricas realizan un seguimiento de cada solicitud hasta que el modelo envía el último token de la solicitud.
Como métricas de alta resolución, emiten datos con más frecuencia que las métricas estándar de CloudWatch. Las métricas estándar, como la métrica InvocationsPerInstance
, emiten datos una vez por minuto. Sin embargo, estas métricas de alta resolución emiten datos cada 10 segundos. Por lo tanto, a medida que aumenta el tráfico simultáneo a los modelos, la política reacciona escalándose horizontalmente mucho más rápido que en el caso de las métricas estándar. Sin embargo, a medida que disminuye el tráfico hacia sus modelos, la política se reduce horizontalmente a la misma velocidad que lo haría con las métricas estándar.
A continuación, se muestra un ejemplo de configuración de política de seguimiento de destinos que añade instancias si el número de solicitudes simultáneas por modelo supera las 5. Guarde esta configuración en un archivo llamado config.json
.
{ "TargetValue": 5.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "SageMakerVariantConcurrentRequestsPerModelHighResolution" } }
Si utiliza componentes de inferencia para implementar varios modelos en el mismo punto de conexión, puede crear una política equivalente. En ese caso, establezca PredefinedMetricType
en SageMakerInferenceComponentConcurrentRequestsPerCopyHighResolution
.
Para obtener más información, consulte TargetTrackingScalingPolicyConfiguration en la Referencia de la API de Application Auto Scaling.
Definición de una métrica personalizada (métrica de CloudWatch: CPUUtilization)
Para crear una política de escalado de seguimiento de destino con una métrica personalizada, especifique el nombre de la métrica, el espacio de nombres, la unidad, la estadística y cero o más dimensiones. Una dimensión consta de un nombre de dimensión y un valor de dimensión. Puede usar cualquier métrica de variante de producción que cambie en proporción a la capacidad.
El siguiente ejemplo de configuración muestra una política de escalado de seguimiento de destino con una métrica personalizada. La política escala la variante en función de un uso medio de la CPU del 50 % en todas las instancias. Guarde esta configuración en un archivo llamado 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
" } }
Para obtener más información, consulte CustomizedMetricSpecification en la Referencia de la API de Application Auto Scaling.
Definición de una métrica personalizada (métrica de CloudWatch: ExplanationsPerInstance)
Cuando el punto de conexión tiene activada la explicabilidad en línea, emite una métrica ExplanationsPerInstance
que muestra el promedio de registros explicados por minuto y por instancia para una variante. El uso de recursos de registros de explicabilidad puede ser más distinto que el de los registros de predictabilidad. Recomendamos encarecidamente utilizar esta métrica para el escalado del seguimiento de destino de los puntos de conexión con la explicabilidad activada.
Puede crear varias políticas de seguimiento de destino para un objetivo escalable. Valore la posibilidad de agregar la política InvocationsPerInstance
desde la sección de Especificación de una métrica predefinida (métrica de CloudWatch: InvocationsPerInstance) (además de la política ExplanationsPerInstance
). Si la mayoría de las invocaciones no devuelven una explicación debido al valor límite establecido en el parámetro EnableExplanations
, el punto de conexión puede elegir la política InvocationsPerInstance
. Si hay un gran número de explicaciones, el punto de conexión puede usar la política ExplanationsPerInstance
.
El siguiente ejemplo de configuración muestra una política de escalado de seguimiento de destino con una métrica personalizada. El escalado de la política ajusta el número de instancias de variantes de modo que cada instancia tenga una métrica ExplanationsPerInstance
de 20. Guarde esta configuración en un archivo llamado config.json
.
{ "TargetValue":
20.0
, "CustomizedMetricSpecification": { "MetricName": "ExplanationsPerInstance
", "Namespace": "AWS/SageMaker
", "Dimensions":[ {"Name": "EndpointName", "Value": "my-endpoint" }, {"Name": "VariantName","Value": "my-variant"} ],
"Statistic": "Sum
" } }
Para obtener más información, consulte CustomizedMetricSpecification en la Referencia de la API de Application Auto Scaling.
Especificación de periodos de recuperación
Si lo desea, puede definir periodos de recuperación en su política de escalado de seguimiento de destinos, especificando los parámetros ScaleOutCooldown
y ScaleInCooldown
.
A continuación, se muestra un ejemplo de configuración de política de seguimiento de destino para una variante que mantiene el promedio de invocaciones por instancia en 70. La configuración de política proporciona un periodo de recuperación de reducción horizontal de 10 minutos (600 segundos) y un periodo de recuperación de escalado horizontal de 5 minutos (300 segundos). Guarde esta configuración en un archivo llamado config.json
.
{ "TargetValue":
70.0
, "PredefinedMetricSpecification": { "PredefinedMetricType": "SageMakerVariantInvocationsPerInstance" }, "ScaleInCooldown":600
, "ScaleOutCooldown":300
}
Para obtener más información, consulte TargetTrackingScalingPolicyConfiguration en la Referencia de la API de Application Auto Scaling.