全部產品
Search
文件中心

Platform For AI:PMML

更新時間:Jul 13, 2024

EAS內建的PMML Processor,支援將PMML格式的模型部署成線上服務,並提供線上即時推理。本文為您介紹如何部署及調用PMML模型服務。

背景資訊

Designer上匯出的PMML格式的演算法模型,可以使用PMML Processor部署到EAS中;使用Sklearn、Xgboost等開源演算法架構訓練的演算法模型,轉換成PMML格式後,也可以使用PMML Processor部署到EAS中,詳情請參見通用模型匯出

更多關於PMML模型的介紹,詳情請參見PMML模型介紹

缺失值填充策略

PMML Processor提供預設的缺失值填充策略。如果PMML模型檔案中的特徵欄位沒有指定缺失值填充(isMissing)策略,則系統預設以如下值進行填充。

資料類型

預設值填充

BOOLEAN

false

DOUBLE

0.0

FLOAT

0.0

INT

0

STRING

""

步驟一:部署服務

使用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模型服務,詳情請參見服務部署:控制台

步驟二:調用服務

參考以下步驟進行服務調用。

  1. PMML服務部署完成後,在模型線上服務(EAS)頁面,單擊待調用服務服務方式列下的調用資訊,查看服務訪問的Endpoint和用於服務鑒權的Token資訊。

  2. 構造服務要求。

    PMML服務的輸入輸出格式為JSON格式的純檔案,一次請求支援多條樣本輸入,每條樣本為KV格式的特徵資料,樣本如下。

    [
        {
            "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檔案中的換行和空格,以減小網路傳輸,提升服務效能。

  3. 發送服務要求。

    支援以下兩種方式:

    重要

    直接通過HTTP Header傳入,會使Token在網路中以明文方式傳輸;使用EAS提供的SDK,會使用Token對請求做簽名後再發送,安全性更高。

    • 使用curl命令對服務進行快速請求測試。

      服務提供HTTP訪問入口,發送請求時,可以將鑒權Token直接通過HTTP Header傳入,樣本如下。

      // 發送請求。
      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查詢的服務訪問的Endpoint。

      • Authorization:配置為步驟1查詢的用於服務鑒權的Token資訊。

      返回結果樣本如下。

      [{"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查詢的服務訪問的Endpoint和服務名稱。
          client = PredictClient('1828488879222***.cn-shanghai.pai-eas.aliyuncs.com', 'pmml_test')
          # 替換為步驟1查詢的用於服務鑒權的Token資訊。
          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

相關文檔