El procesador PMML integrado permite desplegar modelos en formato PMML como servicios en línea y proporciona inference en tiempo real.
Contexto
Puede usar el procesador PMML para desplegar un modelo PMML exportado desde hacia . También puede convertir un modelo entrenado con un framework de código abierto, como Sklearn o Xgboost, al formato PMML y luego desplegarlo en . Para obtener más información, consulte Export a general-purpose model.
Para obtener más información sobre los modelos PMML, consulte Introducción a los modelos PMML.
Estrategias de imputación de valores faltantes
El procesador PMML proporciona estrategias de imputación predeterminadas para los valores faltantes. Si un campo de función en el archivo del modelo PMML no especifica una directiva isMissing, el sistema usa los siguientes valores predeterminados.
|
Data type |
Default value |
|
BOOLEAN |
false |
|
DOUBLE |
0.0 |
|
FLOAT |
0.0 |
|
INT |
0 |
|
STRING |
"" |
Paso 1: Desplegar el servicio
Cuando despliegue un servicio de modelo PMML mediante el cliente eascmd, establezca el tipo de processor en pmml. El siguiente ejemplo muestra el archivo de configuración del servicio.
{
"name": "eas_lr_example",
"processor": "pmml",
"model_path": "http://examplebucket.oss-cn-shanghai.aliyuncs.com/models/lr.pmml",
"metadata": {
"instance": 1,
"cpu": 1
}
}
Para obtener más información sobre cómo desplegar un servicio mediante el cliente eascmd, consulte Deploy a service using EASCMD or DSW.
También puede desplegar un servicio de modelo PMML desde la consola. Para obtener más información, consulte Deploy a service from the console.
Paso 2: Invocar el servicio
Siga estos pasos para invocar el servicio.
-
Una vez desplegado el servicio PMML, vaya a la página de Elastic Algorithm Service (EAS). Busque el servicio que desea invocar y haga clic en Invocation Information en la columna Service Type para consultar el endpoint usado para acceder al servicio y el token usado para la autenticación del servicio.
Construya la solicitud del servicio.
Un servicio PMML usa archivos JSON simples para la entrada y la salida. Una sola solicitud admite varias muestras, y cada muestra consiste en datos de funciones en formato clave-valor. El siguiente ejemplo muestra el cuerpo de la solicitud.
[ { "address": 12, "age": 22, "ed": 4, "marital": 3.0, "region": 2.0, "tenure": 4.0 }, { "address": 2, "age": 34, "ed": 6, "marital": 1.3, "region": 2.1, "tenure": 4.2 } ]NotaAl enviar la solicitud del servicio, puede eliminar los saltos de línea y los espacios del archivo JSON para reducir el tráfico de red y mejorar el rendimiento del servicio.
-
Envíe la solicitud del servicio.
Se admiten los dos métodos siguientes:
ImportanteSi pasa el token directamente en el encabezado HTTP, el token se transmite por la red en texto plano. Los SDK proporcionados por firman la solicitud con el token antes de enviarla, lo cual es más seguro.
-
Use el comando curl para ejecutar una prueba rápida de solicitud en el servicio.
El servicio proporciona un endpoint HTTP. Al enviar una solicitud, puede pasar el token de autenticación directamente en el encabezado HTTP, como se muestra en el siguiente ejemplo.
// Send the request. curl -v 18284888792***.cn-shanghai.pai-eas.aliyuncs.com/api/predict/pmml_test \ -H 'Authorization: YmE3NDkyMzdiMzNmMGM3ZmE4ZmNjZDk0M2NiMDA***' \ -d '[{"region": 2.0, "marital":3.0,"tenure":4.0, "age":22,"address":12,"ed":4},{"region": 2.1, "marital":1.3,"tenure":4.2, "age":34,"address":2,"ed":6}]'En el comando anterior:
18284888792*.cn-shanghai.pai-eas.aliyuncs.com/api/predict/pmml_test**: Reemplace esta dirección con el endpoint que obtuvo en el paso 1.
El siguiente ejemplo muestra el resultado devuelto.
[{"p_0":0.2856724025030001,"p_1":0.7143275974969999},{"p_0":0.18324957921381624,"p_1":0.8167504207861838}] -
Use el SDK de Python para enviar la solicitud. Para obtener más información, consulte Python SDK usage guide.
Se proporciona el siguiente código de ejemplo.
#!/usr/bin/env python from eas_prediction import PredictClient from eas_prediction import StringRequest if __name__ == '__main__': # Replace with the endpoint and service name that you obtained in step 1. client = PredictClient('1828488879222***.cn-shanghai.pai-eas.aliyuncs.com', 'pmml_test') # Replace with the authentication token that you obtained in step 1. client.set_token('YmE3NDkyMzdiMzNmMGM3ZmE4ZmNjZDk0M2NiMDA***') client.init() req = StringRequest('[{"region": 2.0, "marital":3.0,"tenure":4.0, "age":22,"address":12,"ed":4},{"region": 2.1, "marital":1.3,"tenure":4.2, "age":34,"address":2,"ed":6}]') for x in range(100): resp = client.predict(req) print(resp)
Para obtener más información sobre los SDK de cliente en otros lenguajes, consulte Service invocation SDKs.
-
Referencias
También puede usar otro procesador predefinido para desplegar un servicio en línea de EAS. Para obtener más información, consulte Deploy a service using a pre-built processor.
Asimismo, puede desarrollar un procesador personalizado y usarlo para desplegar un servicio en línea de EAS. Para obtener más información, consulte Deploy a service using a custom processor.