組み込みの PMML プロセッサは、PMML 形式のモデルをオンラインサービスとしてデプロイし、リアルタイムでオンライン推論を提供します。
背景情報
PMML プロセッサを使用して、からエクスポートした PMML モデルを にデプロイできます。また、Sklearn や Xgboost などのオープンソースフレームワークでトレーニングしたモデルを PMML 形式に変換してから にデプロイすることもできます。詳細については、「汎用モデルのエクスポート」をご参照ください。
PMML モデルの詳細については、「PMML モデルの概要」をご参照ください。
欠損値補完戦略
PMML プロセッサは、欠損値に対してデフォルトの補完戦略を提供します。PMML モデルファイル内のフィーチャーフィールドで isMissing ポリシーが指定されていない場合、システムは次のデフォルト値を使用します。
データ型 | デフォルト値 |
BOOLEAN | false |
DOUBLE | 0.0 |
FLOAT | 0.0 |
INT | 0 |
文字列 | "" |
ステップ 1:サービスのデプロイ
eascmd クライアントを使用して PMML モデルサービスをデプロイする場合、processor タイプを pmml に設定します。以下はサービス設定ファイルの例です。
{
"name": "eas_lr_example",
"processor": "pmml",
"model_path": "http://examplebucket.oss-cn-shanghai.aliyuncs.com/models/lr.pmml",
"metadata": {
"instance": 1,
"cpu": 1
}
}eascmd クライアントを使用してサービスをデプロイする方法の詳細については、「EASCMD または DSW を使用したサービスのデプロイ」をご参照ください。
コンソールで PMML モデルサービスをデプロイすることもできます。詳細については、「コンソールからのサービスのデプロイ」をご参照ください。
ステップ 2:サービスの呼び出し
サービスを呼び出すには、次の手順を実行します。
PMML サービスがデプロイされたら、[Elastic Algorithm Service (EAS)] ページに移動し、呼び出したいサービスを見つけて サービス方式 列の 呼び出し情報 をクリックすると、サービスへのアクセスに使用されるエンドポイントとサービス認証に使用されるトークンが表示されます。
サービスリクエストを構築します。
PMML サービスは、入出力にプレーン JSON ファイルを使用します。1 つのリクエストで複数のサンプルをサポートしており、各サンプルはキーバリュー形式のフィーチャーデータです。以下はリクエストボディの例です。
[ { "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 } ]説明サービスリクエストを送信する際、JSON ファイルから改行とスペースを削除することで、ネットワークトラフィックを削減し、サービスのパフォーマンスを向上させることができます。
サービスリクエストを送信します。
次の2つの方法が利用できます。
重要HTTP ヘッダーで認証トークンを直接渡す場合、トークンはネットワーク上で平文として送信されます。が提供する SDK は、送信前に認証トークンを使用してリクエストに署名するため、より安全です。
curl コマンドを使用して、サービスに対する簡単なテストリクエストを実行します。
サービスは HTTP エンドポイントを提供します。リクエストを送信する際、以下の例のように、HTTP ヘッダーで認証トークンを直接渡すことができます。
// リクエストを送信します。 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}]'上記のコマンドの説明:
18284888792***.cn-shanghai.pai-eas.aliyuncs.com/api/predict/pmml_test:ステップ 1 で取得したエンドポイントに置き換えます。
以下は返された結果の例です。
[{"p_0":0.2856724025030001,"p_1":0.7143275974969999},{"p_0":0.18324957921381624,"p_1":0.8167504207861838}]Python SDK を使用してリクエストを送信します。詳細については、「Python SDK 使用ガイド」をご参照ください。
以下のサンプルコードを参照してください。
#!/usr/bin/env python from eas_prediction import PredictClient from eas_prediction import StringRequest if __name__ == '__main__': # ステップ 1 で取得したエンドポイントとサービス名に置き換えます。 client = PredictClient('1828488879222***.cn-shanghai.pai-eas.aliyuncs.com', 'pmml_test') # ステップ 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)
その他の言語のクライアント SDK の詳細については、「サービス呼び出し SDK」をご参照ください。
関連ドキュメント
他の事前構築済みプロセッサを使用して EAS オンラインサービスをデプロイすることもできます。詳細については、「事前構築済みプロセッサを使用したサービスのデプロイ」をご参照ください。
カスタムプロセッサを開発して EAS オンラインサービスをデプロイすることもできます。詳細については、「カスタムプロセッサを使用したサービスのデプロイ」をご参照ください。