推理服务

推理服务功能的核心定义是将训练好的机器学习或深度学习模型部署为可在线调用的服务,使用 HTTP API 或 gRPC 等协议,使应用能够实时或批量使用模型的预测、分类、生成等能力。该功能主要解决模型训练完成后,如何高效、稳定、便捷地将模型部署到生产环境,并提供可扩展的在线服务。

优势

  • 简化模型部署流程,降低部署复杂度。
  • 提供高可用、高性能的在线和批量推理服务。
  • 支持动态模型更新和版本管理。
  • 实现模型推理服务的自动化运维与监控。

核心功能

用于推理服务的直接模型部署

  • 允许用户直接从模型仓库中选择模型文件的特定版本,并指定推理运行时镜像,快速部署在线推理服务。系统会自动下载、缓存并加载模型,启动推理服务。这样可以简化模型部署流程并降低部署门槛。

用于推理服务的 Kubernetes 应用

  • 将 Kubernetes 应用用作推理服务。这种方式提供了更高的灵活性,允许用户根据自身需求自定义推理环境。

推理服务模板管理

  • 支持创建、管理和删除推理服务模板,允许用户基于预定义模板快速部署推理服务。

推理服务批量操作

  • 支持对多个推理服务执行批量操作,例如批量启动、停止、更新和删除。
  • 支持创建、监控和导出批量推理任务结果。
  • 提供批量资源管理,可对推理服务资源进行批量分配和调整。

推理体验

  • 提供交互式界面,便于用户测试和体验推理服务。
  • 支持多种输入和输出格式,以满足不同应用场景的需求。
  • 提供模型性能评估工具,帮助用户优化模型部署。

推理运行时支持

  • 集成了多种主流推理框架,例如 vLLM、Seldon MLServer 等,并支持用户自定义推理运行时。
TIP
  • vLLM:针对 DeepSeek/Qwen 等大语言模型(LLMs)进行了优化,具备高并发处理能力,并通过更优的资源效率提升吞吐量。
  • MLServer:面向传统 ML 模型(XGBoost/图像分类),提供多框架兼容性和简化的调试流程。

访问方式、日志、Swagger、监控等

  • 提供多种访问方式,例如 HTTP API 和 gRPC。
  • 支持详细的日志记录和分析,便于用户排查问题。
  • 自动生成 Swagger 文档,便于用户集成和调用推理服务。
  • 提供实时监控和告警功能,确保服务稳定运行。

创建推理服务

步骤 1:进入模型仓库

在左侧导航栏中,点击 模型仓库

TIP

自定义发布推理服务需要手动设置参数。您也可以通过组合输入参数创建一个“模板”,以便快速发布推理服务。

步骤 2:发起推理服务发布

点击模型名称进入模型详情页,然后点击右上角的 发布推理服务

步骤 3:配置模型元数据(如需要)

如果 “发布推理服务” 按钮不可点击,请进入 “文件管理” 选项卡,点击“编辑元数据”,并根据实际模型信息选择 “任务类型”“框架”。(您必须编辑默认分支的元数据,修改才会生效。)

步骤 4:选择发布模式并配置

进入 发布模式选择 页面。AML 提供 自定义发布模板发布 两种选项。

  1. 模板发布:

    • 选择模型并点击 模板名称
    • 进入模板发布表单,模板中的参数会预先加载,但可以手动编辑
    • 点击 发布,部署推理服务
  2. 自定义发布:

    • 点击 自定义发布
    • 进入自定义发布表单并配置参数
    • 点击 发布,部署推理服务

步骤 5:监控和管理推理服务

您可以在左侧导航栏的推理服务中查看已发布推理服务的状态、日志及其他详情。如果推理服务启动失败或运行资源不足,您可能需要更新或重新发布推理服务,并修改可能导致启动失败的配置。

注意: 推理服务会根据请求流量在“最小副本数”和“最大副本数”之间自动进行扩缩容。如果将“最小副本数”设置为 0,当一段时间内没有请求时,推理服务会自动暂停并释放资源。此时如果有请求到来,推理服务可以自动启动并加载保存在 PVC 中的模型。

AML 基于 kserve InferenceService CRD 完成云原生推理服务的发布和运维。如果您熟悉 kserve 的使用,还可以在“从模型直接发布推理服务”时点击右上角的 “YAML” 按钮,直接修改 YAML 文件,以完成更高级的发布操作。

模型发布参数说明

参数描述
名称必填,推理 API 的名称。
描述推理 API 的详细描述,说明其功能和用途。
模型必填,用于推理的模型名称。
版本必填,模型版本。可选值包括 Branch 和 Tag。
Inference Runtimes必填,用于推理运行时的引擎。
Requests CPU必填,推理服务请求的 CPU 资源量。
Requests Memory必填,推理服务请求的内存资源量。
Limits CPU必填,推理服务可使用的最大 CPU 资源量。
Limits Memory必填,推理服务可使用的最大内存资源量。
GPU Acceleration TypeGPU 加速类型。
GPU Acceleration ValueGPU 加速值。
Temporary storage推理服务使用的临时存储空间。
Mount existing PVC挂载一个现有的 Kubernetes Persistent Volume Claim(PVC)作为存储。
Capacity必填,临时存储或 PVC 的容量大小。
Auto scaling启用或禁用自动扩缩容功能。
Number of instances必填,运行推理服务的实例数量。
Environment variables注入到容器运行时环境中的键值对。
Add parameters传递给容器入口可执行文件的参数。字符串数组(例如 ["--port=8080", "--batch_size=4"])。
Startup command覆盖容器镜像中的默认 ENTRYPOINT 指令。可执行文件 + 参数(例如 ["python", "serve.py"])。

推理服务模板管理

AML 引入 模板发布 以便快速部署推理服务。您可以创建和删除模板(更新模板需要重新创建一个新模板)。

步骤 1:创建模板

  • 在左侧导航栏中,点击 推理服务 > 创建推理服务
  • 点击 自定义发布
  • 进入表单页面并配置参数
  • 点击 创建模板

步骤 2:基于现有模板创建新模板

  • 在左侧导航栏中,点击 推理服务 > 创建推理服务
  • 选择模型并点击 模板名称
  • 根据需要编辑参数
  • 点击 创建模板,保存为新模板

步骤 3:删除模板

  • 在左侧导航栏中,点击 推理服务 > 创建推理服务
  • 在模板卡片上点击 操作 > 删除
  • 确认删除

更新推理服务

  1. 在左侧导航栏中,点击 推理服务
  2. 点击 推理服务名称
  3. 在推理服务详情页中,点击右上角的 操作 > 更新 进入更新页面。
  4. 修改必要字段后点击 更新。系统将执行滚动更新,以避免影响现有客户端请求。

调用已发布的推理服务

AML 为常见任务类型提供了可视化的 “推理体验” 方式来访问已发布的推理服务;您也可以使用 HTTP API 方式调用推理服务。

推理体验

AML 支持以下任务类型的推理服务推理演示(任务类型在模型元数据中指定):

  • 文本生成
  • 文本分类
  • 图像分类
  • 图像生成

在成功发布上述任务类型的推理服务后,您可以在模型详情页和推理服务详情页右侧显示 “推理体验” 对话框。根据推理任务类型的不同,输入和输出数据类型可能不同。以文本生成为例,输入文本后,模型生成的文本会以蓝色字体追加在文本框中已输入内容之后。 推理体验支持选择部署在不同集群中、由同一模型多次发布的不同推理服务。选择某个推理服务后,将调用该推理服务并返回推理结果。

通过 HTTP API 调用

发布推理服务后,您可以在应用或其他服务中调用该推理服务。本文档以 Python 代码为例,展示如何调用已发布的推理 API。

  1. 在左侧导航栏中点击 推理服务 > 推理服务名称 进入推理服务详情页。

  2. 点击 访问方式 选项卡,获取集群内或集群外访问方式。集群内访问方式可直接从 Notebook 或该 K8s 集群中的其他容器访问。如果需要从集群外的位置(例如本地笔记本电脑)访问,则需要使用集群外访问方式。

  3. 点击 调用示例 查看示例代码。

    注意:调用示例中提供的代码仅支持使用 mlserver 运行时(Seldon MLServer)发布的推理服务所支持的 API 调用协议。此外,Swagger 选项卡也仅支持访问通过 mlserver 运行时发布的推理服务。

推理参数说明

调用推理服务时,您可以通过调整模型推理参数来调整模型输出效果。 在 推理体验 界面中,常见参数和默认值已经预置,也可以添加任意自定义参数。

不同任务类型的参数说明

文本生成

预设参数
参数数据类型描述
do_samplebool是否使用采样;否则使用贪婪解码。
max_new_tokensint最大生成 token 数,不包含提示词中的 token。
repetition_penaltyfloat重复惩罚,用于控制生成文本中的重复内容;1.0 表示不重复,0 表示重复。
temperaturefloat生成文本时模型对下一个 token 的随机性;1.0 表示高随机性,0 表示低随机性。
top_kint在计算下一个 token 的概率分布时,仅考虑概率最高的前 k 个 token。
top_pfloat控制模型在选择下一个 token 时所考虑的累积概率分布。
use_cachebool是否使用模型在生成过程中计算的中间结果。
其他参数
参数数据类型描述
max_lengthint最大生成 token 数。对应输入提示词中的 token 数 + max_new_tokens。如果设置了 max_new_tokens,则其效果会被 max_new_tokens 覆盖。
min_lengthint最小生成 token 数。对应输入提示词中的 token 数 + min_new_tokens。如果设置了 min_new_tokens,则其效果会被 min_new_tokens 覆盖。
min_new_tokensint最小生成 token 数,不包含提示词中的 token。
early_stopbool控制基于 beam 的方法的停止条件。True:当出现 num_beams 个完整候选时停止生成。False:在难以找到更优候选时,使用启发式方法停止生成。
num_beamsintbeam search 使用的 beam 数。1 表示不使用 beam search。
max_timeint允许计算运行的最长时间,单位为秒。
num_beam_groupsintnum_beams 划分为多个组,以确保不同 beam 组之间的多样性。
diversity_penaltyfloat在启用 num_beam_groups 时生效。该参数在组间应用多样性惩罚,以确保每个组生成的内容尽可能不同。
penalty_alphafloatpenalty_alpha 大于 0 且 top_k 大于 1 时启用对比搜索。penalty_alpha 值越大,对比惩罚越强,生成的文本越可能符合预期。如果 penalty_alpha 设置过大,可能会导致生成文本过于单一。
typical_pfloat局部典型性衡量的是:在给定已生成部分文本的情况下,预测下一个目标 token 的条件概率与预测下一个随机 token 的期望条件概率之间的相似度。如果设置为小于 1 的浮点数,则会保留概率之和达到或超过 typical_p 的最小局部典型 token 集合用于生成。
epsilon_cutofffloat如果设置为严格介于 0 和 1 之间的浮点数,则仅采样条件概率大于 epsilon_cutoff 的 token。建议值范围为 3e-4 到 9e-4,具体取决于模型大小。
eta_cutofffloatEta 采样是局部典型采样和 epsilon 采样的混合。如果设置为严格介于 0 和 1 之间的浮点数,则仅当 token 大于 eta_cutoff 或 sqrt(eta_cutoff) * exp(-entropy(softmax(next_token_logits))) 时才会被考虑。建议值范围为 3e-4 到 2e-3,具体取决于模型大小。
repetition_penaltyfloat重复惩罚参数。1.0 表示不惩罚。

更多参数请参考 Text Generation Parameter Configuration

图像生成

预设参数
参数数据类型描述
num_inference_stepsint去噪步骤数。更多的去噪步骤通常会生成更高质量的图像,但推理速度会更慢。
use_cachebool是否使用模型在生成过程中计算的中间结果。
其他参数
参数数据类型描述
heightint生成图像的高度,单位为像素。
widthint生成图像的宽度,单位为像素。
guidance_scalefloat用于调整生成图像质量和多样性之间的平衡。值越大,多样性越高,但质量越低;建议范围为 7 到 8.5。
negative_promptstr or List[str]用于引导图像生成中不应包含哪些内容。

更多参数请参考 Text-to-Image Parameter Configuration

文本分类

预设参数
参数数据类型描述
top_kint最高得分的类别标签数量。如果提供的数值为 None 或大于模型配置中可用标签数量,则默认返回所有标签数量。
use_cachebool是否使用模型在生成过程中计算的中间结果。

更多参数请参考 Text Classification Parameter Configuration

其他参考

Image Classification Parameter Configuration

Conversational Parameter Configuration

Summarization Parameter Configuration

Translation Parameter Configuration

Text2Text Generation Parameter Configuration

Image-to-Image Parameter Configuration