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
Um einen Endpunkt mit mehreren Modellen aufzurufen, verwenden Sie den invoke_endpoint
TargetModel
-Parameter, der angibt, welches der Modelle am Endpunkt Ziel ist. Die SageMaker 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 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 beide CPU und für Endpunkte mit mehreren GPU Modellen identisch.
Der Multimodell-Endpunkt lädt Zielmodelle nach Bedarf dynamisch. Sie können dies beobachten, wenn Sie das MMEBeispiel-Notizbuch
Anmerkung
Bei GPU gesicherten Instances weist der HTTP Antwortcode mit 507 aus dem GPU Container auf einen Mangel an Arbeitsspeicher oder anderen Ressourcen hin. 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
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 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-WiederholungsmodusModelNotReadyException
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, setzen Sie das SDK Socket-Timeout auf 70 Sekunden. Weitere Informationen zur Konfiguration der Wiederholungsstrategie für AWS SDK for Python (Boto3) finden Sie unter Konfigurieren eines Wiederholungsmodusinvoke_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)