监控数据科学模型
监控 OpenShift AI 模型公平
摘要
第 1 章 模型监控概述 复制链接链接已复制到粘贴板!
为确保机器学习模型是透明、公平且可靠的,数据科学家可以在 OpenShift AI 中使用 TrustyAI 来监控其数据科学模型。
数据科学家可以在 OpenShift AI 中监控其数据科学模型,以了解以下指标:
- bias
- 检查数据和模型预测中的未公平模式或双向模式,以确保您的模型的决策没有意外处理。
- 数据偏移
- 通过将最新的实际数据与原始培训数据进行比较,检测随时间分布的变化。比较数据标识了可能会影响模型性能的转换或偏差,确保该模型保持准确且可靠。
第 2 章 配置 TrustyAI 复制链接链接已复制到粘贴板!
要为数据科学家在 OpenShift AI 中配置带有 TrustyAI 的模型监控,集群管理员需要执行以下任务:
- 为模型服务平台配置监控
- 在 Red Hat OpenShift AI Operator 中启用 TrustyAI 组件
- 如果要使用数据库而不是带有 TrustyAI 的存储的 PVC,将 TrustyAI 配置为使用数据库。
- 在包含数据科学家要监控的模型的每个数据科学项目上安装 TrustyAI 服务
2.1. 为您的模型服务平台配置监控 复制链接链接已复制到粘贴板!
OpenShift AI 提供以下模型服务平台:
为单个(KServe)或多模型(ModelMesh)服务平台配置监控的过程相同。
先决条件
- 具有集群管理员特权。
- 您已下载并安装 OpenShift 命令行界面 (CLI)。请参阅安装 OpenShift CLI。
- 您熟悉为监控用户定义的工作流 创建配置映射。您将在此流程中执行类似的步骤。
- 您熟悉 为 OpenShift 中的用户定义的项目启用监控。您将在此流程中执行类似的步骤。
-
您已将
monitoring-rules-view角色分配给将监控指标的用户。https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/monitoring/enabling-monitoring-for-user-defined-projects#granting-users-permission-to-monitor-user-defined-projects_enabling-monitoring-for-user-defined-projects
流程
在一个终端窗口中,如果您还没有以集群管理员登录到 OpenShift 集群,请登录 OpenShift CLI,如下例所示:
$ oc login <openshift_cluster_url> -u <admin_username> -p <password>在名为
uwm-cm-conf.yaml的 YAML 文件中定义ConfigMap对象,其内容如下:apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | prometheus: logLevel: debug retention: 15duser-workload-monitoring-config对象配置监控用户定义的项目的组件。观察到保留时间被设置为推荐的值 15 天。应用配置以创建
user-workload-monitoring-config对象。$ oc apply -f uwm-cm-conf.yaml在名为
uwm-cm-enable.yaml的 YAML 文件中定义另一个ConfigMap对象,其内容如下:apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: | enableUserWorkload: truecluster-monitoring-config对象为用户定义的项目启用监控。应用配置以创建
cluster-monitoring-config对象。$ oc apply -f uwm-cm-enable.yaml
2.2. 启用 TrustyAI 组件 复制链接链接已复制到粘贴板!
要允许您的数据科学家使用带有 TrustyAI 的模型监控,您必须在 OpenShift AI 中启用 TrustyAI 组件。
先决条件
- 具有集群管理员特权。
- 您可以访问数据科学集群。
- 已安装 Red Hat OpenShift AI。
流程
- 在 OpenShift 控制台中,点 Operators → Installed Operators。
- 搜索 Red Hat OpenShift AI Operator,然后点 Operator 名称以打开 Operator 详情页面。
- 点 Data Science Cluster 选项卡。
- 点默认实例名称(如 default-dsc)打开实例详情页面。
- 点 YAML 选项卡显示实例规格。
在
spec:components部分中,将trustyai组件的managementState字段设置为Managed:trustyai: managementState: Managed- 点击 Save。
验证
检查 trustyai-service-operator pod 的状态:
- 在 OpenShift 控制台中,从 Project 列表中选择 redhat-ods-applications。
- 点 Workloads → Deployments。
搜索 trustyai-service-operator-contoller-manager 部署。检查状态:
- 单击部署名称以打开部署详情页面。
- 点 Pods 选项卡。
查看 pod 状态。
当 trustyai-service-operator-controller-manager-manager- <pod-id > pod 的状态为 Running 时,pod 已就绪。
2.3. 使用数据库配置 TrustyAI 复制链接链接已复制到粘贴板!
如果您在 OpenShift 集群(如 MySQL 或 MariaDB)中有一个关系数据库,您可以将 TrustyAI 配置为使用数据库而不是持久性卷声明(PVC)。使用数据库而不是 PVC 来提高 TrustyAI 中的可扩展性、性能和数据管理。在部署前,为 TrustyAI 提供数据库配置 secret。您可以创建 secret,或指定项目中现有 Kubernetes secret 的名称。
先决条件
- 具有集群管理员特权。
- 您已下载并安装 OpenShift 命令行界面 (CLI)。请参阅安装 OpenShift CLI。
- 您已启用了 TrustyAI 组件,如 启用 TrustyAI 组件 中所述。
- 数据科学家已创建了数据科学项目,如创建 数据科学项目 中所述,其中包含数据科学家想要监控的模型。
- 如果您要使用外部 MySQL 数据库配置 TrustyAI 服务,您的数据库必须已存在于集群中,且至少使用 MySQL 版本 5.x。但是,红帽建议您使用 MySQL 版本 8.x。
- 如果您要使用 MariaDB 数据库配置 TrustyAI 服务,您的数据库必须已位于集群中,并使用 MariaDB 版本 10.3 或更高版本。但是,红帽建议您至少使用 MariaDB 版本 10.5。
传输安全层(TLS)协议不适用于 MariaDB operator 0.29 或更高版本。
流程
在一个终端窗口中,如果您还没有以集群管理员登录到 OpenShift 集群,请登录 OpenShift CLI,如下例所示:
$ oc login <openshift_cluster_url> -u <admin_username> -p <password>可选:如果要在 TrustyAI 和数据库之间使用 TLS 连接,请创建一个 TrustyAI 服务数据库 TLS secret,使用与数据库相同的证书。
创建包含 TLS secret 的 YAML 文件并添加以下代码:
apiVersion: v1 kind: Secret metadata: name: <service_name>-db-tls type: kubernetes.io/tls data: tls.crt: | <TLS CERTIFICATE> tls.key: | <TLS KEY>-
使用文件名 < service_name>-db-tls.yaml 保存文件。例如,如果您的服务名称是
trustyai-service,请将文件保存为 trustyai-service-db-tls.yaml。 应用 data Science 项目中的 YAML 文件,其中包含数据科学家要监控的型号:
$ oc apply -f <service_name>-db-tls.yaml -n <project_name>
创建具有数据库凭证的 secret (或指定现有 secret)。
创建包含您的 secret 的 YAML 文件并添加以下代码:
apiVersion: v1 kind: Secret metadata: name: db-credentials type: Opaque stringData: databaseKind: <mariadb>1 databaseUsername: <TrustyAI_username>2 databasePassword: <TrustyAI_password>3 databaseService: mariadb-service4 databasePort: 33065 databaseGeneration: update6 databaseName: trustyai_service7 - 1
- 目前唯一支持的
databaseKind值为mariadb。 - 2
- 与数据库交互时,您希望 TrustyAI 使用的用户名。
- 3
- TrustyAI 在连接到数据库时必须使用的密码。
- 4
- 当连接到数据库时,TrustyAI 必须使用的 Kubernetes (K8s)服务(默认的
mariadb)。 - 5
- TrustyAI 在连接到数据库时必须使用的端口(默认为 3306)。
- 6
- TrustyAI 使用的数据库架构生成策略。它是
quarkus.hibernate-orm.database.generation参数的设置,它决定了 TrustyAI 在初始连接上如何与数据库进行交互。设置为none,创建、drop-and-create、drop、update或validate。 - 7
- 用户名和密码验证的数据库服务中的单个数据库名称,以及 TrustyAI 应该读取和写入数据库服务器的特定数据库名称。
- 使用文件名 db-credentials.yaml 保存文件。安装或更改 TrustyAI 服务时,稍后您将需要此名称。
应用 data Science 项目中的 YAML 文件,其中包含数据科学家要监控的型号:
$ oc apply -f db-credentials.yaml -n <project_name>
如果您要在项目首次安装 TrustyAI,请继续为项目 安装 TrustyAI 服务。
如果您已在项目上安装了 TrustyAI,您可以使用 PVC 将现有 TrustyAI 服务迁移到使用数据库。
创建一个 YAML 文件来更新 TrustyAI 服务自定义资源(CR)并添加以下代码:
apiVersion: trustyai.opendatahub.io/v1alpha1 kind: TrustyAIService metadata: annotations: trustyai.opendatahub.io/db-migration: "true"1 name: trustyai-service2 spec: storage: format: "DATABASE"3 folder: "/inputs"4 size: "1Gi"5 databaseConfigurations: <database_secret_credentials>6 data: filename: "data.csv"7 metrics: schedule: "5s"8 - 保存该文件。例如,trustyai_crd.yaml。
将新的 TrustyAI 服务 CR 应用到包含数据科学家要监控的模型的数据科学项目:
$ oc apply -f trustyai_crd.yaml -n <project_name>
2.4. 为项目安装 TrustyAI 服务 复制链接链接已复制到粘贴板!
在数据科学项目上安装 TrustyAI 服务,以便为该项目内部署的所有模型提供其功能的访问权限。每个数据科学项目或命名空间都需要一个 TrustyAI 服务实例,其中包含数据科学家要监控的型号。
在项目中仅安装 TrustyAI 服务的一个实例。同一项目中的多个实例可能会导致意外行为。
将 TrustyAI 安装到部署非OVMS 模型的命名空间中,可能会导致 TrustyAI 服务出现错误。
2.4.1. 使用 CLI 安装 TrustyAI 服务 复制链接链接已复制到粘贴板!
您可以使用 OpenShift 命令行界面(CLI)安装 TrustyAI 服务的实例。
先决条件
- 具有集群管理员特权。
- 您已下载并安装 OpenShift 命令行界面 (CLI)。请参阅安装 OpenShift CLI。
- 您已为模型服务平台配置了监控,如 为多型号服务平台配置监控 中所述。
- 您已启用了 TrustyAI 组件,如 启用 TrustyAI 组件 中所述。
- 如果您将 TrustyAI 与数据库而不是 PVC 搭配使用,已将 TrustyAI 配置为使用数据库,如 使用数据库配置 TrustyAI 中所述。
- 数据科学家已创建了数据科学项目,如创建 数据科学项目 中所述,其中包含数据科学家想要监控的模型。
流程
- 打开一个新的终端窗口。
按照以下步骤,以集群管理员身份登录到 OpenShift 集群:
- 在 OpenShift Web 控制台中,单击您的用户名并选择 Copy login command。
- 登录后,单击 Display token。
使用此令牌命令复制登录,并将它粘贴到 OpenShift 命令行界面(CLI)中。
$ oc login --token=<token> --server=<openshift_cluster_url>
导航到包含数据科学家要监控的模型的数据科学项目。
oc project <project_name>例如:
oc project my-project创建
TrustyAIService自定义资源(CR)文件,如trustyai_crd.yaml:TrustyAI 使用数据库的 CR 文件示例
apiVersion: trustyai.opendatahub.io/v1alpha1 kind: TrustyAIService metadata: name: trustyai-service1 spec: storage: format: "DATABASE"2 size: "1Gi"3 databaseConfigurations: <database_secret_credentials>4 metrics: schedule: "5s"5 使用 PVC 的 TrustyAI 的 CR 文件示例
apiVersion: trustyai.opendatahub.io/v1alpha1 kind: TrustyAIService metadata: name: trustyai-service1 spec: storage: format: "PVC"2 folder: "/inputs"3 size: "1Gi"4 data: filename: "data.csv"5 format: "CSV"6 metrics: schedule: "5s"7 batchSize: 50008 将 TrustyAI 服务的 CR 添加到您的项目中:
oc apply -f trustyai_crd.yaml这个命令返回类似如下的输出:
trusty-service created
验证
验证您是否安装了 TrustyAI 服务:
oc get pods | grep trustyai
您应该看到类似如下的响应:
trustyai-service-5d45b5884f-96h5z 1/1 Running
第 3 章 为您的项目设置 TrustyAI 复制链接链接已复制到粘贴板!
要为数据科学项目设置带有 TrustyAI 的模型监控,数据科学家需要执行以下任务:
- 验证 TrustyAI 服务
- 将培训数据发送到 TrustyAI for bias 或数据偏移监控
- 标记您的数据字段(可选)
设置后,数据科学家可以为已部署的模型创建和查看 bias 和数据偏移指标。
3.1. 验证 TrustyAI 服务 复制链接链接已复制到粘贴板!
要访问 TrustyAI 服务端点,您必须提供 OAuth 代理(oauth-proxy)身份验证。您必须从具有足够特权的服务帐户获取用户令牌或令牌,然后在使用 curl 命令时将令牌传递给 TrustyAI 服务。
先决条件
-
已安装 OpenShift 命令行界面(
oc),如 安装 OpenShift CLI 中所述。 - 您的 OpenShift 集群管理员作为用户添加到 OpenShift 集群,并为包含部署模型的数据科学项目安装了 TrustyAI 服务。
流程
- 打开一个新的终端窗口。
按照以下步骤登录到 OpenShift 集群:
- 在 OpenShift Web 控制台右上角,单击您的用户名,然后选择 Copy login command。
- 登录后,单击 Display token。
使用此令牌命令复制登录,并将它粘贴到 OpenShift 命令行界面(CLI)中。
$ oc login --token=<token> --server=<openshift_cluster_url>
输入以下命令在 OpenShift 中设置用户令牌变量:
export TOKEN=$(oc whoami -t)
验证
输入以下命令检查用户令牌变量:
echo $TOKEN
后续步骤
在运行 curl 命令时,使用 Authorization 标头将令牌传递给 TrustyAI 服务。例如:
curl -H "Authorization: Bearer $TOKEN" $TRUSTY_ROUTE
3.2. 将培训数据发送到 TrustyAI 复制链接链接已复制到粘贴板!
要使用 TrustyAI 进行bias 监控或数据偏移检测,您必须将模型的培训数据发送到 TrustyAI。
先决条件
- 您的 OpenShift 集群管理员作为用户添加到 OpenShift 集群,并为包含部署模型的数据科学项目安装了 TrustyAI 服务。
- 您验证了 TrustyAI 服务,如 验证 TrustyAI 服务 中所述。
您部署的模型使用 TrustyAI 注册。
验证 TrustyAI 服务是否已注册了部署的模型,如下所示:
- 在 OpenShift Web 控制台中,导航到 Workloads → Pods。
- 从项目列表中选择包含部署模型的项目。
-
为您的服务平台选择 pod (如
modelmesh-serving-ovms-1.x-xxxxx)。 -
在 Environment 选项卡中,验证是否设置了
MM_PAYLOAD_PROCESSORS环境变量。
流程
将
TRUSTY_ROUTE变量设置为 TrustyAI 服务 pod 的外部路由。TRUSTY_ROUTE=https://$(oc get route/trustyai-service --template={{.spec.host}})- 获取已部署模型的 inference 端点,如 访问已部署模型的 inference 端点 中所述。
- 将数据发送到此端点。如需更多信息,请参阅 KServe v2 Inference 协议文档。
验证
按照以下步骤查看集群指标,并验证 TrustyAI 正在接收数据。
- 登录 OpenShift Web 控制台。
- 切换到 Developer 视角。
- 在左侧菜单中,点 Observe。
- 在 Metrics 页面中,单击 Select query 列表,然后选择 Custom query。
-
在 Expression 字段中,输入
trustyai_model_observations_total并按 Enter。应该列出您的模型并报告观察到的推测。 - 可选:从图形上面的列表中选择一个时间范围。例如,选择 5m。
3.3. 标记数据字段 复制链接链接已复制到粘贴板!
将模型培训数据发送到 TrustyAI 后,您可能需要对输入和输出应用一组名称映射,以便字段名称具有意义且更易于使用。
先决条件
- 您的 OpenShift 集群管理员作为用户添加到 OpenShift 集群,并为包含部署模型的数据科学项目安装了 TrustyAI 服务。
- 将培训数据发送到 TrustyAI,如 向 TrustyAI 发送培训数据 中所述。
流程
- 打开一个新的终端窗口。
按照以下步骤登录到 OpenShift 集群:
- 在 OpenShift Web 控制台右上角,单击您的用户名,然后选择 Copy login command。
- 登录后,单击 Display token。
使用此令牌命令复制登录,并将它粘贴到 OpenShift 命令行界面(CLI)中。
$ oc login --token=<token> --server=<openshift_cluster_url>
在 OpenShift CLI 中,获取到 TrustyAI 服务的路由:
TRUSTY_ROUTE=https://$(oc get route/trustyai-service --template={{.spec.host}})要检查 TrustyAI 的模型元数据,请查询
/info端点:curl -H "Authorization: Bearer $TOKEN" $TRUSTY_ROUTE/info | jq ".[0].data"这会输出一个 JSON 文件,其中包含每个模型的以下信息:
- 输入字段和输出字段的名称、数据类型和位置。
- 观察到的字段值。
- 观察到的 input-output 对总数。
使用
POST /info/names将名称映射应用到字段,如下例所示。将
model-name、origin-name和Prediction值改为模型中使用的值。将New name值更改为要使用的标签。curl -sk -H "Authorization: Bearer $TOKEN" -X POST --location $TRUSTY_ROUTE/info/names \ -H "Content-Type: application/json" \ -d "{ \"modelId\": \"model-name\", \"inputMapping\": { \"original-name-0\": \"New name 0\", \"original-name-1\": \"New name 1\", \"original-name-2\": \"New name 2\", \"original-name-3\": \"New name 3\", }, \"outputMapping\": { \"predict-0\": \"Prediction 0\" } }"
验证
此时会显示 "Feature and output name mapping successfully applied" 信息。
第 4 章 监控模型 bias 复制链接链接已复制到粘贴板!
作为数据科学家,您可能需要监控机器学习模型的bias。这意味着监控对于这种算法的监控,这些算法可能会降低模型生成的结果或决策。最重要的是,这种类型的监控可帮助您确保模型不会针对特定的受保护的组或功能进行计费。
Red Hat OpenShift AI 提供了一组指标,可帮助您监控 bias 的模型。您可以使用 OpenShift AI 接口来选择可用的指标,然后配置特定于模型的详细信息,如受保护的属性、特权和非特权组、您要监控的结果,以及 bias 的阈值。然后,您会看到一个计算的值的图表,以了解指定数量的模型推测。
有关特定 bias 指标的更多信息,请参阅支持的 bias 指标。
4.1. 创建一个 bias 指标 复制链接链接已复制到粘贴板!
要监控部署的模型 bias,您必须首先创建 bias 指标。当您创建 bias 指标时,您可以指定与模型相关的详细信息,如受保护的属性、特权和非特权组、模型结果和您要监控的值,以及 bias 可接受的阈值。
有关特定 bias 指标的详情,请参考 支持的 bias 指标。
有关 TrustyAI 指标的完整列表,请参阅 TrustyAI 服务 API。
您可以使用 OpenShift AI 仪表板或使用 OpenShift 命令行界面(CLI)为模型创建一个 bias 指标。
4.1.1. 使用仪表板创建一个 bias 指标 复制链接链接已复制到粘贴板!
您可以使用 OpenShift AI 仪表板为模型创建一个 bias 指标。
先决条件
- 熟悉 OpenShift AI 支持的 bias 指标 以及如何解释它们。
- 您熟悉特定的数据集模式,并了解输入和输出的名称和含义。
- 您的 OpenShift 集群管理员作为用户添加到 OpenShift 集群,并为包含部署模型的数据科学项目安装了 TrustyAI 服务。
- 为您的数据科学项目设置 TrustyAI,如 为项目设置 TrustyAI 中所述。
流程
可选: 要设置
TRUSTY_ROUTE变量,请按照以下步骤操作。在终端窗口中,登录部署了 OpenShift AI 的 OpenShift 集群。
oc login将
TRUSTY_ROUTE变量设置为 TrustyAI 服务 pod 的外部路由。TRUSTY_ROUTE=https://$(oc get route/trustyai-service --template={{.spec.host}})
- 在 OpenShift AI 仪表板的左侧菜单中,单击 Model Serving。
- 在 Deployed models 页面中,从下拉列表中选择您的项目。
- 点您要为其配置 bias 指标的模型名称。
- 在模型的指标页面上,单击 Model bias 选项卡。
- 单击 Configure。
在 Configure bias metrics 对话框中,完成以下步骤以配置 bias 指标:
- 在 Metric name 字段中,为您的 bias 指标输入唯一名称。请注意,以后您无法更改此指标的名称。
- 从 Metric type 列表中,选择 OpenShift AI 中提供的一个指标类型。
在 Protected 属性 字段中,在您要监控的模型中键入要监控的属性名称。
提示您可以使用
curl命令查询元数据端点,并查看输入属性名称和值。例如:curl -H "Authorization: Bearer $TOKEN" $TRUSTY_ROUTE/info | jq ".[0].data.inputSchema"- 在 Privileged value 字段中,为您指定的 protected 属性输入特权组的名称。
- 在 Unprivileged value 字段中,为您指定的 protected 属性输入非特权组的名称。
在 Output 字段中,键入您要监控的模型结果的名称。
提示您可以使用
curl命令查询元数据端点,并查看输出属性名称和值。例如:curl -H "Authorization: Bearer $TOKEN" $TRUSTY_ROUTE/info | jq ".[0].data.outputSchema"- 在 Output value 字段中,键入您要监控 bias 的结果值。
- 在 Violation threshold 字段中,输入您选择的指标类型的 bias 阈值。此阈值定义指定指标从指标公平值到多少,然后模型被视为计费。
- 在 Metric batch size 字段中,键入 OpenShift AI 包括每次计算指标时的模型 inferences 数。
确保您输入的值正确。
注意您不能在创建模型后编辑模型 bias 指标配置。相反,您可以复制指标,然后编辑(配置)它;但是,原始指标的历史记录不会应用到副本。
- 单击 Configure。
验证
- Bias 指标配置 页面显示您为模型配置的 bias 指标。
后续步骤
要查看指标,请在 Bias 指标配置 页面中,单击右上角的 View metrics。
4.1.2. 使用 CLI 创建 bias 指标 复制链接链接已复制到粘贴板!
您可以使用 OpenShift 命令行界面(CLI)为模型创建 bias 指标。
先决条件
- 熟悉 OpenShift AI 支持的 bias 指标 以及如何解释它们。
- 您熟悉特定的数据集模式,并了解输入和输出的名称和含义。
- 您的 OpenShift 集群管理员作为用户添加到 OpenShift 集群,并为包含部署模型的数据科学项目安装了 TrustyAI 服务。
- 为您的数据科学项目设置 TrustyAI,如 为项目设置 TrustyAI 中所述。
流程
在终端窗口中,登录部署了 OpenShift AI 的 OpenShift 集群。
oc login将
TRUSTY_ROUTE变量设置为 TrustyAI 服务 pod 的外部路由。TRUSTY_ROUTE=https://$(oc get route/trustyai-service --template={{.spec.host}})(可选)获取 TrustyAI 服务端点和有效负载的完整列表。
curl -H "Authorization: Bearer $TOKEN" --location $TRUSTY_ROUTE/q/openapi使用
POST /metrics/group/fairness/spd/request来调度重复的 bias 监控指标,语法和有效负载结构:语法 :
curl -sk -H "Authorization: Bearer $TOKEN" -X POST --location $TRUSTY_ROUTE/metrics/spd/request \ --header 'Content-Type: application/json' \ --data <payload>有效负载结构 :
modelId- 要查询的模型的名称。
protectedAttribute- 可区分您要检查的组的特性名称。
privilegedAttribute- 怀疑更倾向于(混合)课程。
unprivilegedAttribute- 怀疑无疑(假假)类。
outcomeName- 提供您要检查输出的输出名称。
favorableOutcome-
描述可替代或所需模型预测的 result
Name输出值。 batchSize- 计算中包含的前差异数量。
例如:
curl -sk -H "Authorization: Bearer $TOKEN" -X POST --location $TRUSTY_ROUTE/metrics/group/fairness/spd/ \
--header 'Content-Type: application/json' \
--data "{
\"modelId\": \"demo-loan-nn-onnx-alpha\",
\"protectedAttribute\": \"Is Male-Identifying?\",
\"privilegedAttribute\": 1.0,
\"unprivilegedAttribute\": 0.0,
\"outcomeName\": \"Will Default?\",
\"favorableOutcome\": 0,
\"batchSize\": 5000
}"
验证
bias 指标请求应返回类似如下的输出:
{
"timestamp":"2023-10-24T12:06:04.586+00:00",
"type":"metric",
"value":-0.0029676404469311524,
"namedValues":null,
"specificDefinition":"The SPD of -0.002968 indicates that the likelihood of Group:Is Male-Identifying?=1.0 receiving Outcome:Will Default?=0 was -0.296764 percentage points lower than that of Group:Is Male-Identifying?=0.0.",
"name":"SPD",
"id":"d2707d5b-cae9-41aa-bcd3-d950176cbbaf",
"thresholds":{"lowerBound":-0.1,"upperBound":0.1,"outsideBounds":false}
}
specificDefinition 字段可帮助您了解这些指标值的真实解释。在本例中,模型在 Male-Identifying? 字段中公平,正结果的速率仅与大约 -0.3% 有所不同。
4.1.3. 复制一个 bias 指标 复制链接链接已复制到粘贴板!
如果要编辑现有指标,您可以在 OpenShift AI 接口中复制(复制),然后编辑副本中的值。但请注意,原始指标的历史记录不会应用到副本。
先决条件
- 熟悉 OpenShift AI 支持的 bias 指标 以及如何解释它们。
- 您熟悉特定的数据集模式,并了解输入和输出的名称和含义。
- 存在一个您要复制的现有 bias 指标。
流程
- 在 OpenShift AI 仪表板的左侧菜单中,单击 Model Serving。
- 在 Deployed model 页面中,单击带有您要重复的 bias 指标的模型 名称。
- 在模型的指标页面上,单击 Model bias 选项卡。
- 单击 Configure。
- 在 Bias 指标配置 页面中,点您要复制的指标旁的操作菜单(rules),然后点 Duplicate。
在 Configure bias 指标 对话框中,按照以下步骤操作:
- 在 Metric name 字段中,为您的 bias 指标输入唯一名称。请注意,以后您无法更改此指标的名称。
- 根据需要更改字段的值。有关这些字段的描述,请参阅使用 仪表板创建双向指标。
- 确保您输入的值正确,然后单击 Configure。
验证
- Bias 指标配置 页面显示您为模型配置的 bias 指标。
后续步骤
要查看指标,请在 Bias 指标配置 页面中,单击右上角的 View metrics。
4.2. 删除一个 bias 指标 复制链接链接已复制到粘贴板!
您可以使用 OpenShift AI 仪表板或使用 OpenShift 命令行界面(CLI)删除模型的 bias 指标。
4.2.1. 使用仪表板删除 bias 指标 复制链接链接已复制到粘贴板!
您可以使用 OpenShift AI 仪表板删除模型的 bias 指标。
先决条件
- 您已登陆到 Red Hat OpenShift AI。
- 您要删除的现有 bias 指标。
流程
- 在 OpenShift AI 仪表板的左侧菜单中,单击 Model Serving。
- 在 Deployed model 页面中,单击带有您要删除的 bias 指标的模型 名称。
- 在模型的指标页面上,单击 Model bias 选项卡。
- 单击 Configure。
- 点您要删除的指标旁的操作菜单(WWN),然后点 Delete。
在 Delete bias 指标 对话框中,键入指标名称以确认删除。
注意您无法撤销删除 bias 指标。
- 单击 Delete bias 指标。
验证
- Bias 指标配置页面 不显示您删除的 bias 指标。
4.2.2. 使用 CLI 删除 bias 指标 复制链接链接已复制到粘贴板!
您可以使用 OpenShift 命令行界面(CLI)删除模型的 bias 指标。
先决条件
-
已安装 OpenShift CLI(
oc)。 - 您有一个用于身份验证的用户令牌,如 验证 TrustyAI 服务 中所述。
- 您要删除的现有 bias 指标。
流程
- 打开一个新的终端窗口。
按照以下步骤登录到 OpenShift 集群:
- 在 OpenShift Web 控制台右上角,单击您的用户名,然后选择 Copy login command。
- 登录后,单击 Display token。
使用此令牌命令复制登录,并将它粘贴到 OpenShift 命令行界面(CLI)中。
$ oc login --token=<token> --server=<openshift_cluster_url>
在 OpenShift CLI 中,获取到 TrustyAI 服务的路由:
TRUSTY_ROUTE=https://$(oc get route/trustyai-service --template={{.spec.host}})可选: 要列出指标的所有当前活跃请求,请使用
GET /metrics/{{metric}}/requests。例如,要列出所有当前调度的 SPD 指标,请输入:curl -H "Authorization: Bearer $TOKEN" -X GET --location "$TRUSTY_ROUTE/metrics/spd/requests"或者,要列出所有当前调度的指标请求,请使用
GET /metrics/all/requests。curl -H "Authorization: Bearer $TOKEN" -X GET --location "$TRUSTY_ROUTE/metrics/all/requests"要删除指标,请将 HTTP
DELETE请求发送到/metrics/$METRIC/request端点,以停止定期计算,包括要在有效负载中取消的定期任务 ID。例如:curl -H "Authorization: Bearer $TOKEN" -X DELETE --location "$TRUSTY_ROUTE/metrics/spd/request" \ -H "Content-Type: application/json" \ -d "{ \"requestId\": \"3281c891-e2a5-4eb3-b05d-7f3831acbb56\" }"
验证
使用 GET /metrics/{{metric}}/requests 列出指标的所有当前活动请求,并验证您删除的指标没有显示。例如:
curl -H "Authorization: Bearer $TOKEN" -X GET --location "$TRUSTY_ROUTE/metrics/spd/requests"
4.3. 查看模型的 bias 指标 复制链接链接已复制到粘贴板!
创建 bias 监控指标后,您可以使用 OpenShift AI 仪表板来查看和更新您配置的指标。
前提条件
- 已为您的模型配置了 bias 指标,如 创建 bias 指标 中所述。
流程
- 在 OpenShift AI 仪表板中,点 Model Serving。
- 在 Deployed model 页面中,点您要查看 bias 指标的模型 名称。
- 在模型的指标页面上,单击 Model bias 选项卡。
要更新页面中显示的指标,请按照以下步骤操作:
在 Metrics to display 部分中,使用 Select a metric 列表选择要显示在页面上的指标。
注意每次选择要在页面中显示的指标时,会出现一个额外的 Select a metric 列表。这可让您在页面中显示多个指标。
- 从右上角的 Time range 列表选择一个值。
从右上角的 Refresh interval 列表中,选择一个值。
指标页面显示您选择的指标。
可选: 要从页面中删除一个或多个指标,在 Metrics to display 部分,请执行以下操作之一:
- 要删除单个指标,请点击指标名称旁边的 cancel 图标(rhacm)。
- 要删除所有指标,请点击 Select a metric 列表中的 cancel 图标(swig)。
- 可选: 要返回为模型配置 bias 指标,请在指标页面中点击右上角的 Configure。
验证
- 指标页面显示您所做的指标选择。
4.4. 支持的 bias 指标 复制链接链接已复制到粘贴板!
Red Hat OpenShift AI 支持以下 bias 指标:
- 统计差异
统计 Parity Difference (SPD)是非特权和特权组之间有合理的结果预测的差异。SPD 的正式定义如下:
- swig = 1 是可取而代的结果。
- Dwagon 和 D5- 4 是非特权和特权组数据。
您可以按如下方式解释 SPD 值:
-
值
0表示模型在所选属性(如 race, gender)接近。 -
range
-0.1到0.1表示模型对于所选属性来说是合理的。相反,您可以将概率与其它因素(如示例大小)不同。 -
range
-0.1到0.1以外的值表示模型对于所选属性是 unfair。 - 负值表示模型对非特权组有 bias。
- 正值表示,模型对特权组具有 bias。
- 不同的影响率
不同的影响率 (DIR)是非特权组到特权组的可合理结果预测的比例。DIR 的正式定义如下:
- swig = 1 是可取而代的结果。
- Dwagon 和 D5- 4 是非特权和特权组数据。
识别 bias 的阈值取决于您的标准和特定的用例。
例如,如果您的标识 bias 的阈值由
0.8或大于1.2的 DIR 值表示,您可以解释 DIR 值,如下所示:-
值
1表示模型对于所选属性是平平的。 -
0.8到1.2之间的值表示模型对于所选属性来说是合理的。 -
值低于
0.8或以上1.2表示 bias。
第 5 章 监控数据偏移 复制链接链接已复制到粘贴板!
作为数据科学家,您可能需要监控部署的数据偏移模型。数据偏移指的是传入数据的分布或属性的变化,这些数据与最初接受模型的数据有很大不同。检测数据偏移有助于确保您的模型继续按预期执行,并且它们保持准确且可靠。
您可以使用来自 Red Hat OpenShift AI 的 TrustyAI 的数据偏移监控指标,以提供培训数据和推测数据之间的一致定量度量。
有关特定数据偏移指标的详情,请参考 支持的偏移指标。
5.1. 创建偏移指标 复制链接链接已复制到粘贴板!
要监控部署的数据偏移模型,您必须首先创建偏移指标。
有关特定数据偏移指标的详情,请参考 支持的偏移指标。
有关 TrustyAI 指标的完整列表,请参阅 TrustyAI 服务 API。
5.1.1. 使用 CLI 创建偏移指标 复制链接链接已复制到粘贴板!
您可以使用 OpenShift 命令行界面(CLI)为模型创建数据偏移指标。
先决条件
- 熟悉特定的数据集模式,并了解相关的输入和输出。
- 您的 OpenShift 集群管理员作为用户添加到 OpenShift 集群,并为包含部署模型的数据科学项目安装了 TrustyAI 服务。
- 为您的数据科学项目设置 TrustyAI,如 为项目设置 TrustyAI 中所述。
流程
- 打开一个新的终端窗口。
按照以下步骤登录到 OpenShift 集群:
- 在 OpenShift Web 控制台右上角,单击您的用户名,然后选择 Copy login command。
- 登录后,单击 Display token。
使用此令牌命令复制登录,并将它粘贴到 OpenShift 命令行界面(CLI)中。
$ oc login --token=<token> --server=<openshift_cluster_url>
将
TRUSTY_ROUTE变量设置为 TrustyAI 服务 pod 的外部路由。TRUSTY_ROUTE=https://$(oc get route/trustyai-service --template={{.spec.host}})(可选)获取 TrustyAI 服务端点和有效负载的完整列表。
curl -H "Authorization: Bearer $TOKEN" --location $TRUSTY_ROUTE/q/openapi使用
POST /metrics/drift/meanshift/request来调度带有以下语法和有效负载结构的重复偏移监控指标:语法 :
curl -k -H "Authorization: Bearer $TOKEN" -X POST --location $TRUSTY_ROUTE/metrics/drift/meanshift/request \ --header 'Content-Type: application/json' \ --data <payload>有效负载结构 :
modelId- 要监控的模型的名称。
referenceTag- 用作参考分发的数据。
例如:
curl -k -H "Authorization: Bearer $TOKEN" -X POST --location $TRUSTY_ROUTE/metrics/drift/meanshift/request \
--header 'Content-Type: application/json' \
--data "{
\"modelId\": \"gaussian-credit-model\",
\"referenceTag\": \"TRAINING\"
}"
5.2. 使用 CLI 删除偏移指标 复制链接链接已复制到粘贴板!
您可以使用 OpenShift 命令行界面(CLI)删除模型的偏移指标。
先决条件
-
已安装 OpenShift CLI(
oc)。 - 您有一个用于身份验证的用户令牌,如 验证 TrustyAI 服务 中所述。
- 您要删除的现有偏移指标。
流程
- 打开一个新的终端窗口。
按照以下步骤登录到 OpenShift 集群:
- 在 OpenShift Web 控制台中,单击您的用户名并选择 Copy login command。
- 登录后,单击 Display token。
使用此令牌命令复制登录,并将它粘贴到 OpenShift 命令行界面(CLI)中。
$ oc login --token=<token> --server=<openshift_cluster_url>
在 OpenShift CLI 中,获取到 TrustyAI 服务的路由:
TRUSTY_ROUTE=https://$(oc get route/trustyai-service --template={{.spec.host}})可选: 要列出指标的所有当前活跃请求,请使用
GET /metrics/{{metric}}/requests。例如,要列出所有当前调度的 MeanShift 指标,请输入:curl -k -H "Authorization: Bearer $TOKEN" -X GET --location "$TRUSTY_ROUTE/metrics/drift/meanshift/requests"或者,要列出所有当前调度的指标请求,请使用
GET /metrics/all/requests。curl -H "Authorization: Bearer $TOKEN" -X GET --location "$TRUSTY_ROUTE/metrics/all/requests"要删除指标,请将 HTTP
DELETE请求发送到/metrics/$METRIC/request端点,以停止定期计算,包括要在有效负载中取消的定期任务 ID。例如:curl -k -H "Authorization: Bearer $TOKEN" -X DELETE --location "$TRUSTY_ROUTE/metrics/drift/meanshift/request" \ -H "Content-Type: application/json" \ -d "{ \"requestId\": \"$id\" }"
验证
使用 GET /metrics/{{metric}}/requests 列出指标的所有当前活动请求,并验证您删除的指标没有显示。例如:
curl -H "Authorization: Bearer $TOKEN" -X GET --location "$TRUSTY_ROUTE/metrics/drift/meanshift/requests"
5.3. 查看模型的数据偏移指标 复制链接链接已复制到粘贴板!
创建数据偏移监控指标后,使用 OpenShift Web 控制台查看和更新您配置的指标。
先决条件
-
您已分配了
monitoring-rules-view角色。如需更多信息,请参阅 授予用户权限来为用户定义的项目配置监控。 - 您熟悉如何在 OpenShift Web 控制台中监控项目指标。如需更多信息,请参阅监控项目指标。
流程
- 登录 OpenShift Web 控制台。
- 切换到 Developer 视角。
- 在左侧菜单中,点 Observe。
-
如监控 项目指标 中所述,使用 Web 控制台运行对
trustyai的 metrics 的查询。
5.4. 支持的偏移指标 复制链接链接已复制到粘贴板!
Red Hat OpenShift AI 支持以下数据偏移指标:
- MeanShift
MeanShift 指标计算测试数据集中的数据值来自与培训数据集中相同的分布值(假设这些值通常分布式)。此指标测量两个数据集之间特定功能的方法的不同。
MeanShift 对于识别数据分发中的直接更改很有用,例如当整个发行版已转移到功能的左侧或右侧。
此指标返回"真实世界"数据所看到的发行版可能源自与引用数据相同的发行版。更接近的值是 0,很可能有显著的偏移量。
- FourierMMD
FourierMMD 指标提供了概率:测试数据集中的数据值已从培训数据集分发中偏离,假设计算的最大 Mean Discrepancy (MMD)值通常会被分发。此指标使用 Fourier 域中的 MMD 测量比较数据集的 empirical 发行版。
FourierMMD 有助于检测数据分布中的细微变化,这些变化可能被更简单的统计措施覆盖。
此指标返回可能性,"real world"数据所看到的分布已从引用数据中偏离。更接近的数值是 1,很可能存在显著的偏移量。
- KSTest
KSTest 指标计算每个列的两个 Kolmogorov-Smirnov 测试,以确定数据集是否从同一发行版衍生而来。此指标测量数据集的电子累积分发函数(CDF)之间的最大距离,而不假设任何特定的底层分布功能。
KSTest 有助于检测分布形式、位置和规模的变化。
此指标返回"真实世界"数据所看到的发行版可能源自与引用数据相同的发行版。更接近的值是 0,很可能有显著的偏移量。
- ApproxKSTest
ApproxKSTest 指标执行大约 Kolmogorov-Smirnov 测试,确保与确切的 KSTest 相比的最大错误为
6*epsilon。ApproxKSTest 有助于检测执行精确 KSTest 的大型数据集的更改。
此指标返回"真实世界"数据所看到的发行版可能源自与引用数据相同的发行版。更接近的值是 0,很可能有显著的偏移量。
第 6 章 评估大型语言模型 复制链接链接已复制到粘贴板!
大型语言模型(LLM)是一种人工智能(AI)程序,专为自然语言处理任务而设计,如识别和生成文本。
作为数据科学家,您可能需要针对一系列指标监控大型语言模型,以确保其输出的准确性和质量。可以评估 summarization、language toxicity 和 questions-answering 准确性等功能,以通知和改进您的模型参数。
Red Hat OpenShift AI 现在在称为 LM-Eval 的功能中提供语言模型评估即服务(LM-Eval-aaS)。LM-Eval 提供了一个统一的框架,可在大量不同的评估任务中测试通用语言模型。
以下小节介绍了如何创建一个 LMEvalJob 自定义资源(CR),它允许您激活评估作业并生成对模型功能进行分析。
6.1. 设置 LM-Eval 复制链接链接已复制到粘贴板!
LM-Eval 是一个用于评估已集成到 TrustyAI Operator 的大型语言模型的服务。
该服务基于两个开源项目构建:
- LM 评估 Harness 由 EleutherAI 开发,它为评估语言模型提供了全面的框架
- Unitxt,一种通过额外功能增强评估过程的工具
以下信息解释了如何创建 LMEvalJob 自定义资源(CR)来启动评估作业并获取结果。
LM-Eval 的全局设置
LM-Eval 服务的可配置全局设置存储在 TrustyAI operator global ConfigMap 中,名为 trustyai-service-operator-config。全局设置位于与 Operator 相同的命名空间中。
您可以为 LM-Eval 配置以下属性:
| 属性 | 默认 | 描述 |
|---|---|---|
|
|
|
检测是否有 GPU 可用,并为 LM 评估 |
|
|
| LM-Eval 作业的镜像。该镜像包含 LM 评估 Harness 和 Unitxt 的 Python 软件包。 |
|
|
|
LM-Eval 驱动程序的镜像。有关驱动程序的详情,请查看 |
|
|
| 运行评估作业时的 image-pulling 策略。 |
|
| 8 | 调用模型 inference API 时的默认批处理大小。默认批处理大小仅适用于本地模型。 |
|
| 24 | 用户可以在评估作业中指定的最大批处理大小。 |
|
| 10s | 检查作业 pod 是否有评估作业的时间间隔。 |
|
| true |
LMEval 作业是否可以将在线模式设置为 |
|
| true |
决定 LMEval 作业是否可以在 |
在更新 ConfigMap 中的设置后,重启 Operator 以应用新值。
在 Red Hat OpenShift AI 的 operator 级别中默认禁用 allowOnline 设置,因为使用 allowOnline 可让作业从外部源自动下载工件。
启用 allowOnline 模式
要启用 allowOnline 模式,使用以下代码修补 TrustyAI operator ConfigMap :
kubectl patch configmap trustyai-service-operator-config -n redhat-ods-applications \
--type merge -p '{"data":{"lmes-allow-online":"true","lmes-allow-code-execution":"true"}}'
然后,使用以下方法重启 TrustyAI operator:
kubectl rollout restart deployment trustyai-service-operator-controller-manager -n redhat-ods-applications
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)评估框架。有关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 字段。
LMEvalJob 属性
下表列出了 LMEvalJob 及其用法中的每个属性:
| 参数 | 描述 |
|---|---|
|
|
指定评估哪个模型类型或供应商。此字段直接映射到
|
|
| 模型类型的对名称和值参数的列表。每种模型类型或供应商都支持不同的参数。您可以在 GitHub 上 LM 评估 Harness 库的 models 部分找到更多详细信息。
|
|
|
指定 |
|
| 使用 Unitxt method 格式指定任务:
|
|
|
设置上下文中要放入的几片示例的数量。如果您使用来自 Unitxt 的任务,请不要使用此字段。在 |
|
| 设置限制以运行任务,而不是运行整个数据集。接受 0.0 到 1.0 之间的整数或浮点值。 |
|
|
映射到 |
|
| 如果传递此标志,则模型输出并将文本保存到模型中,按文档粒度保存。 |
|
|
以整数格式指定评估的批处理大小。 |
|
|
指定
|
|
| 此参数定义用于存储评估结果的自定义输出位置。仅支持持久性卷声明(PVC)。 |
|
|
创建一个 Operator 管理的 PVC 来存储作业结果。PVC 被命名为 &
|
|
| 通过指定其名称来将现有 PVC 绑定到作业。PVC 必须单独创建,且必须在创建作业时已存在。 |
|
|
如果此参数设为 |
|
|
如果此参数设为 |
|
| 将 PVC 挂载为模型和数据集的本地存储。 |
6.3. LM-Eval 场景 复制链接链接已复制到粘贴板!
以下过程概述了对 ML-Eval 设置非常有用的示例场景。
6.3.1. 配置 LM-Eval 环境 复制链接链接已复制到粘贴板!
如果 LMEvalJob 需要通过访问令牌访问 HuggingFace 上的模型,您可以将 HF_TOKEN 设置为 lm-eval 容器之一。
先决条件
- 已登陆到 Red Hat OpenShift AI。
- 您的 OpenShift 集群管理员已安装了 OpenShift AI,并为部署模型的数据科学项目启用了 TrustyAI 服务。
流程
要为
huggingface模型启动评估作业,请应用以下 YAML 文件:apiVersion: trustyai.opendatahub.io/v1alpha1 kind: LMEvalJob metadata: name: evaljob-sample spec: model: hf modelArgs: - name: pretrained value: huggingfacespace/model taskList: taskNames: - unfair_tos/ logSamples: true pod: container: env: - name: HF_TOKEN value: "My HuggingFace token"(可选)您还可以创建一个 secret 来存储令牌,然后使用以下引用语法从
secretKeyRef对象中引用密钥:env: - name: HF_TOKEN valueFrom: secretKeyRef: name: my-secret key: hf-token
6.3.2. 使用自定义 Unitxt 卡 复制链接链接已复制到粘贴板!
您可以使用自定义 Unitxt 卡运行评估。要做到这一点,请在 LMEvalJob YAML 中以 JSON 格式包括自定义 Unitxt 卡。
先决条件
- 已登陆到 Red Hat OpenShift AI。
- 您的 OpenShift 集群管理员已安装了 OpenShift AI,并为部署模型的数据科学项目启用了 TrustyAI 服务。
流程
以 JSON 格式传递自定义 Unitxt 卡:
apiVersion: trustyai.opendatahub.io/v1alpha1 kind: LMEvalJob metadata: name: evaljob-sample spec: model: hf modelArgs: - name: pretrained value: google/flan-t5-base taskList: taskRecipes: - template: "templates.classification.multi_class.relation.default" card: custom: | { "__type__": "task_card", "loader": { "__type__": "load_hf", "path": "glue", "name": "wnli" }, "preprocess_steps": [ { "__type__": "split_random_mix", "mix": { "train": "train[95%]", "validation": "train[5%]", "test": "validation" } }, { "__type__": "rename", "field": "sentence1", "to_field": "text_a" }, { "__type__": "rename", "field": "sentence2", "to_field": "text_b" }, { "__type__": "map_instance_values", "mappers": { "label": { "0": "entailment", "1": "not entailment" } } }, { "__type__": "set", "fields": { "classes": [ "entailment", "not entailment" ] } }, { "__type__": "set", "fields": { "type_of_relation": "entailment" } }, { "__type__": "set", "fields": { "text_a_type": "premise" } }, { "__type__": "set", "fields": { "text_b_type": "hypothesis" } } ], "task": "tasks.classification.multi_class.relation", "templates": "templates.classification.multi_class.relation.all" } logSamples: true在自定义卡中,指定 Hugging Face dataset 加载程序:
"loader": { "__type__": "load_hf", "path": "glue", "name": "wnli" },-
(可选)您可以使用其他 Unitxt 加载程序(可在 Unitxt 网站中找到),其中包含
卷和volumeMounts参数从持久性卷挂载数据集。例如,如果使用LoadCSVUnitxt 命令,请将文件挂载到容器,并使 dataset 可供评估过程访问。
6.3.3. 使用 PVC 作为存储 复制链接链接已复制到粘贴板!
要将 PVC 用作 LMEvalJob 结果的存储,您可以使用受管 PVC 或现有的 PVC。管理的 PVC 由 TrustyAI operator 管理。现有 PVC 由最终用户创建,然后再创建 LMEvalJob。
如果在输出中同时引用受管和现有的 PVC,则 TrustyAI operator 默认为受管 PVC。
先决条件
- 已登陆到 Red Hat OpenShift AI。
- 您的 OpenShift 集群管理员已安装了 OpenShift AI,并为部署模型的数据科学项目启用了 TrustyAI 服务。
6.3.3.1. 管理的 PVC 复制链接链接已复制到粘贴板!
要创建受管 PVC,请指定其大小。受管 PVC 名为 < ;job-name>-pvc,在作业完成后可用。删除 LMEvalJob 时,受管 PVC 也会被删除。
流程
输入以下代码:
apiVersion: trustyai.opendatahub.io/v1alpha1 kind: LMEvalJob metadata: name: evaljob-sample spec: # other fields omitted ... outputs: pvcManaged: size: 5Gi
代码备注
-
输出是指定自定义存储位置的部分 -
pvcManaged将创建一个 Operator 管理的 PVC -
大小(与标准 PVC 语法兼容)是唯一支持的值
6.3.3.2. 现有 PVC 复制链接链接已复制到粘贴板!
要使用现有的 PVC,将其名称作为引用传递。创建 LMEvalJob 时 PVC 必须存在。PVC 不是由 TrustyAI 操作器管理,因此在删除 LMEvalJob 后可用。
流程
创建 PVC。例如:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: "my-pvc" spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi引用
LMEvalJob中的新 PVC。apiVersion: trustyai.opendatahub.io/v1alpha1 kind: LMEvalJob metadata: name: evaljob-sample spec: # other fields omitted ... outputs: pvcName: "my-pvc"
6.3.4. 使用 InferenceService 复制链接链接已复制到粘贴板!
要在命名空间中已部署并运行的 InferenceService 上运行评估作业,请定义您的 LMEvalJob CR,然后将此 CR 应用到与模型相同的命名空间中。
先决条件
- 已登陆到 Red Hat OpenShift AI。
- 您的 OpenShift 集群管理员已安装了 OpenShift AI,并为部署模型的数据科学项目启用了 TrustyAI 服务。
- 您有一个包含带有 vLLM 模型的 InferenceService 的命名空间。本例假定 vLLM 模型已在集群中部署。
流程
定义
LMEvalJobCR:apiVersion: trustyai.opendatahub.io/v1alpha1 kind: LMEvalJob metadata: name: evaljob spec: model: local-completions taskList: taskNames: - mmlu logSamples: true batchSize: 1 modelArgs: - name: model value: granite - name: base_url value: $ROUTE_TO_MODEL/v1/completions - name: num_concurrent value: "1" - name: max_retries value: "3" - name: tokenized_requests value: "False" - name: tokenizer value: ibm-granite/granite-7b-instruct env: - name: OPENAI_TOKEN valueFrom: secretKeyRef: name: <secret-name> key: token- 将此 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-
secretKeyRef.key设置为token