

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Bereitstellung auf mehreren Instanztypen mit Instanzpools
<a name="realtime-endpoints-heterogeneous"></a>

Wenn Sie ein Modell auf einem SageMaker KI-Endpunkt bereitstellen, geben Sie in der Regel einen einzelnen Instanztyp für die Produktionsvariante an. Wenn dieser Instanztyp in der Ziel-Availability Zone nicht verfügbar ist, schlägt die Bereitstellung mit einem Fehler mit unzureichender Kapazität (ICE) fehl, und Sie müssen es manuell mit einem anderen Instanztyp erneut versuchen.

Mit Instance-Pools können Sie eine geordnete Liste mit bis zu fünf Instance-Typen für eine Produktionsvariante angeben. SageMaker KI versucht, Instances ab dem Typ mit der höchsten Priorität (Priorität 1) bereitzustellen und greift automatisch auf Typen mit niedrigerer Priorität zurück, wenn die Kapazität nicht verfügbar ist. Dadurch entfällt die Notwendigkeit manueller Wiederholungsversuche und die Verfügbarkeit der Endgeräte wird verbessert.

Instanzpools unterstützen sowohl Echtzeit- als auch asynchrone Inferenzendpunkte. Sie können sie mit Einzelmodell-Endpunkten und mit Inferenzkomponenten verwenden.

In den folgenden Schritten wird beschrieben, wie die Bereitstellung von Instanzpools funktioniert:

1. SageMaker KI versucht, Instanzen aus dem Pool mit der höchsten Priorität (Priorität 1) bereitzustellen.

1. Wenn SageMaker AI auf einen Fehler mit unzureichender Kapazität (ICE) für den aktuellen Instance-Typ stößt, wird automatisch auf den nächsten Pool in der Prioritätsreihenfolge zurückgegriffen.

1. Dies wird so lange fortgesetzt, bis die erforderliche Anzahl von Instanzen bereitgestellt ist, alle Pools erschöpft sind oder das gesamte Bereitstellungszeitlimit (`VariantInstanceProvisionTimeoutInSeconds`) erreicht ist.

**Topics**
+ [Richten Sie einen Endpunkt mit Instanzpools ein](#heterogeneous-endpoint-setup)
+ [Überwachen Sie Instanzpools](#heterogeneous-endpoint-observability)
+ [Auto-scaling mit Instanzpools](#heterogeneous-endpoint-autoscaling)

## Richten Sie einen Endpunkt mit Instanzpools ein
<a name="heterogeneous-endpoint-setup"></a>

Um Instanzpools zu verwenden, ersetzen Sie den `InstanceType` Parameter in Ihrer Produktionsvariante durch eine `InstancePools` Liste. Jeder Eintrag gibt einen Instanztyp und eine Priorität an (1 bis 5, wobei 1 die höchste ist). Sie können optional festlegen `VariantInstanceProvisionTimeoutInSeconds` (300 bis 3600 Sekunden), um die Gesamtzeit zu kontrollieren, die SageMaker KI damit verbringt, Instanzen in allen Pools bereitzustellen, bevor der Vorgang fehlschlägt.

### Real-time Endpunkt mit einem einzigen Modell
<a name="heterogeneous-endpoint-setup-realtime"></a>

Das folgende Beispiel erstellt eine Endpunktkonfiguration mit zwei Instanzpools. Wenn `ml.g6.2xlarge` Instanzen nicht verfügbar sind, greift SageMaker KI auf zurück`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,
)
```

Sie können den `ModelNameOverride` Parameter auch in jedem Pool verwenden, um ein anderes Modell anzugeben, das für diesen Instance-Typ optimiert ist. Sie können beispielsweise ein für GPU kompiliertes Modell auf einem Instanztyp und eine unkompilierte Version auf einem anderen bereitstellen.

### Real-time Endpunkt mit Inferenzkomponenten
<a name="heterogeneous-endpoint-setup-ic"></a>

Wenn Sie Inferenzkomponenten mit Instanzpools verwenden, haben Sie zwei Möglichkeiten, Spezifikationen zu definieren:
+ **Single `Specification`** — Verwenden Sie dasselbe Modell und dieselbe Ressourcenkonfiguration für alle Instanztypen in den Instanzpools des Endpunkts. Dies funktioniert, wenn das Modell auf jedem der bereitgestellten Instanztypen mit denselben Ressourcenanforderungen ausgeführt werden kann.
+ **Mehrfach `Specifications`** — Verwenden Sie den `Specifications` Parameter (Plural), um unterschiedliche Modell- oder Ressourcenkonfigurationen für jeden Instanztyp zu definieren. Jede Spezifikation enthält ein `InstanceType` Feld, das sie einem Instanztyp in den Instanzpools des Endpunkts zuordnet.

Im folgenden Beispiel wird eine Inferenzkomponente mit Spezifikationen pro Instanztyp erstellt:

```
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,
    },
)
```

## Überwachen Sie Instanzpools
<a name="heterogeneous-endpoint-observability"></a>

Bestehende CloudWatch Metriken, die für alle Instanzen in einer Variante aggregiert sind — wie `Invocations``ModelLatency`, und `CPUUtilization` — funktionieren weiterhin auf die gleiche Weise, wenn Sie Instanzpools verwenden. Darüber hinaus CloudWatch veröffentlicht diese Metriken mit einer `InstanceType` Dimension, sodass Sie die Leistung für jeden Instance-Typ separat überwachen können.

### Per-instance-type Metriken
<a name="heterogeneous-observability-per-type"></a>

Wenn eine Produktionsvariante Instanzpools verwendet, sind die folgenden Dimensionskombinationen CloudWatch für die Überwachung pro Instanztyp verfügbar:


| Dimensionskombination | Anwendungsfall | 
| --- | --- | 
| EndpointName, VariantName, InstanceType | Filtern Sie Metriken auf Endpunktebene und für Aufrufe (z. B. CPUUtilizationInvocations,ModelLatency) für einen bestimmten Instanztyp innerhalb der Variante. | 
| InferenceComponentName, InstanceType | Filtert Metriken für Inferenzkomponenten nach einem bestimmten Instanztyp. Verwenden Sie diese Option, um zu vergleichen, wie dieselbe Inferenzkomponente bei verschiedenen Instanztypen abschneidet. | 

Diese Dimensionen sind sowohl für CloudWatch Standardmetriken als auch für erweiterte Metriken verfügbar. Die vollständige Liste der verfügbaren Metriken finden Sie unter [SageMaker Amazon-KI-Metriken bei Amazon CloudWatch](monitoring-cloudwatch.md) und[Verbesserte Amazon SageMaker AI-Metriken für Inferenzendpunkte](monitoring-cloudwatch-enhanced-metrics.md).

### Überprüfen Sie die Flottenverteilung
<a name="heterogeneous-observability-distribution"></a>

Rufen Sie die [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html)API auf, um die aktuelle Anzahl der Instanzen für jeden Pool zu sehen. Die `ProductionVariants` Antwort enthält eine `InstancePools` Liste mit der aktuellen Anzahl für jeden Instanztyp. Dies zeigt Ihre Flottenzusammensetzung nach der Bereitstellung, einschließlich aller Fallback-Instances aus Pools mit niedrigerer Priorität.

Wenn Sie Inferenzkomponenten verwenden, enthält die [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeInferenceComponent.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeInferenceComponent.html)Antwort ein `PlacementStatus` Feld in der Zusammenfassung der Laufzeitkonfiguration, das die Anzahl der Kopien pro Instance-Typ anzeigt. Verwenden Sie dies, um zu verstehen, wie Kopien von Inferenzkomponenten auf die Instance-Typen in Ihrer Flotte verteilt sind.

## Auto-scaling mit Instanzpools
<a name="heterogeneous-endpoint-autoscaling"></a>

Auto-scaling mit Instanzpools folgt dem gleichen Prozess wie die automatische Standardskalierung von Endpunkten. Sie registrieren skalierbare Ziele, definieren Skalierungsrichtlinien und wenden sie auf Ihren Endpunkt an. Informationen zur allgemeinen Einrichtung der auto-scaling finden Sie unter[Automatische Skalierung von Amazon SageMaker AI-Modellen](endpoint-auto-scaling.md).

Der Hauptunterschied besteht darin, wie SageMaker KI Instanzen bereitstellt und freigibt, wenn ein Skalierungsereignis ausgelöst wird:

Scale Out (Hinzufügen von Instanzen)  
SageMaker AI stellt Instanzen bereit, beginnend mit dem Pool mit der höchsten Priorität (niedrigster Prioritätswert). Wenn SageMaker AI auf einen Fehler mit unzureichender Kapazität für den aktuellen Instance-Typ stößt, wird automatisch auf den nächsten Pool in der Prioritätsreihenfolge zurückgegriffen. SageMaker KI versucht es poolübergreifend weiter, bis die Instanzen bereitgestellt sind oder die Gesamtzahl erreicht `VariantInstanceProvisionTimeoutInSeconds` ist.

Skalieren (Instanzen entfernen)  
SageMaker AI veröffentlicht Instanzen, beginnend mit dem Pool mit der niedrigsten Priorität (höchster Prioritätswert). Ihre bevorzugten Instance-Typen mit höherer Priorität werden so lange wie möglich ausgeführt, und Fallback-Instances werden zuerst veröffentlicht.

### Verwenden Sie vordefinierte Skalierungsmetriken
<a name="heterogeneous-autoscaling-predefined"></a>

Vordefinierte Skalierungsmetriken, z. B. `SageMakerVariantInvocationsPerInstance` weiterhin mit Instanzpools funktionieren. Diese Metriken werden für alle Instance-Typen in der Variante aggregiert, sodass das Skalierungsverhalten dem eines Standardendpunkts entspricht. Dies ist der einfachste Ansatz, wenn alle Instance-Typen in Ihren Pools eine ähnliche Kapazität haben.

Informationen zur Einrichtung von Richtlinien zur Zielverfolgung und schrittweisen Skalierung finden Sie unter[Automatische Skalierung von Amazon SageMaker AI-Modellen](endpoint-auto-scaling.md).

### Verwenden Sie gewichtete benutzerdefinierte Metriken für gemischte Flotten
<a name="heterogeneous-autoscaling-weighted"></a>

Wenn Ihre Instance-Pools Instance-Typen mit unterschiedlichen Rechenkapazitäten enthalten, können Sie mithilfe von CloudWatch metrischer Mathematik ein gewichtetes Skalierungssignal erstellen. Auf diese Weise können Sie steuern, wie stark die Last jedes Instance-Typs zur allgemeinen Skalierungsentscheidung beiträgt.

Im folgenden Beispiel wird eine Ziel-Tracking-Richtlinie erstellt, die einen gewichteten Durchschnitt von `ConcurrentRequestsPerModel` zwei Instance-Typen verwendet. Die Gewichtungen bestimmen, wie empfindlich die Skalierungsrichtlinie auf die Auslastung der einzelnen Typen reagiert:

```
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,
                },
            ],
        },
    },
)
```

Rufen Sie in diesem Beispiel die `cr_g6` `cr_g6e` Metrik pro Instanztyp ab`ConcurrentRequestsPerModel`. Der `weighted_avg` Ausdruck kombiniert sie mit gleichen Gewichten (0,5/0,5). Passen Sie die Gewichtungen an, um zu ändern, wie die Richtlinie auf die Belastung der einzelnen Instance-Typen reagiert.

**Wie sich Gewichtungen auf das Skalierungsverhalten auswirken:** Eine höhere Gewichtung eines Instance-Typs bedeutet, dass die Skalierungsrichtlinie *empfindlicher* auf die Belastung dieses Typs reagiert — nicht auf weniger. Das Signal des Typs mit der niedrigeren Gewichtung wird gedämpft, sodass er bei höherer Auslastung ausgeführt werden kann, bevor ein Skalierungsereignis ausgelöst wird.


| Gewichtsstrategie | High-priority Typtoleranz | Low-priority Typtoleranz | Am besten geeignet für | 
| --- | --- | --- | --- | 
| Höheres Gewicht bei hoher Priorität (0,7/0,3) | Niedriger (geschützt) | Höher (läuft heißer) | Schützt teure Instanzen oder Instanzen mit hoher Kapazität vor Überlastung | 
| Gleich (0,5/0,5) | Ausgewogen | Ausgewogen | Standardempfehlung für die meisten Workloads | 
| Höhere Gewichtung bei niedriger Priorität (0,3/0,7) | Höher (läuft heißer) | Niedriger (geschützt) | Verhindern, dass kleinere Fallback-Instances überlastet werden | 

Weitere Informationen zu benutzerdefinierten Messwerten mit auto-scaling finden Sie unter[Definieren Sie eine benutzerdefinierte Metrik (CloudWatch Metrik: CPUUtilization)](endpoint-auto-scaling-add-code-define.md#endpoint-auto-scaling-add-code-custom).