Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Ejecutar predicciones en tiempo real con una canalización de inferencia
Puede utilizar modelos entrenados en una canalización de inferencia para realizar predicciones en tiempo real directamente sin realizar preprocesamiento externo. Cuando configuras la canalización, puedes optar por utilizar los transformadores de funciones integrados que ya están disponibles en Amazon SageMaker. O bien, puede implementar su propia lógica de transformación con solo unas pocas líneas de código de scikit-learn o Spark.
MLeap
Los contenedores de una canalización escuchan en el puerto especificado en la variable de entorno SAGEMAKER_BIND_TO_PORT
(en lugar de 8080). Cuando se ejecuta en una canalización de inferencias, proporciona SageMaker automáticamente esta variable de entorno a los contenedores. Si esta variable de entorno no está presente, los contenedores de manera predeterminada asignan el uso del puerto 8080. Para indicar que el contenedor cumple con este requisito, ejecute el siguiente comando para añadir una etiqueta a su Dockerfile:
LABEL com.amazonaws.sagemaker.capabilities.accept-bind-to-port=true
Si su contenedor necesita escuchar en otro puerto, elija un puerto que esté en el intervalo especificado por la variable de entorno SAGEMAKER_SAFE_PORT_RANGE
. Especifique el valor como un rango inclusivo en el formato"XXXX-YYYY"
, donde XXXX
y YYYY
son enteros de varios dígitos. SageMaker proporciona este valor automáticamente al ejecutar el contenedor en una canalización de varios contenedores.
nota
Para usar imágenes de Docker personalizadas en una canalización que incluye algoritmos SageMaker integrados, necesitas una política de Amazon Elastic Container Registry (AmazonECR). Tu ECR repositorio de Amazon debe conceder SageMaker permiso para extraer la imagen. Para obtener más información, consulte Solucionar problemas de ECR permisos de Amazon para canalizaciones de inferencia.
Creación e implementación de un punto de conexión de canalización de inferencia
El siguiente código crea e implementa un modelo de canalización de inferencias en tiempo real con SparkML y XGBoost modelos en serie utilizando. 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)
Solicitar inferencia en tiempo real desde un punto de conexión de canalización de inferencia
El siguiente ejemplo muestra cómo realizar predicciones en tiempo real llamando a un punto final de inferencia y pasando una carga útil de solicitud en formato: JSON
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 respuesta que obtiene de predictor.predict(payload)
es el resultado de la inferencia del modelo.
Ejemplo de canalización de inferencia en tiempo real
Puede ejecutar este cuaderno de ejemplo con el SKLearn predictor