模型在线服务EAS(Elastic Algorithm Service)是PAI产品为实现一站式模型开发部署应用,针对在线推理场景提供的模型在线服务,支持将模型服务部署在公共资源组或专属资源组,实现基于异构硬件(CPU和GPU)的模型加载和数据请求的实时响应。
EAS产品架构
模型在线服务EAS(Elastic Algorithm Service)是一种模型在线服务平台,可支持您一键部署模型为在线推理服务或AI-Web应用。它提供的弹性扩缩容和蓝绿部署等功能,可以支撑您以较低的资源成本获取高并发且稳定的在线算法模型服务。此外,EAS还提供了资源组管理、版本控制以及资源监控等功能,方便您将模型服务应用于业务。EAS适用于实时同步推理、近实时异步推理等多种AI推理场景,并具备完整运维监控体系等能力。
部署原理
使用EAS进行模型部署时,支持镜像部署和Processor部署两类部署方式,对比介绍如下。
镜像部署(推荐)
使用镜像方式部署时,EAS通过拉取容器镜像服务ACR中的环境镜像、挂载存储云产品(对象存储OSS、文件存储NAS),来获取部署前所需的准备内容,包括运行环境、模型以及其他相关文件(如模型前后处理代码等)。
EAS镜像部署的流程图如下。
此方式的部署要点如下。
镜像部署可以进一步细分为镜像部署服务和镜像部署AI-Web应用两种部署方式。
镜像部署服务:适用于通过镜像快速部署服务的场景,部署后可通过API调用服务。
镜像部署AI-Web应用:更适用于通过镜像快速部署Web应用的场景,部署后可通过Web应用链接直接打开应用页面进行访问试用。
两种部署方式的对比介绍可参见下文步骤2:部署服务中的对比介绍。
PAI为您提供了多个典型场景的官方镜像便于您高效一键部署,您也可以结合业务需求自行开发模型并制作镜像,制作完成的镜像需上传至阿里云镜像服务ACR中,便于部署时选择使用。
建议您将模型和模型的前后处理代码文件上传至存储云产品,后续通过挂载方式来获取对应内容,而非直接打包至自定义镜像中,在后续模型需频繁迭代更新时,可方便地替换模型。
使用镜像部署时,建议您自行构建一个HTTP Server,后续使用EAS部署好服务后,EAS会将调用服务的请求转发至您自行开发的HTTP Server中,自建的HTTP Server需避开EAS系统监听端口8080和9090。
使用自定义镜像进行部署时,请务必将您的镜像上传至ACR中再进行使用,否则可能导致在部署时镜像拉取失败。如果您使用DSW进行模型开发训练,也需将镜像上传至ACR中才可在EAS中使用。
如果您的自定义的镜像、预热数据等内容可在其他多种场景下应用,您也使用PAI AI资产的镜像和数据集功能,将其沉淀为对应的AI资产进行统一管理。当前EAS不支持使用NAS-CPFS类型的数据集。
Processor部署
准备好模型和Processor文件等服务部署前的准备内容后,分别上传至存储云产品(OSS、NAS),EAS通过挂载存储云产品来获取部署前所需的准备内容进行服务部署。
EAS Processor部署流程如下。
此方式的部署要点如下。
PAI为您提供了多个典型场景的官方Processor供您使用,您也可以结合业务需求自行开发模型并开发自定义Processor文件,完成后分别上传至阿里云存储产品OSS或NAS。
建议您将模型和Processor文件独立开发分别存储,后续可在部署时配置模型挂载路径,Processor文件中可使用get_model_path参数来获取配置的模型路径,便于后续模型需频繁迭代更新时,可方便地替换模型。
使用Processor部署时,EAS会根据您选用的推理框架自动拉取官方环境镜像来部署服务,并基于Processor文件自动为您部署一个HTTP Server用于接收后续调用服务的请求。
使用Processor方式部署时,您需要保障模型的推理框架和Processor文件的开发符合开发环境要求,不如镜像部署方式灵活高效,因此更建议您使用镜像方式进行模型部署。
基本概念
名词 | 描述 |
资源组 | EAS将集群资源分为不同的资源组进行隔离,创建模型服务时,您可以选择将其部署在默认的公共资源组或自己额外购买的专属资源组。
EAS的资源组介绍详情请参见EAS资源组概述。 |
模型服务 | 模型文件和在线预测逻辑部署成的常驻服务。您可以对模型服务进行创建、更新、停止、启动、扩容及缩容操作。 |
模型文件 | 通过离线训练获得的离线模型。基于不同框架会得到不同格式的模型,通常与Processor一起部署,从而获得模型服务。 |
Processor | 包含在线预测逻辑的程序包,通常与模型文件一起部署,从而获得模型服务。针对常用的PMML、TensorFlow(Saved Model)及Caffe模型,EAS提供了预置的官方Processor。 |
自定义processor | EAS预置Processor无法满足所有的服务部署需求,您可以通过自定义Processor,实现更灵活的服务部署。EAS支持通过C++、Java或Python开发自定义Processor。 |
服务实例 | 服务进程。每个服务可以部署多个服务实例以提高能够支持的并发请求数。部署服务时,服务实例会部署到资源组中的机器上,如果资源组中有多台机器资源,EAS会自动将不同实例部署到不同的机器资源中,从而更好地保障服务高可用性。 |
高速直连 | EAS提供高速直连的网络访问方式,EAS资源组和您的VPC网络连通后,您可以使用高速直连功能。后续无需通过网关,客户端可直接访问模型服务,可以大幅度提高访问性能、降低访问延时。 |
地域限制
EAS支持的地域包括华北2(北京)、华东2(上海)、华东1(杭州)、华北3(张家口)、华北6(乌兰察布)、华南1(深圳)、华南2(河源)、华南3(广州)、西南1(成都)、中国(香港)、日本(东京)、新加坡、印度尼西亚(雅加达)、美国(硅谷)、美国(弗吉尼亚)及德国(法兰克福)。
计费说明
EAS资源组收费:
EAS支持将模型服务部署在公共资源组或专属资源组,定价和计费规则请参见模型在线服务(EAS)计费说明。
公共资源组中,根据每个模型服务占用的资源量计费。
专属资源组中,根据资源组管理的服务器资源包年包月或按量计费。
(可选)相关云产品收费:
存储类云产品:
使用EAS部署服务时,您可以挂载OSS、NAS,将部署过程中的相关数据永久存储在对应存储服务中,对应云产品的定价和计费相关请参见对应云产品的计费文档,例如OSS计费概述、NAS计费概述。
公网NAT网关:
使用公网地址访问已部署的模型服务时可免费访问,如果您部署的服务需要访问公网环境,您需要开通NAT网关服务,公网连接及白名单配置操作请参见公网连接及白名单配置,公网NAT网关计费详情请参见NAT网关计费概述。
使用流程
步骤1:准备工作
步骤2:部署服务
在部署工具维度上:EAS支持通过界面化或命令行方式部署服务和管理服务,不同工具的部署流程和操作要点存在差异。
操作类型
界面化方式
命令行方式
部署服务
通过控制台部署(服务部署:控制台)或Designer一键部署(服务部署:Designer)。
通过DSW部署或本地客户端(EASCMD)部署,详情请参见服务部署:EASCMD或DSW。
管理服务
您可以在EAS模型在线服务页面管理模型服务,详情请参见服务部署:控制台。
包括:
查看模型调用信息。
查看日志、监控及服务部署相关信息。
扩容、缩容、启动、停止及删除模型服务。
通过EASCMD方式管理模型服务,详情请参见命令使用说明。
您在使用专属资源组部署服务时,也可以配置存储挂载,用来存储服务部署过程依赖的数据,详情请参见高级配置:服务存储挂载。
在部署方式上:EAS支持镜像方式部署(推荐,包含镜像部署、镜像AI-Web部署两个细分部署场景)和Processor方式部署。
部署类型
对比介绍
参考文档
镜像部署服务(推荐)
适用场景:使用镜像快速部署模型服务。
优势:
可通过镜像保障模型开发训练环境与部署运行环境的一致性。
典型场景已为您预置了很多官方镜像,您可使用官方预置镜像一键部署。
也支持自定义镜像部署,无需进行部署的工程化改造,部署便捷。
镜像部署AI-Web应用(推荐)
适用场景:使用镜像快速部署模型服务,更适用于将模型部署为Web应用的场景。
优势:
典型场景已为您预置了很多官方镜像,如Stable-Diffusion-Webui、Chat-LLM-Webui等,支持基于Gradio、Flask、FastAPI等框架实现HTTP Server,您可使用官方预置镜像一键部署。
也支持自定义镜像部署,无需进行部署的工程化改造,部署便捷。
模型+processor部署服务
EAS为您提供了常见模型框架的预置Processor,例如PMML、XGBOOST等,通过EAS预置的Processor可以快速启动服务,但可能无法满足特定的业务需求。
您还可以构建自定义Processor,以实现更为灵活的业务逻辑处理。
步骤3:调试与压测服务
服务部署完成后,您可以通过在线调试功能发送HTTP服务请求,来验证服务是否能正常推理。
使用EAS内置的通用压测工具对部署的服务进行一键压测,来测试EAS服务在压力下的性能表现,从而了解服务进行模型推理的处理能力。更多关于调试与压测服务的操作详情,请参见服务调试与压测。
步骤4:监控服务与服务扩缩容
服务运行正常后,您可以开通服务监控报警来监控服务资源的使用情况。
也可以开启水平或定时自动扩缩容功能,来实时动态管理线上服务的计算资源。
更多关于服务监控与扩缩容的操作详情,请参见服务监控与扩缩容。
步骤5:调用服务
将模型部署为API服务:您可以通过服务调用功能,实现模型在线推理和异步推理。EAS服务支持公网地址调用、VPC地址调用和VPC高速直连等不同的调用方式,也支持您基于Processor自定义构造服务请求数据。推荐您使用PAI提供的SDK来进行测试和生产调用,详情请参见服务调用SDK。
将模型部署为WebUI应用:您可以通过控制台在浏览器中打开Web应用页面,交互式地使用已部署的模型推理服务。
步骤6:异步推理服务
对于推理耗时相对较长的使用场景需要使用队列服务和异步推理功能。当请求较多时,您可以创建队列服务,将请求存储到队列服务中,请求处理完成后会将结果输出到输出队列,通过异步查询返回结果,避免请求较多未处理完成被丢弃。同时,EAS支持通过多种方式向队列服务发送请求数据,并通过监控队列中积压的数据数量来实现推理服务的自动扩缩容,从而有效控制推理服务实例的数量。更多关于异步推理服务的介绍,请参见异步推理服务。
相关文档
EAS的更多使用案例,详情请参见EAS使用案例汇总。
PAI提供了交互式建模(DSW)服务,是为AI开发者量身定制的云端机器学习交互式开发IDE,随时随地开启Notebook快速读取数据、开发算法、训练及部署模型,详情请参见什么是DSW。
PAI提供了可视化建模(Designer)服务,支持大规模分布式的传统机器学习、深度学习、强化学习训练,支持流批一体训练,该子模块封装了上百种机器学习算法,详情请参见Designer概述。
EAS相关API,详情请参见API概览。