Inference Service
推理服务功能的核心定义是将训练好的机器学习或深度学习模型部署为在线可调用的服务,使用 HTTP API 或 gRPC 等协议,使应用能够实时或批量使用模型的预测、分类、生成等功能。该功能主要解决模型训练完成后,如何高效、稳定、便捷地将模型部署到生产环境,并提供可扩展的在线服务。
目录
优势
- 简化模型部署流程,降低部署复杂度。
- 提供高可用、高性能的在线和批量推理服务。
- 支持动态模型更新和版本管理。
- 实现模型推理服务的自动化运维和监控。
核心功能
推理服务的直接模型部署
- 允许用户直接从模型仓库选择特定版本的模型文件,并指定推理运行时镜像,快速部署在线推理服务。系统自动下载、缓存并加载模型,启动推理服务。简化模型部署流程,降低部署门槛。
推理服务的应用
- 使用 Kubernetes 应用作为推理服务。该方式提供更大灵活性,允许用户根据需求自定义推理环境。
推理服务模板管理
- 支持推理服务模板的创建、管理和删除,允许用户基于预定义模板快速部署推理服务。
推理服务的批量操作
- 支持对多个推理服务进行批量启动、停止、更新和删除等操作。
- 支持批量推理任务的创建、监控和结果导出。
- 提供批量资源管理,可批量分配和调整推理服务资源。
推理体验
- 提供交互式界面,方便用户测试和体验推理服务。
- 支持多种输入输出格式,满足不同应用场景需求。
- 提供模型性能评估工具,帮助用户优化模型部署。
推理运行时支持
- 集成多种主流推理框架,如 vLLM、Seldon MLServer 等,支持用户自定义推理运行时。
- vLLM:针对大型语言模型(LLMs)如 DeepSeek/Qwen 优化,具备高并发处理能力和更优资源效率,提升吞吐量。
- MLServer:面向传统 ML 模型(XGBoost/图像分类),支持多框架兼容,简化调试流程。
访问方式、日志、Swagger、监控等
- 提供多种访问方式,如 HTTP API 和 gRPC。
- 支持详细日志记录与分析,便于用户排查问题。
- 自动生成 Swagger 文档,方便用户集成和调用推理服务。
- 提供实时监控和告警功能,保障服务稳定运行。
创建推理服务
第 1 步:进入模型仓库
在左侧导航栏点击 Model Repository
自定义发布推理服务需要手动设置参数。也可以通过组合输入参数创建“模板”,实现推理服务的快速发布。
第 2 步:发起推理服务发布
点击模型名称进入模型详情页,右上角点击 Publish Inference Service。
第 3 步:配置模型元数据(如需)
若 "Publish Inference Service" 按钮不可点击,进入 "File Management" 标签页,点击“编辑元数据”,根据实际模型信息选择 "Task Type" 和 "Framework"。(必须编辑默认分支的元数据才生效)
第 4 步:选择发布模式并配置
进入 发布模式选择 页面。AML 提供 自定义发布 和 模板发布 两种选项。
-
模板发布:
- 选择模型并点击 模板名称
- 进入模板发布表单,模板参数预加载,可手动编辑
- 点击 发布 部署推理服务
-
自定义发布:
- 点击 自定义发布
- 进入自定义发布表单,配置参数
- 点击 发布 部署推理服务
第 5 步:监控与管理推理服务
可在左侧导航的 Inference Service 下查看已发布推理服务的状态、日志等详情。若推理服务启动失败或运行资源不足,可能需要更新或重新发布推理服务,并修改可能导致启动失败的配置。
注意: 推理服务会根据请求流量在“最小副本数”和“最大副本数”之间自动伸缩。若“最小副本数”设置为 0,则在无请求一段时间后推理服务会自动暂停并释放资源,此时若有请求到来,推理服务会自动启动并加载缓存于 PVC 的模型。
AML 基于 kserve InferenceService CRD 完成云原生推理服务的发布和运维。如果熟悉 kserve 使用,也可在“从模型直接发布推理服务”时点击右上角的 “YAML” 按钮,直接修改 YAML 文件完成更高级的发布操作。
模型发布参数说明
推理服务模板管理
AML 引入 模板发布 以快速部署推理服务。支持创建和删除模板(更新模板需新建)。
第 1 步:创建模板
- 在左侧导航栏点击 Inference Service > Create Inference Service
- 点击 自定义发布
- 进入表单页面配置参数
- 点击 创建模板
第 2 步:基于已有模板创建新模板
- 在左侧导航栏点击 Inference Service > Create Inference Service
- 选择模型并点击 模板名称
- 根据需要编辑参数
- 点击 创建模板 保存为新模板
第 3 步:删除模板
- 在左侧导航栏点击 Inference Service > Create Inference Service
- 在模板卡片上点击 操作 > 删除
- 确认删除
推理服务更新
- 在左侧导航栏点击 Inference Service。
- 点击 推理服务名称。
- 在推理服务详情页右上角点击 操作 > 更新 进入更新页面。
- 修改必要字段后点击 更新。系统将执行滚动更新,避免影响现有客户端请求。
调用已发布推理服务
AML 提供可视化的 "推理体验" 方式,针对常见任务类型访问已发布推理服务;也可使用 HTTP API 方式调用推理服务。
推理体验
AML 支持以下任务类型的推理服务演示(任务类型在模型元数据中指定):
- 文本生成
- 文本分类
- 图像分类
- 图像生成
成功发布上述任务类型的推理服务后,可在模型详情页和推理服务详情页右侧显示 "推理体验" 弹窗。根据推理任务类型,输入输出数据类型可能不同。以文本生成为例,输入文本后,模型生成的文本会以蓝色字体追加显示在文本框输入内容后。 推理体验支持选择同一模型在不同集群部署且发布多次的不同推理服务。选择后调用该推理服务返回推理结果。
HTTP API 调用
发布推理服务后,可在应用或其他服务中调用该推理服务。本文以 Python 代码为例展示如何调用已发布推理 API。
-
在左侧导航栏点击 Inference Service > 推理服务名称 进入推理服务详情页。
-
点击 访问方式 标签页,获取集群内或集群外访问方式。集群内访问方式可直接从 Notebook 或该 K8s 集群内其他容器访问。若需从集群外(如本地笔记本)访问,则需使用集群外访问方式。
-
点击调用示例查看示例代码。
注意:调用示例中的代码仅支持使用 mlserver 运行时(Seldon MLServer)发布的推理服务的 API 调用协议。此外,Swagger 标签页也仅支持访问 mlserver 运行时发布的推理服务。
推理参数说明
调用推理服务时,可通过调整模型推理参数来调节模型输出效果。 在 推理体验 界面,预置了常用参数及默认值,也支持添加任意自定义参数。
不同任务类型的参数说明
文本生成
预设参数
其他参数
更多参数请参考 Text Generation Parameter Configuration。
图像生成
预设参数
其他参数
更多参数请参考 Text-to-Image Parameter Configuration。
文本分类
预设参数
更多参数请参考 Text Classification Parameter Configuration