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.
Réalisation de prédictions en temps réel avec un pipeline d'inférence
Vous pouvez utiliser des modèles entraînés dans un pipeline d'inférence pour réaliser des prédictions en temps réel directement, sans effectuer de prétraitement externe. Lorsque vous configurez le pipeline, vous pouvez choisir d'utiliser les transformateurs de fonctionnalités intégrés déjà disponibles dans Amazon SageMaker AI. Vous pouvez également implémenter votre propre logique de transformation en utilisant simplement quelques lignes de code Scikit-learn ou Spark.
MLeap
Les conteneurs figurant dans un pipeline sont à l'écoute sur le port spécifié dans la variable d'environnement SAGEMAKER_BIND_TO_PORT
(au lieu de 8080). Lorsqu'elle est exécutée dans un pipeline d'inférence, l' SageMaker IA fournit automatiquement cette variable d'environnement aux conteneurs. Si cette variable d'environnement n'est pas présente, les conteneurs utilisent par défaut le port 8080. Pour indiquer que votre conteneur répond à cette exigence, utilisez la commande suivante pour ajouter une étiquette à votre fichier Dockerfile :
LABEL com.amazonaws.sagemaker.capabilities.accept-bind-to-port=true
Si votre conteneur doit être à l'écoute sur un second port, choisissez un port dans la plage spécifiée par la variable d'environnement SAGEMAKER_SAFE_PORT_RANGE
. Spécifiez la valeur sous forme de plage inclusive au format"XXXX-YYYY"
, où XXXX
et YYYY
sont des entiers à plusieurs chiffres. SageMaker L'IA fournit cette valeur automatiquement lorsque vous exécutez le conteneur dans un pipeline multiconteneur.
Note
Pour utiliser des images Docker personnalisées dans un pipeline qui inclut des algorithmes intégrés à l'SageMaker IA, vous avez besoin d'une politique Amazon Elastic Container Registry (AmazonECR). Votre ECR référentiel Amazon doit autoriser l' SageMaker IA à extraire l'image. Pour de plus amples informations, veuillez consulter Résoudre les problèmes liés aux ECR autorisations Amazon pour les pipelines d'inférence.
Création et déploiement d'un point de terminaison de pipeline d'inférence
Le code suivant crée et déploie un modèle de pipeline d'inférence en temps réel avec SparkML et des XGBoost modèles en série utilisant l'IA. SageMaker SDK
from sagemaker.model import Model from sagemaker.pipeline_model import PipelineModel from sagemaker.sparkml.model import SparkMLModel sparkml_data = 's3://{}/{}/{}'.format(s3_model_bucket, s3_model_key_prefix, 'model.tar.gz') sparkml_model = SparkMLModel(model_data=sparkml_data) xgb_model = Model(model_data=xgb_model.model_data, image=training_image) model_name = 'serial-inference-' + timestamp_prefix endpoint_name = 'serial-inference-ep-' + timestamp_prefix sm_model = PipelineModel(name=model_name, role=role, models=[sparkml_model, xgb_model]) sm_model.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge', endpoint_name=endpoint_name)
Demande d'inférence en temps réel à partir d'un point de terminaison de pipeline d'inférence
L'exemple suivant montre comment effectuer des prédictions en temps réel en appelant un point de terminaison d'inférence et en transmettant une charge utile de demande au JSON format :
import sagemaker from sagemaker.predictor import json_serializer, json_deserializer, Predictor payload = { "input": [ { "name": "Pclass", "type": "float", "val": "1.0" }, { "name": "Embarked", "type": "string", "val": "Q" }, { "name": "Age", "type": "double", "val": "48.0" }, { "name": "Fare", "type": "double", "val": "100.67" }, { "name": "SibSp", "type": "double", "val": "1.0" }, { "name": "Sex", "type": "string", "val": "male" } ], "output": { "name": "features", "type": "double", "struct": "vector" } } predictor = Predictor(endpoint=endpoint_name, sagemaker_session=sagemaker.Session(), serializer=json_serializer, content_type='text/csv', accept='application/json' print(predictor.predict(payload))
La réponse que vous obtenez de predictor.predict(payload)
est le résultat d'inférence du modèle.
Exemple de pipeline d'inférence en temps réel
Vous pouvez exécuter cet exemple de bloc-notes à l'aide du SKLearn prédicteur