6.6. LM-Eval 场景
以下流程概述了对 LM-Eval 设置非常有用的示例场景。
6.6.1. 使用环境变量令牌访问 Hugging Face 模型 复制链接链接已复制到粘贴板!
如果 LMEvalJob 需要通过访问令牌访问 HuggingFace 上的模型,您可以将 HF_TOKEN 设置为 lm-eval 容器之一。
先决条件
- 您已登陆到 Red Hat OpenShift AI。
- 集群管理员已安装了 OpenShift AI,并为部署模型的数据科学项目启用了 TrustyAI 服务。
流程
要为
huggingface模型启动评估作业,请通过 CLI 将以下 YAML 文件应用到您的数据科学项目:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc apply -f <yaml_file> -n <project_name>
$ oc apply -f <yaml_file> -n <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)您还可以创建一个 secret 来存储令牌,然后使用以下引用语法从
secretKeyRef对象中引用密钥:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.6.2. 使用自定义 Unitxt 卡 复制链接链接已复制到粘贴板!
您可以使用自定义 Unitxt 卡运行评估。要做到这一点,请在 LMEvalJob YAML 中以 JSON 格式包括自定义 Unitxt 卡。
先决条件
- 您已登陆到 Red Hat OpenShift AI。
- 集群管理员已安装了 OpenShift AI,并为部署模型的数据科学项目启用了 TrustyAI 服务。
流程
以 JSON 格式传递自定义 Unitxt 卡:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在自定义卡中,指定 Hugging Face dataset 加载程序:
"loader": { "__type__": "load_hf", "path": "glue", "name": "wnli" },"loader": { "__type__": "load_hf", "path": "glue", "name": "wnli" },Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
(可选)您可以使用其他 Unitxt 加载程序(可在 Unitxt 网站中找到),其中包含
卷和volumeMounts参数从持久性卷挂载数据集。例如,如果使用LoadCSVUnitxt 命令,请将文件挂载到容器,并使 dataset 可供评估过程访问。
6.6.3. 使用 PVC 作为存储 复制链接链接已复制到粘贴板!
要将 PVC 用作 LMEvalJob 结果的存储,您可以使用受管 PVC 或现有的 PVC。管理的 PVC 由 TrustyAI operator 管理。现有 PVC 由最终用户创建,然后再创建 LMEvalJob。
如果在输出中同时引用受管和现有的 PVC,则 TrustyAI operator 默认为受管 PVC。
先决条件
- 您已登陆到 Red Hat OpenShift AI。
- 集群管理员已安装了 OpenShift AI,并为部署模型的数据科学项目启用了 TrustyAI 服务。
6.6.3.1. 管理的 PVC 复制链接链接已复制到粘贴板!
要创建受管 PVC,请指定其大小。受管 PVC 名为 < ;job-name>-pvc,在作业完成后可用。删除 LMEvalJob 时,受管 PVC 也会被删除。
流程
输入以下代码:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
代码备注
-
输出是指定自定义存储位置的部分 -
pvcManaged将创建一个 Operator 管理的 PVC -
大小(与标准 PVC 语法兼容)是唯一支持的值
6.6.3.2. 现有 PVC 复制链接链接已复制到粘贴板!
要使用现有的 PVC,将其名称作为引用传递。创建 LMEvalJob 时 PVC 必须存在。PVC 不是由 TrustyAI 操作器管理,因此在删除 LMEvalJob 后可用。
流程
创建 PVC。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 引用
LMEvalJob中的新 PVC。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.6.4. 使用 KServe Inference 服务 复制链接链接已复制到粘贴板!
要在命名空间中已部署并运行的 InferenceService 上运行评估作业,请定义您的 LMEvalJob CR,然后将此 CR 应用到与模型相同的命名空间中。
注意
以下示例只适用于 Hugging Face 或 vLLM 的模型运行时。
先决条件
- 您已登陆到 Red Hat OpenShift AI。
- 集群管理员已安装了 OpenShift AI,并为部署模型的数据科学项目启用了 TrustyAI 服务。
- 您有一个包含带有 vLLM 模型的 InferenceService 的命名空间。本例假定集群中已部署了 vLLM 模型。
- 您的集群配置了域名系统(DNS)。
流程
定义
LMEvalJobCR:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将此 CR 应用到与您的模型相同的命名空间中。
验证
在名为 evaljob 的模型命名空间中启动 pod。在 pod 终端中,您可以通过 tail -f output/stderr.log 来查看输出。
代码备注
-
BASE_URL 应设置为模型的路由/服务 URL。确保在 URL 中包含/v1/completions端点。 -
env.valueFrom.secretKeyRef.name应该指向包含可向模型进行身份验证的令牌的机密。secretRef.name应该是命名空间中的 secret 名称,而secretRef.key应该指向 secret 中的令牌密钥。 secretKeyRef.name可以等于以下的输出:oc get secrets -o custom-columns=SECRET:.metadata.name --no-headers | grep user-one-token
oc get secrets -o custom-columns=SECRET:.metadata.name --no-headers | grep user-one-tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
secretKeyRef.key设置为token
6.6.5. 设置 LM-Eval S3 支持 复制链接链接已复制到粘贴板!
了解如何为您的 LM-Eval 服务设置 S3 支持。
先决条件
- 您已登陆到 Red Hat OpenShift AI。
- 集群管理员已安装了 OpenShift AI,并为部署模型的数据科学项目启用了 TrustyAI 服务。
- 您有一个包含 S3 兼容存储服务和存储桶的命名空间。
-
您已创建了
LMEvalJob,它引用包含模型和数据集的 S3 存储桶。 - 您有一个 S3 存储桶,其中包含模型文件和要评估的数据集。
流程
创建包含 S3 连接详情的 Kubernetes Secret:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意所有值都必须采用
base64编码。例如:echo -n "my-bucket" | base64部署引用包含模型和数据集的 S3 存储桶的
LMEvalJobCR:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要The `LMEvalJob` will copy all the files from the specified bucket/path. If your bucket contains many files and you only want to use a subset, set the `path` field to the specific sub-folder containing the files that you require. For example use `path: "my-models/"`.
The `LMEvalJob` will copy all the files from the specified bucket/path. If your bucket contains many files and you only want to use a subset, set the `path` field to the specific sub-folder containing the files that you require. For example use `path: "my-models/"`.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 SSL 设置安全连接。
使用您的 CA 证书创建 ConfigMap 对象:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
LMEvalJob以使用 SSL 验证:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
-
部署
LMEvalJob后,打开kubectl命令行,再输入以下命令来检查其状态:kubectl logs -n test job/evaljob-sample -n test -
使用
kubectl命令kubectl logs -n test job/<job-name> 查看日志,以确保它正常工作。 - 评估完成后会在日志中显示结果。
6.6.6. 使用带有 LM-Eval 的 LLM-as-a-Judge 指标 复制链接链接已复制到粘贴板!
您可以使用大型语言模型(LLM)评估来自另一个 LLM 的输出质量,称为 LLM-as-a-Judge (LLMaaJ)。
您可以使用 LLMaaJ 进行:
- 评估没有清晰的正确答案,如创造性编写。
- 判断质量特征,例如有帮助性、安全和深度等。
-
增强用于评估模型性能的传统定量措施(如
ROUGE指标)。 - 测试模型输出的特定质量方面。
按照下面的自定义质量评估示例,了解更多有关在 LM-Eval 中使用您自己的指标标准的信息,以评估模型响应。
本例使用 Unitxt 定义自定义指标,并查看模型(flan-t5-small)如何回答来自 MT-Bench (标准基准)的问题。Mistral-7B 模型中的自定义评估标准和说明用于根据帮助性、准确性和详情对来自 1-10 的回答进行评级。
先决条件
- 您已登陆到 Red Hat OpenShift AI。
- 您已下载并安装 OpenShift 命令行界面 (CLI)。请参阅安装 OpenShift CLI。
- 集群管理员已安装了 OpenShift AI,并为部署模型的数据科学项目启用了 TrustyAI 服务。
- 您熟悉如何使用 Unitxt。
您已设置以下参数:
Expand 表 6.8. 参数 参数 描述 自定义模板
告诉 judge 以标准格式根据特定标准分配 1 到 10 之间的分数。
processors.extract_mt_bench_rating_judgment从 judge 的响应中拉取数字评级。
formats.models.mistral.instruction格式化提示 Mistral 模型。
自定义 LLM-as-judge 指标
使用带有自定义指令的 Mistral-7B。
流程
在一个终端窗口中,如果您还没有以集群管理员登录到 OpenShift 集群,请登录 OpenShift CLI,如下例所示:
oc login <openshift_cluster_url> -u <admin_username> -p <password>
$ oc login <openshift_cluster_url> -u <admin_username> -p <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过将以下指令应用到
redhat-ods-applications命名空间,更新 TrustyAI 配置以允许在线模型访问和代码执行。oc patch configmap trustyai-service-operator-config -n redhat-ods-applications \ --type merge -p '{"metadata": {"annotations": {"opendatahub.io/managed": "false"}}}' oc patch configmap trustyai-service-operator-config -n redhat-ods-applications \ --type merge -p '{"data":{"lmes-allow-online":"true","lmes-allow-code-execution":"true"}}'oc patch configmap trustyai-service-operator-config -n redhat-ods-applications \ --type merge -p '{"metadata": {"annotations": {"opendatahub.io/managed": "false"}}}' oc patch configmap trustyai-service-operator-config -n redhat-ods-applications \ --type merge -p '{"data":{"lmes-allow-online":"true","lmes-allow-code-execution":"true"}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
oc apply -f -命令应用以下清单。YAML 内容定义了自定义评估作业(LMEvalJob)、命名空间和您要评估模型的位置。YAML 包含以下说明:- 要评估的模型。
- 要使用的数据。
- 如何格式化输入和输出。
- 要使用哪个 judge 模型。
如何提取和记录结果。
注意您还可以使用文本编辑器将 YAML 清单放入文件中,然后使用
oc apply -f file.yaml命令应用它。
验证
处理器从 judge 的自然语言响应中提取数字评级。最终的结果可作为 LMEval 作业自定义资源(CR)的一部分提供。