6.2. LM-Eval 评估作业


LM-Eval 服务定义一个名为 LMEvalJob 的新自定义资源定义(CRD)。LMEvalJob 对象代表评估作业。LMEvalJob 对象由 TrustyAI Kubernetes operator 监控。

要运行评估作业,请使用以下信息创建一个 LMEvalJob 对象: model, model parameters, task, 和 secret

创建 LMEvalJob 后,LM-Eval 服务将运行评估作业。当信息可用时 ,LMEvalJob 对象的状态和结果会更新。

注意

其他 TrustyAI 功能(如 bias 和 drift metrics)不支持非稳定模型(包括 LLM)。在包含非稳定模型(如执行评估作业的命名空间)的命名空间中部署 TrustyAIService 自定义资源(CR)可能会导致 TrustyAI 服务中的错误。

LMEvalJob 对象示例

LMEvalJob 对象示例包含以下功能:

  • Hugging Face 的 google/flan-t5-base 模型。
  • wnli 卡中的数据集,部分来自 Hugging Face 的 GLUE (General Language Understand assessment)评估框架。有关 wnli Unitxt 卡的更多信息,请参阅 Unitxt 网站。
  • 以下 multi_class.relation Unitxt 任务的默认参数: f1_microf1_macroaccuracy。此模板可以在 Unitxt 网站中找到:单击 Catalog,然后单击 Tasks,然后从菜单中选择 Classification

以下是 LMEvalJob 对象示例:

apiVersion: trustyai.opendatahub.io/v1alpha1
kind: LMEvalJob
metadata:
  name: evaljob-sample
spec:
  model: hf
  modelArgs:
  - name: pretrained
    value: google/flan-t5-base
  taskList:
    taskRecipes:
    - card:
        name: "cards.wnli"
      template: "templates.classification.multi_class.relation.default"
  logSamples: true
Copy to Clipboard Toggle word wrap

应用示例 LMEvalJob 后,使用以下命令检查其状态:

oc get lmevaljob evaljob-sample
Copy to Clipboard Toggle word wrap

显示类似于如下的输出: NAME: evaljob-sample STATE: Running

当对象状态变为 Complete 时,可以使用评估结果。本例中的 model 和 dataset 都很小。评估作业应在仅 CPU 节点的 10 分钟内完成。

使用以下命令获取结果:

oc get lmevaljobs.trustyai.opendatahub.io evaljob-sample \
  -o template --template={{.status.results}} | jq '.results'
Copy to Clipboard Toggle word wrap

该命令返回类似以下示例的结果:

{
  "tr_0": {
    "alias": "tr_0",
    "f1_micro,none": 0.5633802816901409,
    "f1_micro_stderr,none": "N/A",
    "accuracy,none": 0.5633802816901409,
    "accuracy_stderr,none": "N/A",
    "f1_macro,none": 0.36036036036036034,
    "f1_macro_stderr,none": "N/A"
  }
}
Copy to Clipboard Toggle word wrap

有关结果的备注

  • f1_microf1_macro 和准确性 分数为 0.56、0.36 和 0.56。
  • 完整结果存储在 LMEvalJob 对象的 .status.results 中,作为 JSON 文档。
  • 以上命令仅检索 JSON 文档的 results 字段。

LMEvalJob 属性

下表列出了 LMEvalJob 及其用法中的每个属性:

Expand
表 6.2. LM-Eval 属性
参数描述

model

指定评估哪个模型类型或供应商。此字段直接映射到 lm-evaluation-harness 的-- model 参数。支持的模型类型和供应商包括:

  • HF: HuggingFace 模型
  • openai-completions: OpenAI Completions API 模型
  • openai-chat-completions: OpenAI Chat Completions API 模型
  • local-completionslocal-chat-completions: OpenAI API 兼容服务器
  • textsynth: TextSynth API

modelArgs

模型类型的对名称和值参数的列表。每种模型类型或供应商都支持不同的参数。您可以在 GitHub 上 LM 评估 Harness 库的 models 部分找到更多详细信息。

  • HF (HuggingFace)
  • local-completions (An OpenAI API 兼容服务器)
  • local-chat-completions (An OpenAI API 兼容服务器)
  • openai-completions (OpenAI Completions API 模型)
  • openai-chat-completions (ChatCompletions API 模型)
  • 文本( TextSynth API)

taskList.taskNames

指定 lm-evaluation-harness 支持的任务列表。

taskList.taskRecipes

使用 Unitxt method 格式指定任务:

  • Card: 使用名称指定 Unitxt 卡或 custom 用于自定义卡。

    • Name :指定 Unitxt 目录中的 Unitxt 卡。使用卡 ID 作为值。例如,Wnli 卡的 ID 是 card .wnli
    • Custom:定义和使用自定义卡。该值是一个包含自定义 dataset 的 JSON 对象。有关创建自定义卡的更多信息,请参阅其网站上的 Unitxt 文档。如果自定义卡使用的 dataset 需要环境变量或持久性卷中的 API 密钥,请在 pod 字段中配置必要的资源。
  • template :指定 Unitxt 目录中的 Unitxt 模板。使用模板 ID 作为值。
  • task (可选):指定 Unitxt 目录中的 Unitxt 任务。使用任务 ID 作为值。Unitxt 卡有一个预定义的任务。只有在您要运行其他任务时,才为这个值指定一个值。
  • metrics (可选):指定 Unitxt 目录中的 Unitxt 任务。使用指标 ID 作为值。Unitxt 任务包含一组预定义的指标。只有在需要不同的指标时,才指定一组指标。
  • 格式 (可选):指定 Unitxt 目录中的 Unitxt 格式。使用格式 ID 作为值。
  • loaderLimit (可选):指定从加载程序返回的每个流的最大实例数量。您可以使用此参数来减少大型数据集中的加载时间。
  • numDemos (可选):要使用的几个照片的数量。
  • demosPoolSize (可选): few-shot 池的大小。

numFewShot

设置上下文中要放入的几片示例的数量。如果您使用来自 Unitxt 的任务,请不要使用此字段。在 taskRecipes 下使用 numDemos

limit

设置限制以运行任务,而不是运行整个数据集。接受 0.0 到 1.0 之间的整数或浮点值。

genArgs

映射到 lm-evaluation-harness 的- gen_kwargs 参数。如需更多信息,请参阅 GitHub 上的 LM 评估 Harness 文档。

logSamples

如果传递此标志,则模型输出并将文本保存到模型中,按文档粒度保存。

batchSize

以整数格式指定评估的批处理大小。auto:N batch 大小不用于 API 模型,而是用于 API 的数字批处理大小。

pod

指定 lm-eval 作业 pod 的额外信息:

  • Container : 指定 lm-eval 容器的额外容器设置。

    • env :指定环境变量。此参数使用 Kubernetes 的 EnvVar 数据结构。
    • volumeMounts: 将卷挂载到 lm-eval 容器中。
    • resources :指定 lm-eval 容器的资源。
  • volumes :指定 lm-eval 和其他容器的卷信息。此参数使用 Kubernetes 的卷数据结构。
  • Sidecars :与 lm-eval 容器一起运行的容器列表。它使用 Kubernetes 的容器数据结构。

输出

此参数定义用于存储评估结果的自定义输出位置。仅支持持久性卷声明(PVC)。

outputs.pvcManaged

创建一个 Operator 管理的 PVC 来存储作业结果。PVC 被命名为 & lt;job-name>-pvc,并由 LMEvalJob 所有。在作业完成后,PVC 仍然可用,但会随 LMEvalJob 删除。支持以下字段:

  • 大小 : PVC 大小,与标准 PVC 语法兼容(如 5Gi)

outputs.pvcName

通过指定其名称来将现有 PVC 绑定到作业。PVC 必须单独创建,且必须在创建作业时已存在。

allowOnline

如果此参数设为 true,则 LMEval 作业下载工件(如模型、数据集或令牌程序)。如果设置为 false,则不会下载工件,并从本地存储中提取工件。默认禁用此设置。如果要启用 allowOnline 模式,您可以修补 TrustyAI operator ConfigMap

allowCodeExecution

如果此参数设为 true,则 LMEval 作业将执行必要的代码来准备模型或数据集。如果设置为 false,则不会执行下载的代码。

离线

将 PVC 挂载为模型和数据集的本地存储。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat