快速部署推理服务
本文主要面向首次使用 AIStudio 推理服务功能的用户,帮助用户快速上手,在平台上完成「推理服务」部署的关键流程。
您将了解:
- 如何准备推理服务依赖的模型、环境。
- 通过简单配置实例数量、规格、网络等参数,快速部署模型推理服务。
- 如何查看服务部署状态。
- 如何访问已部署的服务。
前提条件
在使用「包年包月资源」创建推理服务之前,请确认您所属租户已购买该类型算力资源。
注意
运行推理服务要求需要预付费计算资源(包年/包月/包周/包日资源池)。暂不支持按量付费方式。
包年包月算力资源
包年包月算力资源是指租户按固定周期(包两年/包年/包月/包周/包日)购买算力资源配额的独占使用权,到期前需主动续费。包年包月资源提供多种 GPU 配置。
您可以前往算力市场页面,自助购买包年包月资源。您也可以直接联系商务或售后服务下单购买。
租户新购的包年包月算力资源自动进入默认包年包月资源池。您可以前往资源池页面查看。
提示
- 租户购买的包年包月算力资源一般属于默认类别。租户可从默认资源池移出资源,加入租户自建的专属资源池,因此专属类别的资源池也会存放包年包月资源。
- AIStudio 基于 K8S 和容器技术提供主要功能,仅提供池化的算力资源,而非裸机或虚拟机。
存储资源
AIStudio 推理服务可使用以下类型存储资源。
- 系统盘:免费提供 50 GiB 持久化系统盘(挂载在
/
下),推理服务中所有容器实例系统盘存储空间均为 50 GiB。 - 共享高性能存储:租户可额外购买共享高性能存储。可挂载至的不同实例中。容器实例间共享,可以多点读写,不受实例释放的影响。
提示
如需购买共享高性能存储,请联系商务或售后服务。
准备工作
在部署模型推理服务之前,请确保满足以下条件:
- 算力资源: 确保您拥有可用的预付费计算资源(包年/包月/包周/包日资源池)。如需购买,请联系商务或售后服务。
- 模型文件: 将推理服务所需的模型文件提前准备好。
- 共享高性能存储: 将模型文件上传至共享高性能存储。推理服务实例将通过挂载的方式访问存储中的模型文件。
准备模型文件
为确保推理服务的稳定与高效,我们建议:
提前准备模型文件并将其放置在共享高性能存储中。一般不建议在代码中自动下载模型。
使用免费的 AICoder 来访问和操作共享高性能存储。以下示例展示了如何下载模型文件到共享存储:
shell# 假设 /mnt/public 是共享高性能存储的一个挂载点 # 创建用于存放模型的目录 mkdir -vp /mnt/public/models cd /mnt/public/models # 示例:从 ModelScope 下载 Qwen2.5-0.5B-Instruct 模型 # 需要先安装 Git LFS git lfs install git clone https://www.modelscope.cn/Qwen/Qwen2.5-0.5B-Instruct.git # 下载完成后,确认模型文件已存在(通常包含 .safetensors 或 .bin 文件) ls -alht /mnt/public/models/Qwen2.5-0.5B-Instruct
准备运行环境 (镜像)
AIStudio 推理服务的运行环境基于容器镜像。镜像来源包括:
- 平台预置镜像:平台预置了针对推理优化的镜像,例如集成了 FastChat + vLLM 的镜像,方便用户快速部署。
- 自定义镜像:您也可以使用自定义镜像。
- 外部镜像:如果用户本地或其它外部镜像仓库中有正在使用的镜像,可以参考迁移外部镜像至租户镜像仓库。
- 构建镜像:平台镜像中心支持按需构建自定义镜像,支持在现有镜像上安装依赖项、Dockerfile 和保存开发机环境为新的镜像三种构建方式,详见构建自定义镜像。
创建推理服务
访问智算云控制台的推理服务页面,点击 创建推理服务,进入创建界面。
请根据页面提示,完成下方所有步骤中的配置。
Step 0: 推理服务类型
在创建推理服务之前,请首先选择适合您模型和需求的部署模式。
根据您的部署需求,决定是否要启用分布式推理。
常规部署 (默认):标准模式,每个服务实例对应一个独立的容器。适用于大多数模型。当服务需要多个实例时,平台会创建多个这样完全相同的、独立运行的容器副本,自动在这些独立的实例(容器副本)之间进行负载均衡。
分布式推理:适用于单个容器无法承载的超大模型。此时,一个服务实例由多个协同工作的 Worker 容器组成。您仍然可以创建多个这样的分布式实例(每个实例都包含其自己的一组 Worker 容器)。平台会在这些完整的分布式实例之间进行负载均衡。扩缩容通过调整分布式实例的数量(增加或减少由多个 Worker 组成的完整实例组)来实现。如需使用此模式,请务必参考详细文档:部署分布式推理服务 以了解其配置要求和使用方法。
注意
- 选择分布式推理模式后,您需要定义两个关键数量:
- 实例数量:指定您希望运行多少个独立的、用于负载均衡的分布式推理组。每个组都是一个完整的、可以独立处理请求的单元。
- 单实例包含 Worker 数:指定构成一个分布式推理组(即一个实例)的 Worker 容器数量。这个值将决定平台为该实例注入的
WORLD_SIZE
环境变量的值。
- 您的推理镜像和启动命令必须能够处理分布式环境,正确使用平台注入的
MASTER_ADDR
,RANK
,WORLD_SIZE
等环境变量来初始化 Worker 间的通信。
- 选择分布式推理模式后,您需要定义两个关键数量:
选择适合您需求的部署模式后,继续配置算力资源与规格。
Step 1 选择算力资源与规格
首先,在「规格信息」区域选择合适的 GPU 算力资源。
资源池:平台会列出租户下的所有包年包月资源池。在资源池下拉列表中可直接查看池中空闲卡数。
点击占用情况和负载排队情况可查看当前资源占用明细,并提前判断是否可启动足够数量的实例。
注意
什么是占用情况和负载排队情况?
在 AI/ML 工作负载中,GPU 资源的分配通常具有特定的需求。例如:某些工作负载要求在一组节点上运行,每节点必须提供 8 个空闲 GPU,而非在多个节点上分散的 GPU 资源。智算云平台的占用情况视图提供资源池各个节点 GPU 占用的实时视图,而工作负载优先级调度功能支持允许查看当前工作负载排队等待资源的情况,超级管理员通过拖拽高优先级负载至优先调度队列,可确保关键任务优先获得 GPU 资源。详见 GPU 使用视图与工作负载队列管理。
实例规格/Worker 规格:选择运行推理服务的计算资源规格。每种规格定义了 CPU、显卡型号与数量、内存的组合。平台会根据所选资源池的剩余资源,计算出每种规格的「可启动数量」。例如,
NVIDIA A100-40G-NVLink 显卡数量 1
的可启动数量为 9,表示当前资源池最多可以启动 9 个使用单张 A100-40G 显卡的容器。注意,在分布式推理模式下,该配置名称为 Worker 规格。实例数量:设置您希望运行的推理服务实例数量。
- 如果实例数量设置为大于 1,平台将自动提供负载均衡。
- 如果资源不足,服务可能部署失败或部分实例无法启动。
单实例包含 Worker 数:指定构成一个分布式推理组(即一个实例)的 Worker 容器数量。这个值将决定平台为该实例注入的
WORLD_SIZE
环境变量的值。注意,该选项仅在在分布式推理模式下需要配置。分布式框架: 现已支持 Pytorch DDP。注意,该选项仅在在分布式推理模式下需要配置。
滚动更新:设置服务在进行升级或回滚操作时,允许同时处于不可用状态的最大实例百分比。
- 在开发测试阶段,如果只使用单个实例,可设置为 0%。
- 如果使用多个实例,可以设置为 50% 或根据容灾需求调整。
- 详细说明请参考升级服务。
Step 2 配置服务与镜像
在此步骤中,配置推理服务使用的镜像和启动命令等核心参数。
镜像:选择运行推理服务的容器镜像。您可以在预置镜像或我的镜像(自定义镜像)中选择。
- 使用预置推理镜像:平台预置了推理服务专用镜像。这些镜像通常集成了常用框架(如 FastChat, vLLM)。详见使用预置推理服务镜像。 目前可选的预置镜像示例:
cr.infini-ai.com/infini-ai/inference-base:v1-vllm0.4.0-torch2.1-cuda12.3-ubuntu22.04
cr.infini-ai.com/infini-ai/inference-base:v2-vllm0.6.2-torch2.2-cuda12.3-ubuntu22.04
- 使用自定义镜像:如果您需要特定的环境或依赖,可以选择您自己构建或导入的镜像。
- 使用预置推理镜像:平台预置了推理服务专用镜像。这些镜像通常集成了常用框架(如 FastChat, vLLM)。详见使用预置推理服务镜像。 目前可选的预置镜像示例:
启动命令:填写在容器实例启动时执行的命令。通常用于设置环境变量、准备模型路径、启动推理服务进程。
- 如果使用预置的 Fastchat + vLLM 镜像(如 v2 镜像),可以通过环境变量配置模型和并行度,并将共享存储中的模型链接到镜像内预期路径,最后调用镜像内置的启动脚本
/app/entrypoint.sh
。详见使用预置推理服务镜像。 - 如果使用自定义镜像,您需要根据镜像内的环境和推理框架编写相应的启动命令。
- 如果使用预置的 Fastchat + vLLM 镜像(如 v2 镜像),可以通过环境变量配置模型和并行度,并将共享存储中的模型链接到镜像内预期路径,最后调用镜像内置的启动脚本
Step 3 配置存储
配置实例的存储挂载。
- 系统盘: 指实例的根目录
/
的存储大小,固定为 50GB,通常用于存放操作系统和镜像内容。 - 高性能存储: 挂载租户的共享高性能存储卷。必须在此处添加挂载点,才能在实例内部访问共享存储中的数据(如模型文件)。
- 存储卷:选择需要挂载的共享存储卷。
- 挂载路径:指定该存储卷在实例内部的挂载路径(例如
/mnt/public
)。请确保证启动命令中使用的模型路径与此处配置的挂载路径一致。 - 详见共享高性能存储。
Step 4 配置网络访问
配置服务的网络访问方式和端口。
外网配置:
启用外网访问:勾选此项,服务将可以通过公网访问。
访问地址:
- 默认地址:平台会自动生成一个唯一的公网访问 URL,格式通常为
https://<您的租户特定域名>/AIStudio/inference/api/<推理服务ID>/
。推荐使用此选项。 - 自定义地址:允许您自定义 URL 中的部分路径,但不支持自定义域名。格式类似
https://<您的租户特定域名>/AIStudio/inference/api/<自定义路径>/
。
- 默认地址:平台会自动生成一个唯一的公网访问 URL,格式通常为
详见访问推理服务。
Auth 配置
此选项仅在 启用外网访问 时生效,用于指定客户端在调用推理服务 API 时,传递身份验证凭证(如 API Token)所使用的 HTTP Header 名称。平台支持两种方式:
Authorization (默认):
- 说明:使用 HTTP 标准的
Authorization
Header 进行身份验证。例如,请求中会包含Authorization: Bearer <your_token>
。 - 优点:兼容性强,是业界标准。大多数现有的 API 请求代码和工具(如
curl
, Postman, Pythonrequests
)默认支持此 Header,通常无需修改客户端代码。 - 适用场景:推荐用于大多数情况,特别是直接调用 API 或与标准工具集成时。
- 说明:使用 HTTP 标准的
X-Infini-Auth:
- 说明:使用平台自定义的
X-Infini-Auth
Header 进行身份验证。例如,请求中会包含X-Infini-Auth: Bearer <your_token>
。 - 优点:可以避免与其他可能在代理、网关或前端应用(例如 OpenWebUI)中也使用或拦截
Authorization
Header 的系统产生命名冲突。 - 缺点:非标准 Header,客户端代码需要显式添加或修改为使用
X-Infini-Auth
来传递凭证。 - 适用场景:当您的调用链路中存在中间件或前端应用,且其行为与标准的
Authorization
Header 冲突时,可以选用此选项以规避冲突。
- 说明:使用平台自定义的
注意
无论选择哪种 Header 名称,身份验证的凭证内容(通常是平台生成的 API Token)及其生成和管理方式保持不变。此配置仅改变传递凭证时所使用的 HTTP Header 的名称。选择
X-Infini-Auth
后,请确保更新您的 API 调用代码以使用正确的 Header。内网配置(端口):
- 监听端口:您的推理服务应用程序在容器内部监听的端口(例如,FastChat OpenAI API Server 默认监听 8000)。
- 调用端口:服务暴露给内部网络(如开发机、AICoder或其他服务)进行调用的端口。平台负载均衡器会将发往调用端口的请求转发到实例的监听端口。通常可以设置为 80 (HTTP) 或 443 (HTTPS,如果您的服务支持)。
- 监控端口:如果使用预置推理镜像,可能会有预设的监控端口(如 20000),用于平台采集服务指标。通常无需修改。详见服务监控。
警告
如果推理服务提供 Web UI(例如某些文生图服务),建议将调用端口设置为
80
,以便通过浏览器直接访问。
Step 5 高级配置 (可选)
配置服务的自动扩缩容策略。
- 扩缩容:默认关闭。建议在首次部署并验证服务可用性后,再根据需求配置。
- 手动扩缩容:部署后,在服务详情页手动调整实例数量。
- 定时扩缩容:根据预设的时间计划自动调整实例数量。
- 自动扩缩容:根据 CPU/GPU 使用率、请求量等指标自动调整实例数量。
- 详细使用方法请参考扩缩容。
Step 6 填写基本信息
最后,为您的推理服务命名并添加描述。
- 名称:推理服务的名称,1~64 个字符,支持中英文、数字、下划线 (
_
) 和连字符 (-
)。名称在租户内不必唯一。 - 描述(可选):添加服务的备注信息,最多 400 字符。
完成所有配置后,点击确认创建。服务将进入创建流程。
查看部署状态与访问
服务创建请求提交后,会进入部署中状态。平台会依次执行资源分配、存储网络准备、镜像拉取、服务启动等操作。
部署过程可能需要一些时间,具体取决于镜像大小、网络状况和实例数量。您可以在推理服务列表页查看服务的状态。
查看部署进度:如果服务长时间处于部署中状态,可以将鼠标悬停在状态图标上,或点击状态栏的
...
图标(如果可用),查看详细的部署子步骤和进度。如果在某个子步骤(如拉取镜像)遇到错误,平台通常会自动重试。如果长时间卡住或最终失败,请检查配置(如镜像名称、启动命令、模型路径)是否正确。
访问服务:一旦服务状态变为运行中,您就可以根据 Step 3 中配置的网络方式访问服务了。
- 内网访问:在平台内的开发机、AICoder 或其他任务/服务中,可以通过服务名和调用端口访问,例如
http://<service-name>:<调用端口>/<api-path>
。 - 外网访问:如果开启了外网访问,使用平台生成的公网 URL 进行访问。
- 内网访问:在平台内的开发机、AICoder 或其他任务/服务中,可以通过服务名和调用端口访问,例如
常见问题
请移步推理服务常见问题。