Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Invoquer un point de terminaison multimodèle
Pour appeler un point de terminaison multimodèles, utilisez le invoke_endpoint
TargetModel
qui spécifie le modèle au point de terminaison à cibler. La demande InvokeEndpoint
du runtime SageMaker prend en charge X-Amzn-SageMaker-Target-Model
comme nouvel en-tête qui prend le chemin relatif du modèle spécifié pour l'appel. Le système SageMaker crée le chemin absolu du modèle en combinant le préfixe fourni dans le cadre de l'appel d'API CreateModel
avec le chemin relatif du modèle.
Les procédures suivantes sont les mêmes pour les points de terminaison multi-modèles basés sur des processeurs et des GPU.
Le point de terminaison multimodèle charge dynamiquement les modèles cibles selon les besoins. Vous pouvez observer cela lors de l'exécution de l'Exemple de bloc-notes MME
Note
Pour les instances basées sur des GPU, le code de réponse HTTP 507 provenant du conteneur GPU indique un manque de mémoire ou d'autres ressources. Cela entraîne le déchargement des modèles non utilisés du conteneur afin de charger les modèles les plus fréquemment utilisés.
Relancer des demandes après des erreurs ModelNotReadyException
La première fois que vous appelez invoke_endpoint
pour un modèle, le modèle est téléchargé depuis Amazon Simple Storage Service et chargé dans le conteneur d'inférence. Le renvoi du premier appel est donc plus long. Les appels suivants au même modèle se terminent plus rapidement, car le modèle est déjà chargé.
SageMaker renvoie une réponse pour un appel à invoke_endpoint
en moins de 60 secondes. Certains modèles sont trop volumineux pour être téléchargés en 60 secondes. Si le chargement du modèle ne se termine pas dans les 60 secondes prévues, la demande de invoke_endpoint
revient avec le code d'erreur ModelNotReadyException
, et le téléchargement et le chargement du modèle dans le conteneur d'inférence se poursuivent pendant une durée maximale de 360 secondes. Si vous obtenez un code d'erreur ModelNotReadyException
pour une demande invoke_endpoint
, relancez la demande. Par défaut, les kits SDK AWS pour Python (Boto3) (utilisant le mode de relance héritéinvoke_endpoint
qui aboutissent à des erreurs ModelNotReadyException
. Vous pouvez configurer la stratégie de relance pour continuer de relancer la demande pendant une durée maximale de 360 secondes. Si vous pensez que le téléchargement et le chargement de votre modèle dans le conteneur prendront plus de 60 secondes, définissez le délai d'expiration du socket SDK sur 70 secondes. Pour plus d'informations sur la configuration de la stratégie de relance pour le AWS SDK for Python (Boto3), consultez Configuring a retry modeinvoke_endpoint
pendant 180 secondes maximum.
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)