全部產品
Search
文件中心

Platform For AI:使用Java開發自訂Processor

更新時間:Jul 13, 2024

本文為您介紹如何使用Java開發自訂Processor。

介面定義

使用Java開發自訂Processor僅需要定義一個類,該類中除建構函式以外,只需要Load()Process()函數即可。類的原型如下。
package com.alibaba.eas;
import java.util.*;
public class TestProcessor {
  public TestProcessor(String modelEntry, String modelConfig) {
    /*傳遞模型檔案名稱,可以添加初始化工作。*/
  }
  public void Load() {
    /*根據模型名載入模型資訊。*/
  }
  public byte[] Process(byte[] input) {
    /*對輸入資料進行預測處理並返回結果。支援BYTE[]和STRING,推薦使用BYTE[],可以避免編碼問題。*/
  }
  public static void main(String[] args) {
    /*主函數為非必選,可以在本地單機驗證類功能。*/
  }
}
如果拋出異常,架構會捕獲該異常,並將Exception中的message作為錯誤資訊返回給用戶端,同時HTTP響應400。您也可以自己捕獲異常,輸出自己的異常錯誤資訊,樣本如下。
try{
} catch (com.alibaba.fastjson.JSONException e) {
  throw new RuntimeException("bad json format, " + e.getMessage());
}

單機開發調試

單機調試功能用於非叢集模式,使用者在本地環境中對模型或Processor進行開發及調試,其開發介面及調用介面與線上叢集環境完全相容。該功能不僅可以避免您在開發測試階段頻繁部署新服務,而且可以節省調試所用的資源費用。
說明 該功能依賴於Docker,需要在運行EASCMD的伺服器上預裝Docker。如果需要GPU及CUDA,則必須預先在本地安裝CUDA及Nvidia-Docker。
單機調試的方法如下:
  1. 如果未安裝Docker,則參見Docker安裝進行安裝。
  2. 下載用戶端工具EASCMD,各版本的下載地址如下:
  3. 建立服務組態檔。
    在設定檔中,指定需要部署的模型和編寫的Processor,樣本如下。
    {
      "name": "diy_test",
      "generate_token": "true",
      "model_path": "http://examplebucket.oss-cn-hangzhou-zmf.aliyuncs.com/scorecard.pmml", #支援HTTP路徑或本地路徑(僅用於本地調試)。
      "processor_path": "./diy_processor_release.tar.gz", #支援HTTP路徑或本地路徑(僅用於本地調試),解壓後為java processor編譯的jar包。
      "processor_mainclass": "com.alibaba.eas.TestProcessor", #java processor中實現Load()和Process()的主類名。
      "processor_type": "java",
      "metadata": {
         "resource": "eas-r-9lkbl2jvdm0puv****", #resource欄位表示使用專屬資源群組部署服務。
         "instance": 1,
         "cpu": 1,
         "memory": 2000
      }
    }
    相關欄位說明請參見命令使用說明
  4. 部署調試。
    sudo eascmd test service.json