详情页标题前

阿里云人工智能平台PAI异步推理服务-云淘科技

详情页1

在复杂的模型推理场景中,例如AIGC、视频处理等场景,推理耗时较长,存在长连接超时导致请求失败或实例负载不均衡等问题,不适用于同步推理的场景。针对以上问题,PAI提供了异步推理服务,支持通过订阅或轮询的方式来获取推理结果。本文为您介绍如何使用异步推理服务。

实现原理

异步推理服务旨在帮助您快速地将同步推理服务增加异步推理能力。

异步服务的原理同异步推理及队列服务所述,但在结构上引入了子服务的概念。

在创建异步服务时,在单个服务内部将集成两个子服务,分别是推理子服务队列子服务,队列子服务中拥有两个内置的消息队列,即输入(input)队列和输出(sink)队列。服务请求会先发送到队列子服务的输入队列中,推理子服务实例中的EAS服务框架会自动订阅队列以流式地获取请求数据,调用推理服务中的接口对收到的请求数据进行推理,并将响应结果写入到输出队列中。

当输出队列满时,即无法向输出队列中写入数据时,服务框架也会停止从输入队列中接收数据,避免无法将推理结果输出到输出队列。

如果您不需要输出队列,例如将推理结果直接输出到OSS或者您自己的消息中间件中,则可以在同步的HTTP推理接口中返回空,此时输出队列会被忽略。

创建异步推理服务

EAS的异步推理服务可以实现同步推理逻辑到异步推理的转换,创建异步推理服务的操作步骤如下。

  1. 准备服务的配置文件service.json。

    • 部署方式为模型部署。

      {
        "processor": "pmml",
        "model_path": "http://example.oss-cn-shanghai.aliyuncs.com/models/lr.pmml",
        "metadata": {
          "name": "pmmlasync",
          "type": "Async",
          "cpu": 4,
          "instance": 1
        }
      }

      其中关键参数说明如下。

      type:配置该参数为Async,即可创建异步推理服务。

    • 部署方式为镜像部署。

      { 
        "containers": [
          {
            "image": "registry-vpc.cn-shanghai.aliyuncs.com/eas/eas-container-deploy-test:202010091755",
            "command": "/data/eas/ENV/bin/python /data/eas/app.py"
            "port": 8000,
          }
        ],
        "metadata": {
          "name": "imageasync",
          "type": "Async",
          "rpc.worker_threads": 4,
          "instance": 1,
        }
      }

      其中关键参数说明如下。

      • type:配置该参数为Async,即可创建异步推理服务。

      • instance:预测子服务的实例数量,不包含队列子服务。

      • rpc.worker_threads:为异步推理服务中EAS服务框架的线程数,该参数与订阅队列数据的窗口大小一致。线程数设置为4,即一次最多只能从队列中订阅4条数据,在这4条数据处理完成前,队列不会给异步推理服务推送新数据。

        例如:某视频流处理服务,单实例一次只能处理2条视频流,则该参数可以设置为2,队列最多将2个视频流的地址推送给异步推理服务,在异步推理服务返回结果前,不会再推送新的视频流地址。如果异步推理服务完成了其中一个视频流的处理并返回结果,则队列服务会继续再推送一个新的视频流地址给该服务实例,保证一个服务实例最多同时处理不超过2路视频流。

    配置文件中的其他参数解释,详情请参见服务模型所有相关参数说明。

    在创建异步推理服务时,为了方便您的使用和理解,会自动创建和metadata.name同名的服务分组,因此您可以认为除了配置了metadata.name以外,系统默认为您默认增加了配置项metadata.group

    创建异步推理服务时,队列服务会随异步推理服务自动创建,并集成到异步推理服务内。队列服务实例数默认为1,且会随推理服务实例数量动态伸缩,最大为2。单个实例占用资源默认为1核4 GB。如果队列服务默认配置不能满足你的需求,您可以参考队列服务参数配置及说明,进行配置。

  2. 创建服务。

    您可以登录eascmd客户端后使用create命令创建异步推理服务,如何登录eascmd客户端,请参见下载并认证客户端,使用示例如下。

    eascmd create service.json

访问异步推理服务

如上文的介绍,系统会默认为您创建和服务同名的服务分组,而且由于分组内的队列子服务拥有分组流量入口,因此可以直接通过下述路径访问队列。

地址类型

地址格式

示例

输入队列地址

{domain}/api/predict/{service_name}.

xxx.cn-shanghai.pai-eas.aliyuncs.com/api/predict/test_imageasync

输出队列地址

{domain}/api/predict/{service_name}/sink

xxx.cn-shanghai.pai-eas.aliyuncs.com/api/predict/imageasync/sink

接下来的调用方式和访问队列服务中所述的相同,您只需按照上面的指引替换访问的路径。

管理异步服务

您可以像管理普通服务一样管理异步服务,异步服务的子服务会由系统自动管理。比如,当您删除异步服务时,队列子服务和预测子服务都将被同时删除,或者当您更新预测服务时,预测子服务将被更新而队列服务维持不变以获取最大的可用性。

由于采用了子服务架构,虽然您为异步预测服务配置了1个实例,但是由于队列子服务的存在,会在实例列表中看到额外的队列实例的存在。

阿里云人工智能平台PAI异步推理服务-云淘科技

异步服务的实例数量指的是预测实例的数量,队列服务的实例数量会随着预测子服务的实例数量自动变化。比如,当您扩容实例数量到3时,可以观察到队列子服务的实例数量扩容到了2。

阿里云人工智能平台PAI异步推理服务-云淘科技

两个子服务间的实例数量配比规则如下:

  • 当异步预测服务被停止,则队列子服务和预测子服务的实例数量均会缩容到0,这时看到的实例列表为空。

  • 当预测子服务的实例数量为1时,队列子服务的实例数量也将为1,除非您配置了队列服务的参数。

  • 当预测子服务的实例数量超过2时,队列子服务的实例数量将保持为2,除非您配置了队列服务的参数。

  • 当您配置了异步预测的自动扩缩容功能,且配置了最小的实例数量为0,则当预测子服务缩容到0时,队列服务将保持1个实例待命。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/162077.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云人工智能平台PAI异步推理与队列服务-云淘科技

    对于推理耗时相对较长的使用场景,同步等待结果会存在HTTP长连接断开、客户端超时、负载均衡及实例异常等问题。 针对以上问题,PAI提供了队列服务和异步推理功能,可以通过请求分发、订阅推送或定期查询结果来实现推理。本文为您介绍如何使用队列服务及异步推理。 背景信息 功能介绍 异步推理 对于实时性要求比较高的在线推理场景,通常使用同步推理,即客户端发送一个请求,…

    2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。