6.3. LM-Eval 评估作业
LM-Eval 服务定义一个名为 LMEvalJob 的新自定义资源定义(CRD)。LMEvalJob 对象代表评估作业。LMEvalJob 对象由 TrustyAI Kubernetes operator 监控。
要运行评估作业,请使用以下信息创建一个 LMEvalJob 对象: model, model parameters, task, 和 secret。
有关 TrustyAI-supported 任务列表,请参阅 LMEval 任务支持。
创建 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)评估框架。有关wnliUnitxt 卡的更多信息,请参阅 Unitxt 网站。 -
以下
multi_class.relationUnitxt 任务的默认参数:f1_micro、f1_macro和accuracy。此模板可以在 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
应用示例 LMEvalJob 后,使用以下命令检查其状态:
oc get lmevaljob evaljob-sample
显示类似于如下的输出: 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'
该命令返回类似以下示例的结果:
{
"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"
}
}
有关结果的备注
-
f1_micro、f1_macro和准确性分数为 0.56、0.36 和 0.56。 -
完整结果存储在
LMEvalJob对象的.status.results中,作为 JSON 文档。 - 以上命令仅检索 JSON 文档的 results 字段。