

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.

# Aufrufen eines Multimodell-Endpunkts
<a name="invoke-multi-model-endpoint"></a>

Um einen Endpunkt mit mehreren Modellen aufzurufen, verwenden Sie den [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-runtime.html#SageMakerRuntime.Client.invoke_endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-runtime.html#SageMakerRuntime.Client.invoke_endpoint)aus der SageMaker AI Runtime heraus so, als würden Sie einen einzelnen Modellendpunkt aufrufen, mit einer Änderung. Übergeben Sie einen neuen `TargetModel`-Parameter, der angibt, welches der Modelle am Endpunkt Ziel ist. Die SageMaker AI `InvokeEndpoint` Runtime-Anfrage wird `X-Amzn-SageMaker-Target-Model` als neuer Header unterstützt, der den relativen Pfad des für den Aufruf angegebenen Modells verwendet. Das SageMaker KI-System erstellt den absoluten Pfad des Modells, indem es das Präfix, das als Teil des `CreateModel` API-Aufrufs bereitgestellt wird, mit dem relativen Pfad des Modells kombiniert.

Die folgenden Verfahren sind für CPU- und GPU-gestützte Multimodell-Endpunkte identisch.

------
#### [ AWS SDK for Python (Boto 3) ]

In der folgenden Beispiel-Vorhersageanforderung wird das [AWS SDK für Python (Boto 3)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-runtime.html) im Beispiel-Notebook verwendet.

```
response = runtime_sagemaker_client.invoke_endpoint(
                        EndpointName = "<ENDPOINT_NAME>",
                        ContentType  = "text/csv",
                        TargetModel  = "<MODEL_FILENAME>.tar.gz",
                        Body         = body)
```

------
#### [ AWS CLI ]

 Das folgende Beispiel zeigt, wie Sie mit Hilfe der AWS Command Line Interface (AWS CLI) eine CSV-Anfrage mit zwei Zeilen erstellen:

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name "<ENDPOINT_NAME>" \
  --body "1.0,2.0,5.0"$'\n'"2.0,3.0,4.0" \
  --content-type "text/csv" \
  --target-model "<MODEL_NAME>.tar.gz"
  output_file.txt
```

Eine `output_file.txt` mit Angaben zu Ihren Inference-Anfragen wird erstellt, wenn die Inference erfolgreich war. Weitere Beispiele dafür, wie Sie mit dem Vorhersagen treffen können AWS CLI, finden Sie unter [Vorhersagen mit dem](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/deploying_tensorflow_serving.html#making-predictions-with-the-aws-cli) erstellen AWS CLI in der SageMaker Python SDK-Dokumentation.

------

Der Multimodell-Endpunkt lädt Zielmodelle nach Bedarf dynamisch. Dies ist zu beobachten, wenn Sie das [MME-Beispiel-Notebook](https://sagemaker-examples.readthedocs.io/en/latest/advanced_functionality/multi_model_xgboost_home_value/xgboost_multi_model_endpoint_home_value.html) ausführen, da es zufällige Aufrufe für mehrere Zielmodelle durchläuft, die hinter einem einzelnen Endpunkt gehostet werden. Die erste Anfrage für ein bestimmtes Modell dauert länger, da das Modell von Amazon Simple Storage Service (Amazon S3) heruntergeladen und in den Speicher geladen werden muss. Dies wird als *Kaltstart* bezeichnet und ist bei Multimodell-Endpunkten zu erwarten. Damit soll die Handhabung im Hinblick auf ein besseres Preis-/Leistungsverhältnis für den Kunden optimiert werden. Nachfolgende Aufrufe werden schneller beendet, da nach dem Laden des Modells kein zusätzlicher Overhead vorhanden ist.

**Anmerkung**  
Bei GPU-gestützten Instances weist der HTTP-Antwortcode mit 507 aus dem GPU-Container darauf hin, dass zu wenig Arbeitsspeicher oder einer sonstigen Ressource zur Verfügung steht. Dies führt dazu, dass nicht genutzte Modelle aus dem Container entladen werden, um häufiger verwendete Modelle zu laden.

## Anfragen bei Fehlern erneut versuchen ModelNotReadyException
<a name="invoke-multi-model-config-retry"></a>

Wenn Sie `invoke_endpoint` zum ersten Mal aufrufen, um ein Modell zu erhalten, wird dieses von Amazon Simple Storage Service heruntergeladen und in den Inference-Container geladen. Daher dauert es länger, bis der erste Anruf abgearbeitet wird. Nachfolgende Aufrufe desselben Modells werden schneller abgearbeitet, da das Modell bereits geladen ist.

SageMaker KI gibt `invoke_endpoint` innerhalb von 60 Sekunden eine Antwort auf einen Anruf zurück. Manche Modelle sind zu groß, um sie innerhalb von 60 Sekunden herunterzuladen. Wenn das Modell nicht vor Ablauf der Zeitüberschreitung nach 60 Sekunden geladen wird, wird die Anfrage nach `invoke_endpoint` mit dem Fehlercode `ModelNotReadyException` zurückgegeben, und das Modell wird bis zu 360 Sekunden lang weiter heruntergeladen und in den Inference-Container geladen. Wenn Sie einen `ModelNotReadyException` Fehlercode auf eine `invoke_endpoint` Anfrage erhalten, versuchen Sie es erneut. Standardmäßig werden die `invoke_endpoint` Wiederholungsanforderungen AWS SDKs für Python (Boto 3) (mit [Legacy-Wiederholungsmodus](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/retries.html#legacy-retry-mode)) und Java wiederholt, die zu Fehlern führen. `ModelNotReadyException` Sie können die Wiederholungsstrategie so konfigurieren, dass die Anfrage bis zu 360 Sekunden lang wiederholt wird. Wenn Sie davon ausgehen, dass das Herunterladen und Laden Ihres Modells in den Container länger als 60 Sekunden dauert, legen Sie das SDK-Socket-Timeout auf 70 Sekunden fest. Weitere Informationen zur Konfiguration der Wiederholungsstrategie für AWS SDK für Python (Boto3) finden Sie unter [Konfigurieren eines Wiederholungsmodus](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/retries.html#configuring-a-retry-mode). Der folgende Code zeigt ein Beispiel, bei dem die Wiederholungsstrategie so konfiguriert wird, dass Aufrufe für `invoke_endpoint` bis zu 180 Sekunden lang wiederholt werden.

```
import boto3
from botocore.config import Config

# This example retry strategy sets the retry attempts to 2. 
# With this setting, the request can attempt to download and/or load the model 
# for upto 180 seconds: 1 orginal request (60 seconds) + 2 retries (120 seconds)
config = Config(
    read_timeout=70,
    retries={
        'max_attempts': 2  # This value can be adjusted to 5 to go up to the 360s max timeout
    }
)
runtime_sagemaker_client = boto3.client('sagemaker-runtime', config=config)
```