Processor是包含在线预测逻辑的程序包。PAI-EAS已将一些常用的Processor预置为官方Processor,您可以直接使用该官方Processor部署常规模型,节省开发在线预测逻辑的成本。

PAI-EAS提供的Processor名称及Code如下表所示(使用EASCMD部署服务时,需要提供Processor Code)。
Processor名称 Processor Code(仅用于EASCMD部署) 文档
CPU版 GPU版
PMML pmml PMML Processor
TensorFlow1.12 tensorflow_cpu_1.12 tensorflow_gpu_1.12 TensorFlow1.12 Processor
TensorFlow1.14 tensorflow_cpu_1.14 tensorflow_gpu_1.14 TensorFlow1.14 Processor
TensorFlow1.15 tensorflow_cpu_1.15 tensorflow_gpu_1.15 TensorFlow1.15 Processor(内置PAI-Blade敏捷版优化引擎)
PyTorch1.6 pytorch_cpu_1.6 pytorch_gpu_1.6 PyTorch1.6 Processor(内置PAI-Blade敏捷版优化引擎)
Caffe caffe_cpu caffe_gpu Caffe Processor
PS算法 parameter_sever
Alink alink_pai_processor
xNN xnn_cpu
EasyVision easy_vision_cpu_tf1.12_torch151 easy_vision_gpu_tf1.12_torch151 EasyVision Processor
EasyNLP easy_nlp_cpu_tf1.12 easy_nlp_gpu_tf1.12 EasyNLP Processor
Blade blade_cpu blade_cuda10.0_beta
MediaFlow mediaflow MediaFlow Processor

PMML Processor

PMML(Predictive Model Markup Language)是一种预测模型标记语言,在PAI-Studio训练的传统机器学习模型基本都能够以该格式导出。从PAI-Studio导出PMML模型的方法如下:
  1. 模型训练前,在PAI-Studio首页,单击设置 > 基本设置,并选中自动生成PMML复选框。
  2. 模型训练完成后,右键单击画布中的模型训练节点,在快捷菜单,单击模型选项 > 导出PMML
说明 PAI-Studio中,可以生成PMML模型的算法包括GBDT二分类、线性支持向量机、逻辑回归二分类、逻辑回归多分类、随机森林、KMeans、线性回归、GBDT回归及评分卡训练等。
PAI-EAS预置的PMML Processor主要功能包括:
  • 将PMML类型的模型文件加载为一个服务。
  • 处理对模型服务进行调用的请求。
  • 根据模型计算请求结果,并将其返回至客户端。
PMML Processor提供默认的缺失值填充策略。如果PMML模型文件中的特征字段无指定isMissing策略,则系统默认以如下值进行填充。
DataType 默认填充值
BOOLEAN false
DOUBLE 0.0
FLOAT 0.0
INT 0
STRING “”
您可以通过如下任何一种方式部署PMML模型:
  • 控制台上传

    选择Processor种类PMML,详情请参见控制台上传部署

  • PAI-Studio一键部署

    详情请参见PAI-Studio一键部署

  • 本地客户端部署
    在服务配置文件service.json中,将processor字段配置为相应的Processor Code,即pmml,示例如下。
    {
      "processor": "pmml",
      "generate_token": "true",
      "model_path": "http://xxxxx/lr.pmml",
      "name": "eas_lr_example",
      "metadata": {
        "instance": 1,
        "cpu": 1 #自动为每个CPU配置4 GB内存,称为1 Quota。
      }
    }
  • PAI-DSW部署

    类似于本地客户端部署,编写服务配置文件service.json,详情请参见服务部署

TensorFlow1.12 Processor

PAI-EAS提供的TensorFlow1.12 Processor可以加载SavedModel(推荐)或SessionBundle格式的TensorFlow模型。对于Keras和Checkpoint模型,需要先将其转换为Savedmodel模型,再进行部署,详情请参见TensorFlow模型如何导出为SavedModel
说明 官方通用Processor不支持TensorFlow自定义OP。
您可以通过如下任何一种方式部署TensorFlow模型:
  • 控制台上传

    选择Processor种类TensorFlow1.12,详情请参见控制台上传部署

  • PAI-Studio一键部署

    详情请参见PAI-Studio一键部署

  • 本地客户端部署
    在服务配置文件service.json中,将processor字段配置为相应的Processor Code,即tensorflow_cpu_1.12tensorflow_gpu_1.12(需要根据部署所用的资源进行选择,如果processor与资源不匹配,则会导致部署报错),示例如下。
    {
      "name": "tf_serving_test",
      "generate_token": "true",
      "model_path": "http://xxxxx/savedmodel_example.zip",
      "processor": "tensorflow_cpu_1.12",
      "metadata": {
        "instance": 1,
        "cpu": 1,
        "gpu": 0,
        "memory": 2000
      }
    }
  • PAI-DSW部署

    类似于本地客户端部署,编写服务配置文件service.json,详情请参见服务部署

TensorFlow1.14 Processor

PAI-EAS提供的TensorFlow1.14 Processor可以加载SavedModel(推荐)或SessionBundle格式的TensorFlow模型。对于Keras和Checkpoint模型,需要先将其转换为Savedmodel模型,再进行部署,详情请参见TensorFlow模型如何导出为SavedModel
说明 官方通用Processor不支持TensorFlow自定义OP。
您可以通过如下任何一种方式部署TensorFlow模型:
  • 控制台上传

    选择Processor种类TensorFlow1.14,详情请参见控制台上传部署

  • PAI-Studio一键部署

    详情请参见PAI-Studio一键部署

  • 本地客户端部署
    在服务配置文件service.json中,将processor字段配置为相应的Processor Code,即tensorflow_cpu_1.14tensorflow_gpu_1.14(需要根据部署所用的资源进行选择,如果processor与资源不匹配,则会导致部署报错),示例如下。
    {
      "name": "tf_serving_test",
      "generate_token": "true",
      "model_path": "http://xxxxx/savedmodel_example.zip",
      "processor": "tensorflow_cpu_1.14",
      "metadata": {
        "instance": 1,
        "cpu": 1,
        "gpu": 0,
        "memory": 2000
      }
    }
  • PAI-DSW部署

    类似于本地客户端部署,编写服务配置文件service.json,详情请参见服务部署

TensorFlow1.15 Processor(内置PAI-Blade敏捷版优化引擎)

PAI-EAS提供的TensorFlow1.15 Processor可以加载SavedModel(推荐)或SessionBundle格式的TensorFlow模型。对于Keras和Checkpoint模型,需要先将其转换为Savedmodel模型,再进行部署,详情请参见TensorFlow模型如何导出为SavedModel
说明
  • 官方通用Processor不支持TensorFlow自定义OP。
  • 该Processor内置了PAI-Blade敏捷版优化引擎,您可以使用它部署PAI-Blade敏捷版优化后的TensorFlow模型。
您可以通过如下任何一种方式部署TensorFlow模型:
  • 控制台上传

    选择Processor种类TensorFlow1.15,详情请参见控制台上传部署

  • PAI-Studio一键部署

    详情请参见PAI-Studio一键部署

  • 本地客户端部署
    在服务配置文件service.json中,将processor字段配置为相应的Processor Code,即tensorflow_cpu_1.15tensorflow_gpu_1.15(需要根据部署所用的资源进行选择,如果processor与资源不匹配,则会导致部署报错),示例如下。
    {
      "name": "tf_serving_test",
      "generate_token": "true",
      "model_path": "http://xxxxx/savedmodel_example.zip",
      "processor": "tensorflow_cpu_1.15",
      "metadata": {
        "instance": 1,
        "cpu": 1,
        "gpu": 0,
        "memory": 2000
      }
    }
  • PAI-DSW部署

    类似于本地客户端部署,编写服务配置文件service.json,详情请参见服务部署。关于服务配置文件中的参数解释请参见创建服务

PyTorch1.6 Processor(内置PAI-Blade敏捷版优化引擎)

PAI-EAS提供的PyTorch1.6 Processor可以加载TorchScript格式的模型,详情请参见TorchScript官方介绍
说明
  • 官方通用Processor不支持PyTorch扩展、不支持非Tensor类型的模型输入和输出。
  • 该Processor内置了PAI-Blade敏捷版优化引擎,您可以使用它部署PAI-Blade敏捷版优化后的PyTorch模型。
您可以通过如下任何一种方式部署TorchScript模型:
  • 控制台上传

    选择Processor种类PyTorch1.6,详情请参见控制台上传部署

  • PAI-Studio一键部署

    详情请参见PAI-Studio一键部署

  • 本地客户端部署
    在服务配置文件service.json中,将processor字段配置为相应的Processor Code,即pytorch_cpu_1.6pytorch_gpu_1.6(需要根据部署所用的资源进行选择,如果processor与资源不匹配,则会导致部署报错),示例如下。
    {
      "name": "pytorch_serving_test",
      "generate_token": "true",
      "model_path": "http://xxxxx/torchscript_model.pt",
      "processor": "pytorch_gpu_1.6",
      "metadata": {
        "instance": 1,
        "cpu": 1,
        "gpu": 1,
        "cuda": "10.0",
        "memory": 2000
      }
    }
  • PAI-DSW部署

    类似于本地客户端部署,编写服务配置文件service.json,详情请参见服务部署。关于服务配置文件中的参数解释请参见创建服务

Caffe Processor

PAI-EAS提供的Caffe Processor可以加载Caffe框架训练得到的深度学习模型。因为Caffe框架比较灵活,所以部署Caffe模型时,需要指定模型包的Model文件名称和Weight文件名称。
说明 官方通用Processor不支持自定义DataLayer。
您可以通过如下任何一种方式部署Caffe模型:
  • 控制台上传

    选择Processor种类Caffe,详情请参见控制台上传部署

  • PAI-Studio一键部署

    详情请参见PAI-Studio一键部署

  • 本地客户端部署
    在服务配置文件service.json中,将processor字段配置为相应的Processor Code,即caffe_cpucaffe_gpu(需要根据部署所用的资源进行选择,如果processor与资源不匹配,则会导致部署报错),示例如下。
    {
      "name": "caffe_serving_test",
      "generate_token": "true",
      "model_path": "http://xxxxx/caffe_model.zip",
      "processor": "caffe_cpu",
      "model_config": {
        "model": "deploy.prototxt",
        "weight": "bvlc_reference_caffenet.caffemodel"
      },
      "metadata": {
        "instance": 1,
        "cpu": 1,
        "gpu": 0,
        "memory": 2000
      }
    }
  • PAI-DSW部署

    类似于本地客户端部署,编写服务配置文件service.json,详情请参见服务部署

EasyNLP Processor

PAI-EAS提供的EasyNLP Processor可以加载EasyTransfer框架训练得到的深度学习NLP模型。

您可以通过如下任何一种方式部署EasyTransfer模型:
  • 控制台上传

    选择Processor种类EasyNLP,详情请参见控制台上传部署

  • 本地客户端部署
    在服务配置文件service.json中,将processor字段配置为相应的Processor Code,即easy_nlp_cpu_tf1.12easy_nlp_gpu_tf1.12(需要根据部署所用的资源进行选择,如果processor与资源不匹配,则会导致部署报错),在model_configtype字段指定训练时所使用的模型类型,示例如下。其他参数的详细解释请参见创建服务
    • 使用GPU部署的配置
      {
        "name": "ev_app_demo",
        "generate_token": "true",
        "model_path": "http://xxxxx/your_model.zip",
        "processor": "easy_nlp_gpu_tf1.12",
        "model_config": "{\"type\":\"text_classify_bert\"}",
        "metadata": {
          "resource": "your_resource_name",
          "cuda": "9.0",
          "instance": 1,
          "memory": 4000,
          "gpu": 1,
          "cpu": 4,
          "rpc.worker_threads" : 5
        }
      }
    • 使用CPU部署的配置
      {
        "name": "easynlp_serving_test",
        "generate_token": "true",
        "model_path": "http://xxxxx/your_model.zip",
        "processor": "easy_nlp_cpu_tf1.12",
        "model_config": "{\"type\":\"text_classify_bert\"}",
        "metadata": {
          "resource": "your_resource_name",
          "instance": 1,
          "gpu": 0,
          "cpu": 4,
          "rpc.worker_threads" : 5
        }
      }

EasyVision Processor

PAI-EAS提供的EasyVision Processor可以加载EasyVision框架训练得到的深度学习模型。

您可以通过如下任何一种方式部署EasyVision模型:
  • 控制台上传

    选择Processor种类EasyVision,详情请参见控制台上传部署

  • 本地客户端部署
    在服务配置文件service.json中,将processor字段配置为相应的Processor Code,即easy_vision_cpu_tf1.12_torch151easy_vision_gpu_tf1.12_torch151(需要根据部署所用的资源进行选择,如果processor与资源不匹配,则会导致部署报错),在model_configtype字段指定训练时所使用的模型类型,示例如下。其他参数的详细解释请参见创建服务
    • 使用GPU部署的配置
      {
        "name": "ev_app_demo",
        "processor": "easy_vision_gpu_tf1.12_torch151",
        "model_path": "oss://path/to/your/model",
        "model_config": "{\"type\":\"classifier\"}",
        "metadata": {
          "resource": "your_resource_name",
          "cuda": "9.0",
          "instance": 1,
          "memory": 4000,
          "gpu": 1,
          "cpu": 4,
          "rpc.worker_threads" : 5
        }
      }
    • 使用CPU部署的配置
      {
        "name": "ev_app_cpu_demo",
        "processor": "easy_vision_cpu_tf1.12_torch151",
        "model_path": "oss://path/to/your/model",
        "model_config": "{\"type\":\"classifier\"}",
        "metadata": {
          "resource": "your_resource_name",
          "instance": 1,
          "memory": 4000,
          "gpu": 0,
          "cpu": 4,
          "rpc.worker_threads" : 5
        }
      }

MediaFlow Processor

PAI-EAS 提供的MediaFlow Processor是通用的编排引擎,可以进行视频、音频及图像分析处理。

您可以通过如下任何一种方式部署MediaFlow模型:
  • 控制台上传

    选择Processor种类MediaFlow,详情请参见控制台上传部署

  • 本地客户端部署
    在服务配置文件service.json中,将processor字段配置为相应的Processor Code,即mediaflow。此外,使用MediaFlow Processor部署模型,还需要增加如下特有字段,其他字段说明请参见创建服务
    • graph_pool_size:图池的数量。
    • worker_threads:调度线程的数量。
    示例如下:
    • 部署视频分类模型的配置。
      {
        "model_entry": "video_classification/video_classification_ext.js", 
        "name": "video_classification", 
        "model_path": "oss://path/to/your/model", 
        "generate_token": "true", 
        "processor": "mediaflow", 
        "model_config" : {
            "graph_pool_size":8,
            "worker_threads":16
        },
        "metadata": {
          "eas.handlers.disable_failure_handler" :true,
          "resource": "your_resource_name", 
            "rpc.worker_threads": 30,
            "rpc.enable_jemalloc": true,
          "rpc.keepalive": 500000, 
          "cpu": 4, 
          "instance": 1, 
          "cuda": "9.0", 
          "rpc.max_batch_size": 64, 
          "memory": 10000, 
          "gpu": 1 
        }
      }
    • 部署语音识别(ASR)模型的配置。
      {
        "model_entry": "asr/video_asr_ext.js", 
        "name": "video_asr", 
        "model_path": "oss://path/to/your/model", 
        "generate_token": "true", 
        "processor": "mediaflow", 
        "model_config" : {
            "graph_pool_size":8,
            "worker_threads":16
        },
        "metadata": {
          "eas.handlers.disable_failure_handler" :true,
          "resource": "your_resource_name", 
            "rpc.worker_threads": 30,
            "rpc.enable_jemalloc": true,
          "rpc.keepalive": 500000, 
          "cpu": 4, 
          "instance": 1, 
          "cuda": "9.0", 
          "rpc.max_batch_size": 64, 
          "memory": 10000, 
          "gpu": 1 
        }
      }
    语音识别与视频分类service.json配置的主要差异为model_entrynamemodel_path字段,需要您根据部署的模型类型进行修改。