# 异步推理
在AI生成内容（AIGC）及复杂计算任务（如高清图像处理、长视频解析）广泛应用的业务场景中，传统同步请求-响应模式面临显著挑战：客户端需长时间等待任务完成易导致网络超时中断，服务端则因瞬时高并发请求承受巨大压力，且计算资源（如GPU）因同步等待产生空闲浪费。此类场景下，如何实现任务提交与结果获取的解耦，同时保障系统高可用性与资源高效利用成为关键问题。
ModelArts支持构建以"任务"为核心的异步推理服务，提供标准化接口实现任务异步提交、状态查询及结果获取，将长任务从同步阻塞流程中剥离，通过任务队列机制实现资源动态调度与负载均衡，从而在提升系统吞吐量与稳定性的同时，显著优化用户体验并降低单位计算成本。
本章节主要介绍如何在ModelArts部署模型为异步在线服务，并对部署成功的在线服务进行调用。如果是视频推理、大视频文件等，请按照本章节的指导，选择部署异步在线服务并调用。如果是图片、较小视频文件需要同步返回结果，请选择[推理在线服务单机部署](https://support.huaweicloud.com/inference-modelarts/inference2.0-modelarts-0004.html)。
#### 前提条件
- 由于在线服务运行需消耗资源，确保账户未欠费。
- 已按照[配置服务信息](https://support.huaweicloud.com/inference-modelarts/inference2.0-modelarts-0016.html)章节配置完成推理服务信息。
- 提前准备镜像，详情请见[准备推理镜像](https://support.huaweicloud.com/inference-modelarts/inference2.0-modelarts-0003.html)。
- 提前准备好模型、代码文件，并上传到[对象存储OBS-对象桶](https://support.huaweicloud.com/usermanual-obs/zh-cn_topic_0045829661.html)、[对象存储OBS-并行文件系统](https://support.huaweicloud.com/usermanual-obs/obs_13_0007.html)或[高性能弹性文件存储SFS Turbo](https://support.huaweicloud.com/sfs/index.html)。
 
#### 注意事项
针对使用资源池部署的在线服务，服务处于"异常"或"停止"等状态时，也占用配额资源。如果发现配额不足，无法部署更多服务时，可先删除部分异常服务释放资源。
- 配额计算： 使用专属池部署在线服务不会再扣减配额，仅在创建/变更/删除专属池时增加或减少配额。
  
- 计量计算： 使用专属池部署在线服务不会被计量，只计量它所属的专属资源池的数据。
  
- SFS Turbo挂载： 在线服务使用SFS Turbo挂载时需要有预置操作，[关联专属资源池的网络至SFS Turbo](https://support.huaweicloud.com/resmgmt-modelarts/resmgmt-modelarts_0096.html)。
  
 
#### 部署异步在线服务
1. 登录[ModelArts管理控制台](https://console.huaweicloud.com/modelarts/)，在左侧导航栏中选择"模型推理 \> 在线推理"，默认进入"在线推理"列表。
2. 在"在线推理"列表中，单击"部署"。
3. 进入服务部署页面，配置如下关键参数，其他参数说明请见[配置服务信息](https://support.huaweicloud.com/inference-modelarts/inference2.0-modelarts-0016.html#ZH-CN_TOPIC_0000002555517990__section14135916115214)。
   表1异步服务信息参数说明 
   | 参数    | 子参数      | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   |:---|:---|:---|
   | 基本信息 | 服务调用模式     | 选择"异步调用"。服务创建后，调用模式不支持修改。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   | 基本信息 | 单服务最大任务数 | 单个服务所能创建的最大任务数。范围为0-10000。任务状态为deleted、succeeded、timeout，均不占用任务配额数量。任务状态可通过调用"查看任务详情"API获取。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | 网络配置  | 服务协议     | 异步推理服务可选协议：HTTPS、HTTP。 异步服务当前不支持镜像流量。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | 网络配置  | 更多配置      | - 外网访问：在线服务是否允许外网访问。开启后允许外网访问服务，调用URL请在服务详情页查看在线服务调用信息。关闭后，不允许通过互联网访问在线服务。  - 内网接入免审批：在线服务内网连接是否需要审批。 开启后，三方用户的内网接入申请自动生效，无需审批。关闭后，需要审批。内网访问服务请参见[通过内网访问在线服务](https://support.huaweicloud.com/inference-modelarts/inference2.0-modelarts-0011.html)。   - 访问管控：勾选后，可指定白名单或黑名单进行访问管控。 白名单：仅允许匹配的用户IP进行访问，最多支持添加10个正则表达式。 黑名单：仅不允许匹配的用户IP进行访问，最多支持添加10个正则表达式。    |
   | 高可用配置  | 更多配置      | - 请求大小限制（M）：单个服务的请求大小限制，请求大小范围：1\~50。单位：M。  - 请求超时时间（秒）：服务预测请求超时时间。输入值必须在1到1200之间。单位：秒。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
      
   
4. 单击"下一步"，进行服务部署配置。关键参数如下，其他参数说明详情请见[部署在线服务-部署配置](https://support.huaweicloud.com/inference-modelarts/inference2.0-modelarts-0004.html#ZH-CN_TOPIC_0000002606698915__section17871155203218)。
   表2异步服务部署参数说明 
   | 参数    | 子参数         | 说明                                                                                                                           |
   |:---|:---|:---|
   | 资源配置 | 单副本最大任务并发数 | 当"服务调用模式"选择"异步调用"时需要设置此参数。 单个副本可同时处理的任务上限，取值范围为：1-100，只要任务没有从副本容器中删除掉，均会占用该配额。 |
      
   
5. 单击"下一步"，在"部署在线服务\>确认配置"页面，确认配置信息无误后，单击"确认部署"。 部署服务一般需要运行一段时间，根据您选择的数据量和资源不同，部署时间将耗时几分钟到几十分钟不等。
   您可以前往在线服务列表，查看在线服务的基本情况。在线服务列表中，刚部署的服务"状态"为"部署中"，当在线服务的"状态"变为"运行中"时，表示服务部署完成。
   ![](https://support.huaweicloud.com/inference-modelarts/public_sys-resources/note_3.0-zh-cn.png)
   在线服务部署完成后，将立即启动。使用公共资源池部署的服务，服务状态为"运行中"，"告警"状态下正常运行实例正在产生费用，不使用时，请及时停止。
   
 
#### 访问异步在线服务地址
在[ModelArts管理控制台](https://console.huaweicloud.com/modelarts/)左侧导航栏中选择"模型推理 \> 在线推理"，默认进入"在线推理"列表，单击目标服务的操作列的"服务调用"，查看调用信息。
表3异步在线服务调用信息 
| 类型           | URL格式                                                                                                                             | URL示例                                                                                           |
|:---|:---|:---|
| POST (创建任务)    | https://{公网调用地址}/v2/async-infer/{服务ID}                                                                                          | https://100.XX.XXX.XXX/v2/async-infer/testxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/tasks                 |
| DELETE (删除任务) | https://{公网调用地址}/v2/async-infer/{服务ID}/{task_id} task_id：创建任务后返回。                   | https://100.XX.XXX.XXX/v2/async-infer/testxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/tasks/{task_id}       |
| GET (获取任务列表)    | https://{公网调用地址}/v2/async-infer/{公网调用地址}/tasks                                                                                    | https://100.XX.XXX.XXX/v2/async-infer/testxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/tasks                 |
| PUT (更新任务)     | https://{公网调用地址}/v2/async-infer/{公网调用地址}/tasks/{task_id}                                                                         | https://100.XX.XXX.XXX/v2/async-infer/testxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/tasks/{task_id}      |
| GET (查询任务详情)   | https://{公网调用地址}/v2/async-infer/{公网调用地址}/tasks/{task_id}                                                                         | https://100.XX.XXX.XXX/v2/async-infer/testxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/tasks/{task_id}       |
| POST (启动任务)     | https://{公网调用地址}/v2/async-infer/{公网调用地址}/tasks/{task_id}/start task_id：创建任务后返回。 | https://100.XX.XXX.XXX/v2/async-infer/testxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/tasks/{task_id}/start |
| POST (停止任务)    | https://{公网调用地址}/v2/async-infer/{公网调用地址}/tasks/{task_id}/stop task_id：创建任务后返回。    | https://100.XX.XXX.XXX/v2/async-infer/testxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/tasks/{task_id}/stop  |
   
#### 调用异步在线服务
异步调用服务部署成功后，可以进入服务详情页面的调用页面，做简单的业务功能验证。服务调用页面提供简易的rest客户端功能，用户可以选择自己服务指定的请求方法，填写自己的预测路径。
在Params栏中，可以填写task_id等路径参数，也可以填写查询任务列表的limit、offset和status参数。
在Body栏中，选择对应的数据格式raw，用于发送原始文本数据，遵循接口规范，需要保证JSON格式正确。
在Headers中可以填写Header信息，比如api-key鉴权信息，将{API Key}替换为自己的API Key等。单击"调用"发送对应的调用请求。
如果删除Authorization 键值对，系统将自动切换为 IAM Token 认证。
预测页面的Body和请求头填写可参考[ModelArts在线服务处于运行中时，如何填写request header和request body](https://support.huaweicloud.com/modelarts_faq/modelarts_05_3136.html)。
图1调用异步在线服务   
![](https://support.huaweicloud.com/inference-modelarts/figure/zh-cn_image_0000002521151518.png)
![](https://support.huaweicloud.com/inference-modelarts/public_sys-resources/note_3.0-zh-cn.png)
异步服务的状态会影响任务接口的调用。服务状态为"运行中"，"告警"，"升级中"，"异常"状态下才能够创建、更新、启动、停止任务，服务不处于"已删除"状态，均可以调用查询任务详情、查询任务列表、删除任务接口。
异步服务的任务API不支持透传HTTP Header，请求时Header中的信息不会传递到业务容器，需要通过请求Body传递数据。
#### 使用CloudShell调试在线服务实例容器
允许用户使用ModelArts控制台提供的CloudShell登录运行中在线服务实例容器。
只支持专属资源池部署的在线服务使用CloudShell访问容器。
1. 登录ModelArts控制台，左侧菜单选择"模型推理 \> 在线推理"。
2. 在线服务列表页面单击"名称/ID"，进入在线服务详情页面。
3. 单击CloudShell页签，选择部署、实例和Pod节点，当连接状态变为连接成功时，即登录实例容器成功。
   如果遇到异常情况服务器主动断开或超过10分钟未操作自动断开，此时可单击"重新连接"重新登录实例容器。
   图2CloudShell界面   
   ![](https://support.huaweicloud.com/inference-modelarts/figure/zh-cn_image_0000002630676386.png)
   
   
   部分用户登录Cloud Shell界面时，可能会出现路径显示异常情况，此时在Cloud Shell中单击回车键即可恢复正常。
   图3路径异常   
   ![](https://support.huaweicloud.com/inference-modelarts/figure/zh-cn_image_0000002606459505.png) 
4. 登录实例容器成功后，在容器的终端环境执行所需的调试命令。例如：
   ![](https://support.huaweicloud.com/inference-modelarts/public_sys-resources/note_3.0-zh-cn.png)
   以下仅为示例，实际日志路径和服务状态检查方法和服务配置有关，以镜像和容器启动命令为准。
   查看日志：
   ```
   tail -f /var/log/app.log
   ```
   检查服务状态：
   ```
   systemctl status app
   ```
   执行自定义脚本：
   ```
   ./debug_script.sh
   ```
   
5. 完成调试后，使用以下命令退出容器：
   ```
   exit
   ```
   返回CloudShell终端后，您可以查看调试结果或日志文件。
   
 
#### 删除服务
如果服务不再使用，您可以删除服务释放资源。
- 没有委托授权时，无法删除服务。
- 删除服务时，推荐同时删除LTS中的日志以及日志流，避免LTS日志流超过限额产生额外费用，如后续不再使用，建议删除。
![](https://support.huaweicloud.com/inference-modelarts/public_sys-resources/warning_3.0-zh-cn.png)
删除操作无法恢复，请谨慎操作。
登录[ModelArts管理控制台](https://console.huaweicloud.com/modelarts/)，在左侧菜单栏中选择"模型推理 \> 在线推理"，进入在线推理管理页面。
- 单击在线服务列表"操作"列的"更多\>删除"，在弹框中一键输入DELETE，单击"确定"，删除服务。
- 勾选在线服务列表中的服务，然后单击列表左上角"删除"按钮，在弹框中一键输入DELETE，单击"确定"，批量删除服务。
- 单击目标服务名称，进入服务详情页面，单击右上角"删除"，在弹框中一键输入DELETE，单击"确定"，删除服务。
 
