

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
<a name="realtime-endpoints-heterogeneous"></a>

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:

1. SageMaker La IA intenta aprovisionar instancias del grupo de mayor prioridad (prioridad 1).

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.

1. 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`).

**Topics**
+ [Configura un punto final con grupos de instancias](#heterogeneous-endpoint-setup)
+ [Supervise los grupos de instancias](#heterogeneous-endpoint-observability)
+ [Auto-scaling con grupos de instancias](#heterogeneous-endpoint-autoscaling)

## Configura un punto final con grupos de instancias
<a name="heterogeneous-endpoint-setup"></a>

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
<a name="heterogeneous-endpoint-setup-realtime"></a>

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 a`ml.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
<a name="heterogeneous-endpoint-setup-ic"></a>

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 el `Specifications` parámetro (en plural) para definir diferentes configuraciones de modelos o recursos para cada tipo de instancia. Cada especificación incluye un `InstanceType` campo 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
<a name="heterogeneous-endpoint-observability"></a>

 CloudWatch Las métricas existentes que se agregan a todas las instancias de una variante (como `Invocations``ModelLatency`, y`CPUUtilization`) 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
<a name="heterogeneous-observability-per-type"></a>

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](monitoring-cloudwatch.md) y[Métricas mejoradas de Amazon SageMaker AI para puntos finales de inferencia](monitoring-cloudwatch-enhanced-metrics.md).

### Comprueba la distribución de la flota
<a name="heterogeneous-observability-distribution"></a>

Para ver el recuento de instancias actual de cada grupo, llama a la [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html)API. `ProductionVariants`En 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 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeInferenceComponent.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeInferenceComponent.html)respuesta 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
<a name="heterogeneous-endpoint-autoscaling"></a>

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](endpoint-auto-scaling.md)

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 `VariantInstanceProvisionTimeoutInSeconds` se 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
<a name="heterogeneous-autoscaling-predefined"></a>

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, consulte[Escalado automático de los modelos de Amazon SageMaker AI](endpoint-auto-scaling.md).

### Utilice métricas personalizadas ponderadas para flotas mixtas
<a name="heterogeneous-autoscaling-weighted"></a>

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 instancia`ConcurrentRequestsPerModel`. 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)](endpoint-auto-scaling-add-code-define.md#endpoint-auto-scaling-add-code-custom)