通过控制台自定义部署

更新时间:
复制为 MD 格式

EAS(Elastic Algorithm Service)的自定义部署提供高度灵活和全面的AI推理服务托管能力,支持将任意算法或模型封装成在线服务。

说明

推荐优先尝试场景化部署(适用于 LLM、ComfyUI 等),不满足需求时,再使用自定义部署。

快速开始:部署一个简单的Web服务

本节将使用镜像部署模式,快速部署一个简单的Web服务。

1步:准备代码文件

将如下Flask应用代码保存为app.py文件。注意,服务监听在8000端口。

app.py

from flask import Flask

app = Flask(__name__)

@app.route('/hello')
def hello_world():
    #  这里是模型推理或其他业务逻辑
    return 'Hello World'

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8000)

2步:上传代码至OSS

app.py文件上传到OSS Bucket中(请确保OSS BucketEAS工作空间在同一地域)。例如,上传至oss://examplebucket/code/目录下。

3步:配置并部署服务

  1. 登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS

  2. 推理服务页签,单击部署服务。然后在自定义模型部署区域,单击自定义部署

  3. 在配置页面,如下填写环境信息资源信息区域的关键参数:

    • 部署方式:选择镜像部署

    • 镜像配置:选择官方镜像python-inference:3.9-ubuntu2004

    • 存储挂载:将包含app.pyOSS目录挂载到容器的/mnt/data/路径下。

      • Uri:选择代码所在的OSS目录,本例中为oss://examplebucket/code/

      • 挂载路径:为该目录在容器内指定本地路径,本例中为/mnt/data/

    • 运行命令:由于app.py已被挂载到容器的/mnt/data/目录,因此启动命令为:python /mnt/data/app.py

    • 三方库配置:本示例代码依赖的flask库未包含在使用的官方镜像中。可以在三方库列表直接添加flask。EAS会在服务启动时自动安装。

    • 资源配置:为服务分配合适的计算资源。对于这个简单示例,一个小型CPU实例即可满足需求。

      • 资源类型:公共资源。

      • 资源规格ecs.c7.large

  4. 完成配置后,单击部署。服务状态变为运行中时,即表示部署成功,可进行服务调用

更多配置说明

配置运行环境

环境信息区域,配置服务的运行环境与依赖项。

参数

描述

镜像配置

服务的运行环境基础。可以使用PAI提供的官方镜像,或通过自定义镜像或输入镜像地址使用自行构建的镜像,详情请参见自定义镜像

说明

若镜像中包含WebUI,开启Web应用,EAS 会自动启动Web服务器,方便直接访问前端页面。

存储挂载

将存放在OSS、NAS等云存储上的模型、代码或数据挂载到容器的本地路径,实现代码/数据与环境的解耦,便于独立更新。详情请参见存储挂载

数据集挂载

若希望对模型或数据进行版本化管理,可以使用数据集功能进行挂载。详见创建及管理数据集

运行命令

设置镜像启动命令(例如python /run.py)。

端口号

设置服务监听的端口。端口号在一些场景中为可选。

例如,在用户服务中不依赖由EAS网关导入的流量,而是用户在镜像中自行通过订阅消息队列的方式获取消息,则此场景中镜像端口号可选填。

重要

EAS引擎固定占用80809090端口,部署新服务时请避开这两个端口,以免冲突导致服务无法启动。

三方库配置

若仅需额外安装少数Python库,在此处直接添加库名或指定一个requirements.txt文件路径,避免重新构建镜像。

环境变量

以键值对形式为服务实例设置环境变量。

配置计算资源

资源信息区域,可以为服务配置计算资源,包括选择资源类型与实例规格、配置系统盘、设置副本数和调度策略等。详情请参见资源配置

配置服务网络

  • 专有网络:若服务需要访问公网资源、访问VPC内的数据库或消息队列,或希望客户端通过VPC直连调用,需配置专有网络。详情请参见EAS访问公网或内网资源

  • 服务调用:部署完成后,根据业务场景选择合适的调用方式(网关、NLB、Nacos、gRPC)。详情请参见服务调用

保障服务安全

服务功能区域配置服务的鉴权和数据安全:

参数

描述

自定义鉴权

如果不想使用系统自动生成的Token,可在此处自定义服务访问的鉴权Token。

配置安全加密环境

通过与系统信任管理服务集成,保证服务在部署和调用过程中,数据、模型和代码等信息的安全加密,实现可信推理。该功能主要针对挂载的存储文件,请先完成存储挂载再开启。详情请参见安全加密推理服务

实例RAM角色

为实例关联RAM角色后,服务内代码可基于STS临时凭证访问其他云资源,无需配置固定的AccessKey,从而降低密钥泄漏风险。详情请参见配置EAS RAM角色

AI安全护栏

对 LLM 推理服务的输入和输出进行内容安全检测,拦截有害内容。支持 OpenAI Completions(文生文)、Chat Completions(文生文)、Image Generation(文生图)接口。详情请参见安全护栏风险检测最佳实践

说明

该功能仅限华东2(上海)地域使用。

可见范围

控制服务在服务列表中的可见范围:

  • 工作空间内可见:工作空间内所有成员均可查看该服务。适用于团队协作场景。

  • 仅创建者可见:仅服务创建者本人可查看该服务。适用于个人测试或敏感服务场景。

保障服务稳定运行

服务功能区域,可以进行以下稳定性相关配置:

  • 服务响应超时时长:配置每个请求的超时时间,默认为5秒。大模型推理或流式输出等长耗时场景需适当调大,避免请求被截断。

  • 健康检查:系统定期探测实例的存活状态,在实例异常时自动拉起新实例,实现故障自愈。详情请参见健康检查

  • 算力检测与容错:实时监测分布式推理服务的算力健康状态,实现故障自动检测与智能自愈。详情请参见算力检测与容错

  • 发布与更新策略:灰度发布、滚动更新、优雅退出、更新计划等,确保服务版本升级过程中业务不中断。详情请参见发布管理

提升服务性能

通过存储加速和智能调度提升服务性能,加快启动速度、提高吞吐量并降低延迟。

  • 分布式缓存加速:将挂载的OSS等存储中的模型或数据文件高速缓存到实例本地,减少I/O延迟。详情请参见模型缓存加速

  • 模型权重服务 (MoWS):通过模型权重的本地缓存和跨实例共享,显著提升大规模实例部署场景下的扩缩容效率和服务启动速度。详情请参见模型权重服务

  • LLM智能路由:当LLM服务有多个后端实例时,根据后端负载动态分发请求,均衡各实例的算力和显存使用,提升集群资源利用率。详情请参见LLM智能路由部署

配置服务观测

服务功能区域开启以下观测功能,洞察服务状态和排查问题:

参数

描述

保存调用记录

将服务的所有请求和响应记录持久化保存到大数据MaxCompute日志服务SLS中,用于审计、分析或问题排查。

  • 大数据MaxCompute:选择一个已创建的MaxCompute项目(如无请创建MaxCompute项目),并配置MaxCompute数据表名称。部署服务时,系统会自动在选定的项目中创建此表。

  • 日志服务SLS:选择一个已创建的SLS项目(如无,请创建Project),并配置logstore名称。部署服务时,系统会自动在选定的项目中创建此 Logstore。

链路追踪

部分官方镜像已内置采集组件,可一键开启链路追踪功能。对于其他镜像,可通过简单配置来集成ARMS探针,实现对服务调用链路的端到端监控。可参见EAS中开启LLM应用链路追踪(Tracing)。 配置方法如下:

  • 运行命令增加aliyun-bootstrap -a install && aliyun-instrument python app.py,用以安装探针并使用ARMS Python探针启动应用(请将app.py替换为用于提供预测服务的主文件)。

  • 三方库配置增加aliyun-bootstrap,用于从PyPI仓库下载探针安装器。

使用异步与弹性服务

  • 异步推理:对于AIGC、视频处理等长耗时推理场景,建议开启异步队列,客户端发起调用后可立即获得响应,并通过轮询或回调方式获取最终结果。详情请参见部署异步推理服务

  • 弹性Job服务:在服务功能区域开启任务模式,可将推理服务部署为按需执行的Job服务,适用于批量数据处理、定时任务等场景。任务完成后资源自动释放,节约成本。详情请参见弹性Job服务

编辑JSON配置

服务配置区域查看当前界面配置对应的完整 JSON,并支持直接编辑。

说明

对于自动化和精细化配置场景,还可以直接使用 JSON 文件来定义和部署服务。详情请参见JSON部署