管理推理服务

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

优势

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

核心功能

直接将模型部署为推理服务

  • 允许用户部署 Model Catalog 中的制品或 Model Registry 中选定的活动版本,也可直接从 PVC 挂载模型。系统会自动下载、缓存并加载模型,然后启动推理服务。

将原生应用用作推理服务

  • 使用 Kubernetes 原生应用作为推理服务。此方式具有更大的灵活性,允许用户根据需要自定义推理环境。

推理服务模板管理

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

推理服务批量操作

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

推理体验

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

推理 Runtime 支持

  • 集成 vLLM、Seldon MLServer 等多种主流推理框架,并支持用户自定义推理 Runtime。
TIP
  • vLLM:针对 DeepSeek/Qwen 等大型语言模型 (LLM) 进行了优化,支持高并发处理和更高吞吐量,同时具备出色的资源效率。
  • MLServer:专为传统 ML 模型(XGBoost/图像分类)设计,提供多框架兼容性和简化的调试流程。

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

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

创建推理服务

第 1 步:访问推理服务创建页面

可通过以下两种方式启动推理服务发布流程:

  1. 从 Model Catalog:在用户视图中,打开 AI Hub > Model Catalog,选择一个目录模型,然后单击 创建推理 API。
  2. 从 Model Registry:在用户视图中,打开 AI Hub > Model Registry,选择一个活动的已注册模型版本,然后单击 创建推理 API 或 部署。
  3. 从推理服务:打开 AI Hub > 推理服务,然后选择 创建推理服务。
TIP

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

第 2 步:配置模型元数据(如需要)

如果 创建推理 API 不可用,请确认目录条目或已注册模型版本具有制品 URI,以及所需的任务和框架元数据。对于已注册模型,可在 Model Registry 详情页面更新标签或自定义属性。模型版本必须处于活动 (LIVE) 状态后才能部署。

第 3 步:选择发布模式并配置

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

  1. 模板发布:

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

    • 单击 自定义发布
    • 进入自定义发布表单并配置参数,包括 模型来源(Model Catalog、Model Registry、Connection 或 Persistent Volume Claim,具体取决于已安装的版本)。
    • 单击 发布 以部署推理服务

第 4 步:监控和管理推理服务

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

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

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

模型发布参数说明

参数说明
名称必填,推理 API 的名称。
描述推理 API 的详细说明,用于解释其功能和用途。
模型位置必填,选择模型文件的来源:Model repository 或 PVC。
模型 PVC当模型位置为 PVC 时必填。选择包含模型文件的现有 PVC。
模型 PVC 路径当模型位置为 PVC 时必填。指定模型在 PVC 中的路径。
模型类型当模型位置为 PVC 时必填。选择 Generative AI model 或 Predictive Model。此选择决定可用的 Runtime。
模型当模型位置为 Model repository 时必填。用于推理的模型名称。
版本当模型位置为 Model repository 时必填。模型版本。选项包括 Branch 和 Tag。
推理 Runtime必填,用于推理 Runtime 的引擎。当 Model Type 为 Generative AI model 时,llm-d 可用于分布式推理。
配置来源必填,选择部署资源的来源:Hardware profile 或 Custom。
硬件配置当配置来源为 Hardware profile 时必填。选择用于配置所需资源的预定义硬件配置。
请求 CPU当配置来源为 Custom 时必填。推理服务请求的 CPU 资源量。
请求内存当配置来源为 Custom 时必填。推理服务请求的内存资源量。
CPU 限制当配置来源为 Custom 时必填。推理服务可使用的最大 CPU 资源量。
内存限制当配置来源为 Custom 时必填。推理服务可使用的最大内存资源量。
GPU 加速类型当配置来源为 Custom 时可用。GPU 加速的类型。
GPU 加速值当配置来源为 Custom 时可用。GPU 加速的值。
存储容量当模型位置为 Model repository 时必填。用于缓存模型的临时存储容量。
自动扩缩容启用或禁用自动扩缩容功能。
实例数必填,运行推理服务的实例数量。
环境变量注入容器 Runtime 环境的键值对。
添加参数传递给容器入口点可执行文件的参数。字符串数组(例如 ["--port=8080", "--batch_size=4"])。
启动命令覆盖容器镜像中的默认 ENTRYPOINT 指令。可执行文件 + 参数(例如 ["python", "serve.py"])

推理服务模板管理

AML 引入了 模板发布,用于快速部署推理服务。您可以创建和删除模板(更新模板需要创建新模板)。

第 1 步:创建模板

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

第 2 步:从现有模板创建新模板

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

第 3 步:删除模板

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

更新推理服务

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

调用已发布的推理服务

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

推理体验

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

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

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

通过 HTTP API 调用

发布推理服务后,您可以在原生应用或其他服务中调用此推理服务。本文档将以 Python 代码为例,说明如何调用已发布的推理 API。

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

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

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

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

推理参数说明

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

不同任务类型的参数说明

文本生成

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

有关更多参数,请参阅文本生成参数配置。

图像生成

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

有关更多参数,请参阅图像生成参数配置。

文本分类

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

有关更多参数,请参阅文本分类参数配置

其他参考资料

图像分类参数配置

对话参数配置

摘要参数配置

翻译参数配置

Text2Text 生成参数配置

图生图参数配置