O processador PMML integrado implanta modelos no formato PMML como serviços online e fornece inferência online em tempo real.
Informações básicas
Use o processador PMML para implantar um modelo PMML exportado para o . Você também pode converter um modelo treinado com um framework open source, como Sklearn ou Xgboost, para o formato PMML e implantá-lo no . Para obter mais informações, consulte Export a general-purpose model.
Para saber mais sobre modelos PMML, acesse Introdução aos modelos PMML.
Estratégias de imputação de valores ausentes
O processador PMML oferece estratégias padrão de imputação para valores ausentes. Caso um campo de recurso no arquivo do modelo PMML não especifique uma política isMissing, o sistema utiliza os seguintes valores padrão.
|
Tipo de dados |
Valor padrão |
|
BOOLEAN |
false |
|
DOUBLE |
0,0 |
|
FLOAT |
0,0 |
|
INT |
0 |
|
STRING |
"" |
Etapa 1: Implantar o service
Ao implantar um service de modelo PMML com o cliente eascmd, defina o tipo do processor como pmml. O exemplo a seguir apresenta o arquivo de configuração do service.
{
"name": "eas_lr_example",
"processor": "pmml",
"model_path": "http://examplebucket.oss-cn-shanghai.aliyuncs.com/models/lr.pmml",
"metadata": {
"instance": 1,
"cpu": 1
}
}
Para obter mais detalhes sobre como implantar um service usando o cliente eascmd, consulte Deploy a service using EASCMD or DSW.
Você também pode implantar um service de modelo PMML pelo console. Para mais informações, consulte Deploy a service from the console.
Etapa 2: Chamar o service
Siga as etapas abaixo para chamar o service.
-
Após a implantação do service PMML, acesse a página Elastic Algorithm Service (EAS). Localize o service desejado e clique em Invocation Information na coluna Service Type para visualizar o endpoint de acesso ao service e o token de autenticação.
Construa a requisição do service.
Um service PMML utiliza arquivos JSON simples para entrada e saída. Uma única requisição aceita múltiplas amostras, e cada amostra contém dados de recursos no formato chave-valor. O exemplo abaixo ilustra o corpo da requisição.
[ { "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 } ]NotaAo enviar a requisição, remova as quebras de linha e espaços do arquivo JSON para reduzir o tráfego de rede e melhorar o desempenho do service.
-
Envie a requisição ao service.
Dois métodos são suportados:
ImportantePassar o token diretamente no cabeçalho HTTP transmite essa credencial em texto plano pela rede. Os SDKs fornecidos pelo assinam a requisição com o token antes do envio, garantindo maior segurança.
-
Utilize o comando curl para executar um teste rápido de requisição no service.
O service disponibiliza um endpoint HTTP. Ao enviar uma requisição, passe o token de autenticação diretamente no cabeçalho HTTP, conforme o exemplo a seguir.
// 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}]'No comando anterior:
18284888792*.cn-shanghai.pai-eas.aliyuncs.com/api/predict/pmml_test**: Substitua pelo endpoint obtido na etapa 1.
O exemplo a seguir mostra o resultado retornado.
[{"p_0":0.2856724025030001,"p_1":0.7143275974969999},{"p_0":0.18324957921381624,"p_1":0.8167504207861838}] -
Envie a requisição utilizando o SDK do Python. Para mais detalhes, consulte Python SDK usage guide.
Confira o código de exemplo abaixo.
#!/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 informações sobre SDKs cliente em outras linguagens, consulte Service invocation SDKs.
-
Referências
Outros processadores pré-construídos também permitem implantar um service online do EAS. Para saber mais, consulte Deploy a service using a pre-built processor.
Caso prefira, desenvolva um processador personalizado para implantar um service online do EAS. Consulte Deploy a service using a custom processor para mais detalhes.