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

PAI-EAS提供的Processor名称及Code如下表所示(使用EASCMD部署服务时,需要提供Processor Code)。
Processor名称 Processor Code(仅用于EASCMD部署) 文档
CPU版 GPU版
PMMLpmmlPMML Processor
TensorFlow1.12tensorflow_cpu_1.12tensorflow_gpu_1.12TensorFlow1.12 Processor
TensorFlow1.14tensorflow_cpu_1.14tensorflow_gpu_1.14TensorFlow1.14 Processor
TensorFlow1.15tensorflow_cpu_1.15tensorflow_gpu_1.15TensorFlow1.15 Processor(内置PAI-Blade敏捷版优化引擎)
TensorFlow2.3tensorflow_cpu_2.3TensorFlow2.3 Processor
PyTorch1.6pytorch_cpu_1.6pytorch_gpu_1.6PyTorch1.6 Processor(内置PAI-Blade敏捷版优化引擎)
Caffecaffe_cpucaffe_gpuCaffe Processor
PS算法parameter_severPS算法Processor
Alinkalink_pai_processor
xNNxnn_cpu
EasyVisioneasy_vision_cpu_tf1.12_torch151easy_vision_gpu_tf1.12_torch151EasyVision Processor
EasyTransfereasytransfer_cpueasytransfer_gpuEasyTransfer Processor
EasyNLPeasynlpeasynlpEasyNLP Processor
EasyCVeasycveasycvEasyCV Processor
Bladeblade_cpublade_cuda10.0_beta
MediaFlowmediaflowMediaFlow Processor
TritontritonTriton Processor

PMML Processor

PAI-EAS预置的PMML Processor主要功能包括:
  • 将PMML类型的模型文件加载为一个服务。
  • 处理对模型服务进行调用的请求。
  • 根据模型计算请求结果,并将其返回至客户端。
PMML Processor提供默认的缺失值填充策略。如果PMML模型文件中的特征字段无指定isMissing策略,则系统默认以如下值进行填充。
DataType默认填充值
BOOLEANfalse
DOUBLE0.0
FLOAT0.0
INT0
STRING“”
您可以通过如下任何一种方式部署PMML模型:
  • 控制台上传

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

  • 本地客户端部署
    在服务配置文件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,详情请参见PAI-DSW部署

TensorFlow1.12 Processor

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

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

  • 本地客户端部署
    在服务配置文件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,详情请参见PAI-DSW部署

TensorFlow1.14 Processor

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

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

  • 本地客户端部署
    在服务配置文件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,详情请参见PAI-DSW部署

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,详情请参见控制台上传部署

  • 本地客户端部署
    在服务配置文件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,详情请参见PAI-DSW部署。关于服务配置文件中的参数解释请参见创建服务

TensorFlow2.3 Processor

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

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

  • 本地客户端部署
    在服务配置文件service.json中,将processor字段配置为相应的Processor Code,即tensorflow_cpu_2.3,示例如下。
    {
      "name": "tf_serving_test",
      "generate_token": "true",
      "model_path": "http://xxxxx/savedmodel_example.zip",
      "processor": "tensorflow_cpu_2.3",
      "metadata": {
        "instance": 1,
        "cpu": 1,
        "gpu": 0,
        "memory": 2000
      }
    }
  • PAI-DSW部署

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

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,详情请参见控制台上传部署

  • 本地客户端部署
    在服务配置文件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,详情请参见PAI-DSW部署。关于服务配置文件中的参数解释请参见创建服务

Caffe Processor

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

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

  • 本地客户端部署
    在服务配置文件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,详情请参见PAI-DSW部署

PS算法Processor

PAI-EAS提供的PS算法Processor可以加载PS格式的模型。

以下介绍如何使用PS算法Processor部署模型服务及如何发送服务请求。
  • 您可以通过如下任何一种方式部署PS格式的模型:
    • 控制台上传

      选择Processor种类PS算法,详情请参见服务部署:控制台&Designer

    • 本地客户端部署
      在服务配置文件service.json中,将processor字段配置为相应的Processor Code,即parameter_sever,示例如下。
      {
        "name":"ps_smart",
        "model_path": "oss://examplebucket/xlab_m_pai_ps_smart_b_1058272_v0.tar.gz",
        "processor": "parameter_sever",
        "metadata": {
          "region": "beijing",
          "cpu": 1,
          "instance": 1,
          "memory": 2048
        }
      }
    • PAI-DSW部署

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

  • 请求说明
    支持单个请求预测或批量请求预测。单个请求和批量请求数据结构相同,即JSON数组里包含features对象。
    • 单个请求示例
      curl "http://eas.location/api/predict/ps_smart" -d "[
                  {
                      "f0": 1,
                      "f1": 0.2,
                      "f3": 0.5,
                  }
      ]"
    • 多个请求示例
      curl "http://eas.location/api/predict/ps_smart" -d "[
              {
                  "f0": 1,
                  "f1": 0.2,
                  "f3": 0.5,
              },
              {
                  "f0": 1,
                  "f1": 0.2,
                  "f3": 0.5,
              }
      ]"
    • 返回值

      单个请求和批量请求返回值也相同,即数组里包含返回对象,且返回的对象位置和请求数据一一对应。

      [
        {
          "lable":"xxxx",
          "score" : 0.2,
          "details" : [{"k1":0.3}, {"k2":0.5}]
        },
        {
          "lable":"xxxx",
          "score" : 0.2,
          "details" : [{"k1":0.3}, {"k2":0.5}]
        }
      ]

EasyTransfer Processor

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

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

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

  • 本地客户端部署
    在服务配置文件service.json中,将processor字段配置为相应的Processor Code,即easytransfer_cpueasytransfer_gpu(需要根据部署所用的资源进行选择,如果processor与资源不匹配,则会导致部署报错)。在model_configtype字段指定训练时所使用的模型类型,文本分类模型示例如下。其他参数的详细解释请参见创建服务
    • 使用GPU部署的配置(以公共资源组为例)
      {
        "name": "et_app_demo"
        "metadata": {
          "instance": 1
        },
        "cloud": {
          "computing": {
            "instance_type": "ecs.gn6i-c4g1.xlarge"
          }
        },
        "model_path": "http://xxxxx/your_model.zip",
        "processor": "easytransfer_gpu",
        "model_config": {
          "type": "text_classify_bert"
        }
      }
    • 使用CPU部署的配置
      {
        "name": "et_app_demo",
        "model_path": "http://xxxxx/your_model.zip",
        "processor": "easytransfer_cpu",
        "model_config": {
          "type":"text_classify_bert"
        }
        "metadata": {
          "instance": 1,
          "cpu": 1,
          "memory": 4000
        }
      }
    目前支持的任务类型如下表所示。
    任务类型type
    文本匹配text_match_bert
    文本分类text_classify_bert
    序列标注sequence_labeling_bert
    文本向量化vectorization_bert

EasyNLP Processor

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

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

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

  • 本地客户端部署
    在服务配置文件service.json中,将processor字段配置为相应的Processor Code,即easynlp。在model_configtype字段指定训练时所使用的模型类型,文本分类(单标签)模型示例如下。其他参数的详细解释请参见创建服务
    {
      "name": "easynlp_app_demo",
      "metadata": {
        "instance": 1
      },
      "cloud": {
        "computing": {
          "instance_type": "ecs.gn6i-c4g1.xlarge"
        }
      },
      "model_config": {
        "app_name": "text_classify",
        "type": "text_classify"
      },
      "model_path": "http://xxxxx/your_model.tar.gz",
      "processor": "easynlp"
    }
    目前支持的任务类型如下表所示。
    任务类型type
    文本分类(单标签)text_classify
    文本分类(多标签)text_classify_multi
    文本匹配text_match
    序列标注sequence_labeling
    文本向量化vectorization
    中文摘要生成(GPU)sequence_generation_zh
    英文摘要生成(GPU)sequence_generation_en
    机器阅读理解(中文)machine_reading_comprehension_zh
    机器阅读理解(英文)machine_reading_comprehension_en
    WUKONG_CLIP(GPU)wukong_clip
    CLIP(GPU)clip

EasyCV Processor

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

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

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

  • 本地客户端部署
    在服务配置文件service.json中,将processor字段配置为相应的Processor Code,即easycv。在model_configtype字段指定训练时所使用的模型类型,图像分类模型示例如下。其他参数的详细解释请参见创建服务
    {
      "name": "easycv_classification_example",
      "processor": "easycv",
      "model_path": "oss://examplebucket/epoch_10_export.pt",
      "model_config": {"type":"TorchClassifier"},
      "metadata": {
        "instance": 1
      },
      "cloud": {
        "computing": {
          "instance_type": "ecs.gn5i-c4g1.xlarge"
        }
      }
    }
    目前支持的任务类型如下表所示。
    任务类型model_config
    图像分类{"type":"TorchClassifier"}
    目标检测{"type":"DetectionPredictor"}
    语义分割{"type":"SegmentationPredictor"}
    yolox目标检测{"type":"YoloXPredictor"}
    视频分类{"type":"VideoClassificationPredictor"}
服务部署完成后,在PAI EAS模型在线服务页面,单击待调用服务服务方式列下的调用信息,查看服务访问的Endpoint和用于服务鉴权的Token信息,参照如下Python示例调用服务。
import requests
import base64
import json
resp = requests.get('http://exmaplebucket.oss-cn-zhangjiakou.aliyuncs.com/images/000000123213.jpg')
ENCODING = 'utf-8'
datas = json.dumps( {
            "image": base64.b64encode(resp.content).decode(ENCODING)
            })
head = {
   "Authorization": "NTFmNDJlM2E4OTRjMzc3OWY0NzI3MTg5MzZmNGQ5Yj***"
}
for x in range(0,10):
    resp = requests.post("http://150231884461***.cn-hangzhou.pai-eas.aliyuncs.com/api/predict/test_easycv_classification_example", data=datas, headers=head)
    print(resp.text)
                            
其中,需要将图像或视频数据编码成Base64格式进行传输,图像数据使用关键字image,视频数据使用关键字video

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字段,需要您根据部署的模型类型进行修改。

Triton Processor

Triton Inference Server是NVIDIA公司推出的新一代在线服务框架,它针对GPU上的模型提供了简单易用的部署和管理接口,且兼容KFServing的API标准。此外,Triton Inference Server还具有以下特点:
  • 支持多种开源框架的部署,包括TensorFlow、PyTorch、ONNX Runtime及TensorRT等,同时也支持您提供的自定义服务后端(backend)。
  • 支持多个模型同时运行在GPU上,以提高GPU设备的利用率。
  • 支持HTTP/gRPC通信协议,提供二进制格式扩展以压缩发送请求的大小。
  • 支持Dynamic Batching功能,提升服务吞吐。
Triton Inference Server在PAI-EAS上以预置的Triton Processor形式发布。
说明
  • Triton Processor目前仅在华东2(上海)公测,其他地域暂不支持。
  • Triton服务部署使用的模型都必须存放在OSS中。因此,您需要提前开通OSS,并将自己的模型相关文件上传到OSS中。关于如何上传文件到OSS,请参见上传文件
以下介绍如何使用Triton Processor部署模型服务及如何调用该服务:
  • 使用Triton Processor部署模型服务
    您只能通过客户端工具eascmd部署Triton模型服务。关于如何使用客户端工具eascmd部署模型服务,请参见创建服务。部署模型服务时,使用的服务描述配置文件service.json中,需要将processor字段配置为相应的Processor Code,即triton。此外,由于Triton需要从OSS中获取模型,因此还需要用户配置OSS的相关参数。service.json的示例如下。
    {
      "name": "triton_test",                          
      "processor": "triton",
      "processor_params": [
        "--model-repository=oss://triton-model-repo/models", 
        "--allow-http=true", 
      ],
      "metadata": {
        "instance": 1,
        "cpu": 4,
        "gpu": 1,
        "memory": 10000,
        "resource":"<your resource id>"
      }
    }
    部署Triton模型服务需要配置的特有参数的含义如下表所示,其他通用参数含义请参见service.json中的参数详解
    参数描述
    processor_params服务启动时传递给Triton Server的参数。对于不支持的参数将被自动过滤,支持传递给Triton server的参数集合如下面的支持传递给Triton server的参数集合所示。其中model-repository为必填参数,其他可选参数请参见main.cc
    oss_endpointOSS的Endpoint。如果不传递该参数,则系统会自动使用当前PAI-EAS服务所在地域的OSS服务。如果需要使用跨地域的OSS服务,则必须指定该参数。该参数的取值请参见访问域名和数据中心
    metadataresource用于部署模型服务的PAI-EAS专属资源组ID。通过Triton Processor部署模型服务时,使用的资源必须为PAI-EAS的专属资源组。关于如何创建PAI-EAS专属资源组,请参见使用专属资源组
    表 1. 支持传递给Triton server的参数集合
    参数是否必选描述
    model-repository路径需要指定为OSS路径,系统不支持直接使用Bucket根目录作为model-repository,需要指定Bucket下的某个子目录才可以。

    例如,oss://triton-model-repo/models,其中triton-model-repo为Bucket名称,models为Bucket下的一个子目录。

    log-verbose参数详情请参见main.cc
    log-info
    log-warning
    log-error
    exit-on-error
    strict-model-config
    strict-readiness
    allow-http
    http-thread-count
    pinned-memory-pool-byte-size
    cuda-memory-pool-byte-size
    min-supported-compute-capability
    buffer-manager-thread-count
    backend-config
  • 使用Triton原生Client调用PAI-EAS Triton Processor服务
    使用Python Client发出请求,您需要先通过如下命令安装Triton官方提供的Client。
    pip3 install nvidia-pyindex
    pip3 install tritonclient[all]
    下载测试图片到当前目录,命令如下。
    wget http://pai-blade.oss-cn-zhangjiakou.aliyuncs.com/doc-assets/cat.png
    以下示例中,使用Python Client向Triton Processor服务发送请求,该请求的数据格式是二进制格式。
    import numpy as np
    import time
    from PIL import Image
    
    import tritonclient.http as httpclient
    from tritonclient.utils import InferenceServerException
    
    URL = "<servcice url>"  # 将<servcice url>替换为服务的访问地址。
    HEADERS = {"Authorization": "<service token>"} # 将<service token>替换为服务的访问Token。
    input_img = httpclient.InferInput("input", [1, 299, 299, 3], "FP32")
    img = Image.open('./cat.png').resize((299, 299))
    img = np.asarray(img).astype('float32') / 255.0
    input_img.set_data_from_numpy(img.reshape([1, 299, 299, 3]), binary_data=True)
    
    output = httpclient.InferRequestedOutput(
        "InceptionV3/Predictions/Softmax", binary_data=True
    )
    triton_client = httpclient.InferenceServerClient(url=URL, verbose=False)
    
    start = time.time()
    for i in range(10):
        results = triton_client.infer(
            "inception_graphdef", inputs=[input_img], outputs=[output], headers=HEADERS
        )
        res_body = results.get_response()
        elapsed_ms = (time.time() - start) * 1000
        if i == 0:
            print("model name: ", res_body["model_name"])
            print("model version: ", res_body["model_version"])
            print("output name: ", res_body["outputs"][0]["name"])
            print("output shape: ", res_body["outputs"][0]["shape"])
        print("[{}] Avg rt(ms): {:.2f}".format(i, elapsed_ms))
        start = time.time()