Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Implemente en varios tipos de instancias con grupos de instancias
Al implementar un modelo en un punto final de SageMaker IA, normalmente se especifica un único tipo de instancia para la variante de producción. Si ese tipo de instancia no está disponible en la zona de disponibilidad de destino, la implementación falla y se produce un error de capacidad insuficiente (ICE) y debes volver a intentarlo manualmente con un tipo de instancia diferente.
Con los grupos de instancias, puedes especificar una lista ordenada de hasta cinco tipos de instancias para una variante de producción. SageMaker La IA intenta aprovisionar las instancias empezando por el tipo de mayor prioridad (prioridad 1) y recurre automáticamente a los tipos de menor prioridad cuando la capacidad no está disponible. Esto elimina la necesidad de volver a intentarlo manualmente y mejora la disponibilidad de los terminales.
Los grupos de instancias admiten puntos finales de inferencia asíncronos y en tiempo real. Puede usarlos con puntos finales de un solo modelo y con componentes de inferencia.
En los siguientes pasos, se describe cómo funciona el aprovisionamiento de grupos de instancias:
-
SageMaker La IA intenta aprovisionar instancias del grupo de mayor prioridad (prioridad 1).
-
Si la SageMaker IA detecta un error de capacidad insuficiente (ICE) para el tipo de instancia actual, vuelve automáticamente al siguiente grupo en orden de prioridad.
-
Esto continúa hasta que se aprovisione la cantidad requerida de instancias, se agoten todos los grupos o se alcance el tiempo de espera total de aprovisionamiento (
VariantInstanceProvisionTimeoutInSeconds).
Temas
Configura un punto final con grupos de instancias
Para usar grupos de instancias, debes reemplazar el InstanceType parámetro de tu variante de producción por una InstancePools lista. Cada entrada especifica un tipo de instancia y una prioridad (de 1 a 5, donde 1 es la máxima). Si lo desea, puede VariantInstanceProvisionTimeoutInSeconds configurarlo (de 300 a 3600 segundos) para controlar el tiempo total que la SageMaker IA dedica a aprovisionar instancias en todos los grupos antes de que la operación falle.
Real-time punto final con un único modelo
En el siguiente ejemplo, se crea una configuración de punto final con dos grupos de instancias. Si ml.g6.2xlarge las instancias no están disponibles, SageMaker AI recurre aml.g6e.2xlarge.
import boto3 sagemaker_client = boto3.client("sagemaker") endpoint_config_name = "my-heterog-endpoint-config" sagemaker_client.create_endpoint_config( EndpointConfigName=endpoint_config_name, ProductionVariants=[ { "VariantName": "AllTraffic", "ModelName": "my-model", "InitialInstanceCount": 2, "InstancePools": [ { "InstanceType": "ml.g6.2xlarge", "Priority": 1, }, { "InstanceType": "ml.g6e.2xlarge", "Priority": 2, }, ], "VariantInstanceProvisionTimeoutInSeconds": 600, } ], ) sagemaker_client.create_endpoint( EndpointName="my-heterog-endpoint", EndpointConfigName=endpoint_config_name, )
También puedes usar el ModelNameOverride parámetro de cada grupo para especificar un modelo diferente optimizado para ese tipo de instancia. Por ejemplo, puedes implementar un modelo compilado para la GPU en un tipo de instancia y una versión sin compilar en otro.
Real-time punto final con componentes de inferencia
Cuando utilizas componentes de inferencia con grupos de instancias, tienes dos opciones para definir las especificaciones:
-
Único
Specification: usa el mismo modelo y la misma configuración de recursos en todos los tipos de instancias de los grupos de instancias del punto final. Esto funciona cuando el modelo se puede ejecutar en cualquiera de los tipos de instancias aprovisionadas con los mismos requisitos de recursos. -
Múltiple
Specifications: usa elSpecificationsparámetro (en plural) para definir diferentes configuraciones de modelos o recursos para cada tipo de instancia. Cada especificación incluye unInstanceTypecampo que la asigna a un tipo de instancia en los grupos de instancias del punto final.
En el siguiente ejemplo, se crea un componente de inferencia con especificaciones por tipo de instancia:
sagemaker_client.create_inference_component( InferenceComponentName="my-ic", EndpointName="my-heterog-endpoint", VariantName="AllTraffic", Specifications=[ { "InstanceType": "ml.g6.2xlarge", "ModelName": "my-model-g6", "Container": { "Image": "123456789012.dkr.ecr.us-west-2.amazonaws.com/my-image:latest", }, "ComputeResourceRequirements": { "NumberOfAcceleratorDevicesRequired":1, "MinMemoryRequiredInMb":4096, }, }, { "InstanceType": "ml.g6e.2xlarge", "ModelName": "my-model-g6e", "Container": { "Image": "123456789012.dkr.ecr.us-west-2.amazonaws.com/my-image:latest", }, "ComputeResourceRequirements": { "NumberOfAcceleratorDevicesRequired":1, "MinMemoryRequiredInMb":8192, }, }, ], RuntimeConfig={ "CopyCount": 2, }, )
Supervise los grupos de instancias
CloudWatch Las métricas existentes que se agregan a todas las instancias de una variante (como InvocationsModelLatency, yCPUUtilization) siguen funcionando de la misma manera cuando usas grupos de instancias. Además, CloudWatch publica estas métricas con una InstanceType dimensión para que puedas supervisar el rendimiento de cada tipo de instancia por separado.
Per-instance-type métricas
Cuando una variante de producción usa grupos de instancias, las siguientes combinaciones de dimensiones están disponibles CloudWatch para la supervisión por tipo de instancia:
| Combinación de dimensiones | Caso de uso |
|---|---|
EndpointName, VariantName,
InstanceType |
Filtre las métricas de invocación y a nivel de punto final (comoCPUUtilization,Invocations,ModelLatency) para un tipo de instancia específico dentro de la variante. |
InferenceComponentName,
InstanceType |
Filtra las métricas de los componentes de inferencia para un tipo de instancia específico. Usa esto para comparar el rendimiento del mismo componente de inferencia en diferentes tipos de instancias. |
Estas dimensiones están disponibles tanto para CloudWatch las métricas estándar como para las métricas mejoradas. Para ver la lista completa de las métricas disponibles, consulte Métricas de Amazon SageMaker AI en Amazon CloudWatch yMétricas mejoradas de Amazon SageMaker AI para puntos finales de inferencia.
Comprueba la distribución de la flota
Para ver el recuento de instancias actual de cada grupo, llama a la DescribeEndpointAPI. ProductionVariantsEn la respuesta, incluye una InstancePools lista con el recuento actual de cada tipo de instancia. Muestra la composición de la flota tras el aprovisionamiento, incluidas las instancias alternativas de grupos de menor prioridad.
Si utilizas componentes de inferencia, la DescribeInferenceComponentrespuesta incluye un PlacementStatus campo en el resumen de la configuración del tiempo de ejecución que muestra el recuento de copias por tipo de instancia. Úselo para comprender cómo se distribuyen las copias de los componentes de inferencia entre los tipos de instancias de su flota.
Auto-scaling con grupos de instancias
Auto-scaling con grupos de instancias sigue el mismo proceso que el autoscalamiento estándar de puntos finales. Registra los objetivos escalables, define las políticas de escalado y las aplica a su punto final. Para obtener información sobre la configuración general del autoscalamiento, consulte. Escalado automático de los modelos de Amazon SageMaker AI
La diferencia clave es la forma en que la SageMaker IA aprovisiona y libera las instancias cuando se desencadena un evento de escalado:
- Escala horizontal (añadiendo instancias)
-
SageMaker La IA aprovisiona las instancias empezando por el grupo de mayor prioridad (valor de prioridad más bajo). Si la SageMaker IA detecta un error de capacidad insuficiente para el tipo de instancia actual, vuelve automáticamente al siguiente grupo en orden de prioridad. SageMaker La IA sigue reintentándolo en todos los grupos hasta que se aprovisionen las instancias o
VariantInstanceProvisionTimeoutInSecondsse alcance el total. - Amplíe (eliminando instancias)
-
SageMaker La IA publica instancias empezando por el grupo de menor prioridad (valor de prioridad más alto). Los tipos de instancias de mayor prioridad que prefieras se mantienen en funcionamiento el mayor tiempo posible y las instancias alternativas se publican primero.
Usa métricas de escalado predefinidas
Métricas de escalado predefinidas, como SageMakerVariantInvocationsPerInstance seguir trabajando con grupos de instancias. Estas métricas se agregan a todos los tipos de instancias de la variante, por lo que el comportamiento de escalado es el mismo que en un punto final estándar. Este es el enfoque más sencillo cuando todos los tipos de instancias de los grupos tienen una capacidad similar.
Para obtener información sobre la configuración de la política de seguimiento de objetivos y escalado por pasos, consulteEscalado automático de los modelos de Amazon SageMaker AI.
Utilice métricas personalizadas ponderadas para flotas mixtas
Cuando tus grupos de instancias contienen tipos de instancias con diferentes capacidades de cómputo, puedes usar las matemáticas CloudWatch métricas para crear una señal de escalado ponderada. Esto te permite controlar en qué medida contribuye la carga de cada tipo de instancia a la decisión de escalado general.
En el siguiente ejemplo, se crea una política de seguimiento de objetivos que utiliza una media ponderada de ConcurrentRequestsPerModel dos tipos de instancias. Las ponderaciones determinan la sensibilidad de la política de escalado a la carga de cada tipo:
import boto3 aas_client = boto3.client("application-autoscaling") # Register the scalable target aas_client.register_scalable_target( ServiceNamespace="sagemaker", ResourceId="endpoint/my-heterog-endpoint/variant/AllTraffic", ScalableDimension="sagemaker:variant:DesiredInstanceCount", MinCapacity=1, MaxCapacity=10, ) # Define target tracking policy with weighted metric math aas_client.put_scaling_policy( PolicyName="weighted-concurrent-requests", ServiceNamespace="sagemaker", ResourceId="endpoint/my-heterog-endpoint/variant/AllTraffic", ScalableDimension="sagemaker:variant:DesiredInstanceCount", PolicyType="TargetTrackingScaling", TargetTrackingScalingPolicyConfiguration={ "TargetValue":10.0, "CustomizedMetricSpecification": { "Metrics": [ { "Id": "cr_g6", "Label": "ConcurrentRequests-g6-2xlarge", "MetricStat": { "Metric": { "Namespace": "AWS/SageMaker", "MetricName": "ConcurrentRequestsPerModel", "Dimensions": [ {"Name": "EndpointName", "Value": "my-heterog-endpoint"}, {"Name": "VariantName", "Value": "AllTraffic"}, {"Name": "InstanceType", "Value": "ml.g6.2xlarge"}, ], }, "Stat": "Average", }, "ReturnData": False, }, { "Id": "cr_g6e", "Label": "ConcurrentRequests-g6e-2xlarge", "MetricStat": { "Metric": { "Namespace": "AWS/SageMaker", "MetricName": "ConcurrentRequestsPerModel", "Dimensions": [ {"Name": "EndpointName", "Value": "my-heterog-endpoint"}, {"Name": "VariantName", "Value": "AllTraffic"}, {"Name": "InstanceType", "Value": "ml.g6e.2xlarge"}, ], }, "Stat": "Average", }, "ReturnData": False, }, { "Id": "weighted_avg", "Label": "WeightedConcurrentRequests", "Expression": "0.5* cr_g6 +0.5* cr_g6e", "ReturnData": True, }, ], }, }, )
En este ejemplo, busque cr_g6 la cr_g6e métrica por tipo de instanciaConcurrentRequestsPerModel. La weighted_avg expresión los combina con pesos iguales (0,5/0,5). Ajusta las ponderaciones para cambiar la forma en que la política responde a la carga en cada tipo de instancia.
Cómo afectan las ponderaciones al comportamiento de escalado: una mayor ponderación en un tipo de instancia significa que la política de escalado es más sensible a la carga de ese tipo, no a una menor. La señal del tipo con menor ponderación se amortigua, por lo que puede funcionar con un mayor uso antes de que se desencadene un evento de escalado.
| Estrategia de peso | High-priority tolerancia de tipos | Low-priority tolerancia de tipo | Lo mejor para |
|---|---|---|---|
| Mayor peso en la prioridad alta (0.7/0.3) | Inferior (protegido) | Más alto (se calienta más) | Proteja las instancias caras o de gran capacidad de la sobrecarga |
| Igual (0,5/0,5) | Equilibrado | Equilibrado | Recomendación predeterminada para la mayoría de las cargas de trabajo |
| Mayor peso en las de prioridad baja (0,3/0,7) | Más alto (se calienta más) | Inferior (protegido) | Evitar que las instancias alternativas más pequeñas se saturen |
Para obtener más información sobre las métricas personalizadas con autoscalamiento, consulte. Defina una métrica personalizada (CloudWatch métrica: uso de la CPU)