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