Le processeur PMML intégré à PAI déploie les modèles au format PMML en tant que services en ligne et permet une inférence en temps réel.
Informations générales
Vous pouvez utiliser le processeur PMML pour déployer un modèle PMML exporté depuis PAI vers EAS. Vous pouvez également convertir un modèle entraîné avec un framework open source tel que Sklearn ou Xgboost au format PMML, puis le déployer sur EAS. Pour plus d'informations, consultez Exporter un modèle généraliste.
Pour en savoir plus sur les modèles PMML, consultez l'Introduction aux modèles PMML.
Stratégies d'imputation des valeurs manquantes
Le processeur PMML propose des stratégies d'imputation par défaut pour les valeurs manquantes. Si un champ de caractéristique dans le fichier de modèle PMML ne spécifie pas de politique isMissing, le système utilise les valeurs par défaut suivantes.
|
Type de données |
Valeur par défaut |
|
BOOLEAN |
false |
|
DOUBLE |
0,0 |
|
FLOAT |
0,0 |
|
INT |
0 |
|
STRING |
"" |
Étape 1 : Déployer le service
Lors du déploiement d'un service de modèle PMML à l'aide du client eascmd, définissez le type de processor sur pmml. L'exemple suivant présente le fichier de configuration du service.
{
"name": "eas_lr_example",
"processor": "pmml",
"model_path": "http://examplebucket.oss-cn-shanghai.aliyuncs.com/models/lr.pmml",
"metadata": {
"instance": 1,
"cpu": 1
}
}
Pour plus d'informations sur le déploiement d'un service avec le client eascmd, consultez Déployer un service à l'aide d'EASCMD ou de DSW.
Vous pouvez également déployer un service de modèle PMML depuis la console. Pour plus d'informations, consultez Déployer un service depuis la console.
Étape 2 : Appeler le service
Suivez les étapes ci-dessous pour appeler le service.
-
Une fois le service PMML déployé, accédez à la page Elastic Algorithm Service (EAS). Localisez le service que vous souhaitez appeler et cliquez sur Invocation Information dans la colonne Service Type pour consulter l'endpoint utilisé pour accéder au service ainsi que le token d'authentification.
Construisez la requête de service.
Un service PMML utilise des fichiers JSON bruts pour les entrées et les sorties. Une seule requête prend en charge plusieurs échantillons, chaque échantillon étant constitué de données de caractéristiques au format clé-valeur. L'exemple suivant illustre le corps de la requête.
[ { "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 } ]RemarqueLors de l'envoi de la requête de service, vous pouvez supprimer les sauts de ligne et les espaces du fichier JSON afin de réduire le trafic réseau et d'améliorer les performances du service.
-
Envoyez la requête de service.
Les deux méthodes suivantes sont prises en charge :
ImportantSi vous transmettez le token directement dans l'en-tête HTTP, celui-ci circule en clair sur le réseau. Les SDK fournis par Alibaba Cloud signent la requête avec le token avant l'envoi, ce qui offre une sécurité accrue.
-
Utilisez la commande curl pour effectuer un test rapide de requête sur le service.
Le service expose un endpoint HTTP. Lors de l'envoi d'une requête, vous pouvez transmettre le token d'authentification directement dans l'en-tête HTTP, comme illustré dans l'exemple suivant.
// 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}]'Dans la commande précédente :
18284888792*.cn-shanghai.pai-eas.aliyuncs.com/api/predict/pmml_test** : remplacez cette valeur par l'endpoint obtenu à l'étape 1.
L'exemple suivant montre le résultat renvoyé.
[{"p_0":0.2856724025030001,"p_1":0.7143275974969999},{"p_0":0.18324957921381624,"p_1":0.8167504207861838}] -
Utilisez le SDK Python pour envoyer la requête. Pour plus d'informations, consultez le Guide d'utilisation du SDK Python.
Voici un exemple de code.
#!/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)
Pour plus d'informations sur les SDK clients disponibles dans d'autres langages, consultez les SDK d'appel de service.
-
Références
Vous pouvez également utiliser un autre processeur préconçu pour déployer un service en ligne EAS. Pour plus d'informations, consultez Déployer un service à l'aide d'un processeur préconçu.
Il est aussi possible de développer un processeur personnalisé et de l'utiliser pour déployer un service en ligne EAS. Pour plus d'informations, consultez Déployer un service à l'aide d'un processeur personnalisé.