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.
Puede utilizar modelos entrenados en una canalización de inferencia para realizar predicciones en tiempo real directamente sin realizar preprocesamiento externo. Al configurar la canalización, puede optar por utilizar los transformadores de funciones integrados que ya están disponibles en Amazon SageMaker AI. 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, la SageMaker IA proporciona 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 números enteros de varios dígitos. SageMaker La IA proporciona este valor automáticamente cuando se ejecuta el contenedor en una canalización de varios contenedores.
nota
Para utilizar imágenes de Docker personalizadas en una canalización que incluye algoritmos integrados de SageMaker IA, necesitas una política de Amazon Elastic Container Registry (Amazon ECR). Su repositorio de Amazon ECR debe conceder permiso a la SageMaker IA para extraer la imagen. Para obtener más información, consulte Solución de problemas de permisos de Amazon ECR 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 con el SDK de IA. SageMaker
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 ejemplo siguiente muestra cómo realizar predicciones en tiempo real llamando a un punto de conexión de inferencia y trasladando una carga 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
Puedes ejecutar este cuaderno de ejemplo con el SKLearn predictor