

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.

# Ejecute Real-time predicciones con una canalización de inferencias
<a name="inference-pipeline-real-time"></a>

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](https://combust.github.io/mleap-docs/), un formato de serialización y motor de ejecución para canalizaciones de aprendizaje automático, es compatible con Spark, scikit-learn y permite entrenar canalizaciones y TensorFlow exportarlas a una canalización serializada denominada mLeap Bundle. Puede deserializar paquetes en Spark para la puntuación en modo de lotes o en el tiempo de ejecución de MLeap para impulsar servicios de API en tiempo real.

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 IA proporciona automáticamente esta variable de entorno a los contenedores. SageMaker 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](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html), necesitas una política de [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html). 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](inference-pipeline-troubleshoot.md#inference-pipeline-troubleshoot-permissions).

## Creación e implementación de un punto de conexión de canalización de inferencia
<a name="inference-pipeline-real-time-sdk"></a>

El siguiente código crea e implementa un modelo de canalización de inferencias en tiempo real con los modelos SparkML y XGBoost en serie mediante 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)
```

## Solicita la Real-Time inferencia desde un punto final de la canalización de inferencias
<a name="inference-pipeline-endpoint-request"></a>

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
<a name="inference-pipeline-example"></a>

Puede ejecutar este [bloc de notas de ejemplo mediante el predictor SKLearn](https://github.com/awslabs/amazon-sagemaker-examples/blob/master/sagemaker-python-sdk/scikit_learn_randomforest/Sklearn_on_SageMaker_end2end.ipynb) que muestra cómo implementar un punto de conexión, ejecutar una solicitud de inferencia y, a continuación, deserializar la respuesta. Encuentra este cuaderno y otros ejemplos en el [ GitHub repositorio de SageMaker ejemplos de Amazon](https://github.com/awslabs/amazon-sagemaker-examples).