推理服务
推理服务功能的核心定义是将训练好的机器学习或深度学习模型部署为可在线调用的服务,使用 HTTP API 或 gRPC 等协议,使应用能够实时或批量使用模型的预测、分类、生成及其他能力。该功能主要解决模型训练完成后,如何将模型高效、稳定、便捷地部署到生产环境中,并提供可扩展的在线服务。
优势
- 简化模型部署流程,降低部署复杂度。
- 提供高可用、高性能的在线和批量推理服务。
- 支持模型动态更新和版本管理。
- 实现模型推理服务的自动化运维和监控。
核心功能
用于推理服务的直接模型部署
- 允许用户从 Model repository 中选择特定版本的模型文件,或直接从 PVC 挂载模型,并指定推理运行时镜像,以快速部署在线推理服务。系统会自动下载、缓存并加载模型,然后启动推理服务。这简化了模型部署流程,并降低了部署门槛。
用于推理服务的应用
- 将 Kubernetes 应用作为推理服务使用。该方式提供了更大的灵活性,允许用户根据自身需求自定义推理环境。
推理服务模板管理
- 支持创建、管理和删除推理服务模板,允许用户基于预定义模板快速部署推理服务。
推理服务批量操作
- 支持对多个推理服务执行批量操作,例如批量启动、停止、更新和删除。
- 支持批量推理任务的创建、监控和结果导出。
- 提供批量资源管理能力,可批量分配和调整推理服务资源。
推理体验
- 提供交互式界面,便于用户测试和体验推理服务。
- 支持多种输入和输出格式,以满足不同应用场景的需求。
- 提供模型性能评估工具,帮助用户优化模型部署。
推理运行时支持
- 集成多种主流推理框架,例如 vLLM、Seldon MLServer 等,并支持用户自定义推理运行时。
- vLLM:针对大语言模型(LLMs),如 DeepSeek/Qwen 进行了优化,具备高并发处理能力和更高吞吐量,同时资源利用效率更优。
- MLServer:面向传统 ML 模型(XGBoost/图像分类),提供多框架兼容性和简化的调试体验。
访问方式、日志、Swagger、监控等
- 提供多种访问方式,例如 HTTP API 和 gRPC。
- 支持详细的日志记录和分析,便于用户排查问题。
- 自动生成 Swagger 文档,便于用户集成和调用推理服务。
- 提供实时监控和告警功能,确保服务稳定运行。
创建推理服务
第 1 步:进入推理服务创建页面
启动推理服务发布流程有两种方式:
- 从 Model repository 进入:在左侧导航栏中,单击 Model repository。单击目标模型名称进入模型详情页,然后在右上角单击 Publish Inference Service。
- 从推理服务进入:在左侧导航栏中,单击 Inference Service,然后单击 Create Inference Service。
自定义发布推理服务需要手动设置参数。你也可以通过组合输入参数创建一个“模板”,以便快速发布推理服务。
第 2 步:配置模型元数据(如有需要)
如果你从 Model repository 进入,且 "Publish Inference Service" 按钮不可点击,请前往 "File Management" 选项卡,单击 "Edit Metadata",并根据实际模型信息选择 "Task Type" 和 "Framework"。(必须编辑默认分支的元数据才能生效。)
第 3 步:选择发布模式并进行配置
进入 Publish Mode Selection 页面。AML 提供 Custom Publish 和 Template Publish 两种选项。
-
Template Publish:
- 选择模型并单击 Template Name
- 进入模板发布表单,此时模板中的参数会预加载,但可以手动编辑
- 单击 Publish 部署推理服务
-
Custom Publish:
- 单击 Custom Publish
- 进入自定义发布表单并配置参数,包括 Model Location(Model repository 或 PVC)。
- 单击 Publish 部署推理服务
第 4 步:监控和管理推理服务
你可以在左侧导航中的 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 方式调用推理服务。
推理体验
AML 支持以下任务类型的推理服务推理演示(任务类型在模型元数据中指定):
- 文本生成
- 文本分类
- 图像分类
- 文本到图像
成功发布上述任务类型的推理服务后,你可以在模型详情页和推理服务详情页右侧显示 "Inference Experience" 对话框。根据推理任务类型的不同,输入和输出数据类型可能不同。以文本生成为例,输入文本后,模型生成的文本会以蓝色字体附加在文本框中已输入文本的后面。 推理体验支持选择部署在不同集群中的不同推理服务,以及同一模型多次发布的推理服务。选择某个推理服务后,将调用该推理服务并返回推理结果。
通过 HTTP API 调用
发布推理服务后,你可以在应用或其他服务中调用该推理服务。本文档将以 Python 代码为例,展示如何调用已发布的推理 API。
-
在左侧导航栏中单击 Inference Service > Inference Service Name,进入推理服务详情页。
-
单击 Access Method 选项卡,获取集群内或集群外访问方式。集群内访问方式可直接从该 K8s 集群中的 Notebook 或其他容器访问。如果需要从集群外部位置(例如本地笔记本电脑)访问,则需要使用集群外访问方式。
-
单击 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