Watson OpenScale故障排除

您可以使用以下技术来解决IBM Watson OpenScale 的问题。

我的模型评估失败

当您提供模型评估的最小有效内容记录数时,评估不会成功运行,并且无法生成预期度量值。 仪表板上的 " 评估 " 窗口显示上次成功评估的度量值或显示错误消息。

评估的性能可能受到有效内容日志记录数据处理期间发生的等待时间的影响。

要解决此问题,您可以通过完成下列其中一个步骤来发送批量评分请求,从而降低评分请求的速率:

如果使用 IBM Watson Machine Learning Python SDK,那么可以将多个请求值附加到 values 数组,如以下示例中所示:

scoring_payload = {wml_client.deployments.ScoringMetaNames.INPUT_DATA:
       [{'fields':
           ['GENDER','AGE','MARITAL_STATUS','PROFESSION'],
           'values': [
               ['M',24,'Single','Student'],
               ['F',21,'Single','Retail'],
               ...
               ['M',40,'Married','Retail']
               ]
        }
      ]}
predictions = client.deployments.score(deployment_id, scoring_payload)

如果使用 Watson OpenScale Python SDK,那么可以将多个请求值附加到 request 参数中的 values 数组。 然后,将相应的多重响应值附加到 response 自变量中的 values 数组,如以下示例中所示:

store_record_info = client.data_sets.store_records(
      request_body=[PayloadRecord(
           scoring_id='42e62c3ae2244f0d851009dec4754d74',
           request={
              'fields': ['GENDER','AGE','MARITAL_STATUS','PROFESSION'],
              'values': [
                  ['M',24,'Single','Student'],
                  ['F',21,'Single','Retail'],
                  ...
                  ['M',40,'Married','Retail']
                  ]
              },
           response={
              'fields': ['probability', 'prediction'],
              'values': [
                  [[0.9800331274776278, 0.01996687252237212], True],
                  [[0.7256561304103799, 0.2743438695896201], False],
                  ...
                  [[0.9998955605441558, 0.00010443945584419821], False]
                  ]
              },
           response_time=4600
       )],
      data_set_id='997b1474-00d2-4g05-ac02-287ebfc603b5',
  )

通过发送批量评分请求,可以通过一次发送 10 秒的评分请求 (例如,而不是每秒发送一个小请求) 来降低评分请求的速度。

评估完成后,我无法查看监视度量值

评估成功运行后,公平性,质量和漂移监视指标不会显示在仪表板上。

由于与评估相关的事件可能卡在内部排队服务中,因此可能不会显示度量值。

要解决此问题,您可以通过完成以下步骤来重新启动数据集市服务 pod:

  1. 通过运行以下命令来检查数据集市服务 pod:

    oc get pod -l release=<your openscale release name>,component=aios-datamart
    

    使用 component=aios-datamartrelease=<your openscale release name> 标签指定 pod。 如果在安装期间未指定定制发行版名称,那么发行版名称通常指定为 aiopenscalewos-cr

  2. 通过运行以下命令来重新启动 pod:

    oc delete pod -l release=<your openscale release name>,component=aios-datamart
    
  3. 通过运行 oc get pod -l release=,component=aios-datamart 命令来查看 pod 的当前状态,如以下示例中所示:

    NAME                                           READY   STATUS    RESTARTS   AGE
    aiopenscale-ibm-aios-datamart-858c4ccd-4dcvb   1/1     Running   0          14h
    

为什么我的 Spark 工作失败?

您正在运行模型评估,但 Spark 作业失败。

Spark 作业可能失败,因为 Spark 实例的资源配额不足以运行 Spark 作业。

如果出现此问题,您可以增加 Spark 实例的资源配额。 要增加资源配额,请完成以下步骤:

  1. 首先,通过转至 Cloud Pak for Data 集群上的 Spark 实例详细信息页面来获取 Spark 实例 URL。

    • 如果您正在使用 Spark 4.0 实例,那么 https://<CLUSTER_HOST>/v2/spark/v3/instances/<INSTANCE_ID> 是 Spark 实例 URL ,在 CLUSTER_HOSTINSTANCE_ID 中替代集群和实例。
    • 如果不使用 Spark 4.0 实例,那么 https://<CLUSTER_HOST>/ae/spark/v2/<INSTANCE_ID> 是 Spark 实例 URL ,在 CLUSTER_HOSTINSTANCE_ID 中替代集群和实例。
  2. 生成 API 密钥以向 Cloud Pak for Data API 进行认证。 有关更多信息,请参阅 生成 API 授权令牌

  3. 通过运行以下命令获取现有资源配额:

    curl -iX GET -ivk -H "Content-Type: application/json" -H "Authorization: Bearer ${TOKEN}" <INSTANCE_URL>
    
  4. 更新资源配额。

    如果您正在使用 Spark 4.0 实例,请通过运行以下命令来更新资源配额:

  curl -i -X PUT \
        -H "Accept:application/json" \
        -H "Authorization: Bearer ${TOKEN}" \
        -H "Content-Type:application/json" \
        -d \
   '{
          "max_cores": 40,
          "max_memory": 80
   } \
       <INSTANCE_URL>/resource_consumption_limits

如果您未使用 Spark 4.0 实例,请通过运行以下命令来更新资源配额:

curl -i -X PUT \
         -H "Accept:application/json" \
         -H "Authorization: ZenApiKey ${TOKEN}" \
         -H "Content-Type:application/json" \
         -d \
   '{
            "cpu_quota": 40,
            "memory_quota": "80g"
   } \
         <INSTANCE_URL>/resource_quota

无法运行 Db2 公共配置笔记本

运行 Db2 配置笔记本时,一个或多个单元由于以下异常错误而失败:

Caused by: javax.net.ssl.SSLHandshakeException: The server selected protocol version TLS11 is not accepted by client preferences [TLS12]

发生此错误的原因是客户机 Spark 作业正在尝试使用服务器不支持的传输层安全性 (TLS) 协议与服务器 Db2进行通信。

要解决此问题,请更新数据库上的 SSL_VERSIONS 设置。 发生此错误时,客户机通常使用 TLS 版本 1.2 ,并且服务器仅支持 TLS 版本 1.1。 在这种情况下,您可以使用以下命令来更新 Db2 配置。 在此示例中, TLSV12 引用 TLS 版本 1.2:

db2 update dbm cfg using SSL_VERSIONS TLSV12

运行此命令的用户必须具有管理访问权,这通常是 db2inst1。 在停止所有使用 Db2 服务器的应用程序后运行该命令。 要解决此问题,您可以按顺序调用以下命令:

  1. db2stop force
  2. db2 update dbm cfg using SSL_VERSIONS TLSV12
  3. db2start

当我使用 AutoAI 时,为什么会出现关于数据不匹配的错误?

使用 AutoAI 进行二元分类时,您会收到有关数据不匹配的错误消息。 请注意,AutoAI仅在Watson OpenScale for IBM Cloud Pak for Data 中受支持。

对于二元分类类型,AutoAI 会自动将预测列的数据类型设置为布尔。

要解决此问题,请实施以下解决方案之一:

  • 根据结果将训练数据中的标签列值更改为整数值,例如 01
  • 将训练数据中的标签列值更改为字符串值,如 AB

我为何会在模型配置期间收到错误?

配置模型详细信息时会出现以下错误信息: 字段 "feature_fields引用了列 "<name>",而模型的 "input_schema中缺少该列。 在输入模式中找不到特征。

配置期间完成模型详细信息部分时,上述消息指示模型输入模式与模型训练数据模式之间不匹配:

要修复该问题,您必须确定是以下哪种情况导致了错误,并采取纠正措施:如果您使用IBM Watson Machine Learning作为机器学习提供程序,且模型类型为 XGBoost/scikit-learn,请参阅Machine Learning PythonSDK 文档,了解有关如何存储模型的重要信息。 要生成漂移检测模型,必须在笔记本中使用 scikit-learn V0.20.2。 对于所有其他情况,必须确保训练数据列名与输入模式列名匹配。

为何在我使用 XGBoost 时我的类标签缺失?

本机 XGBoost 多类分类不返回类标签。

缺省情况下,对于二元和多类模型,XGBoost 框架不返回类标签。

对于 XGBoost 二元和多类模型,您必须更新模型以返回类标签。

为何有效内容分析未正确显示?

有效内容分析未正确显示,并且会在列名中显示以下错误消息: AIQDT0044E For紫禁字符 " <column name>

为了正确处理有效内容分析, Watson OpenScale 不支持使用双引号 (") 的列名 在有效内容中。 这将影响 CSV 和 JSON 格式的评分有效内容和反馈数据。

从有效内容文件的列名中移除双引号 (")。

错误:计算特征重要性时发生错误

在处理过程中,您收到以下错误信息: Error: An error occurred while computing feature importance.

数据集列名中的等号 (=) 会导致可解释性问题。

删除列名中的等号 (=),然后再次通过处理发送数据集。

为何我的一些活动除偏记录缺失?

活动除偏记录未到达有效内容日志记录表。

使用活动除偏 API 时,对于有效内容日志记录,一次可以发送的记录数限制为 1000。

要避免数据丢失,必须使用活动除偏 API 以包含 1000 个或更少记录的区块形式进行评分。

Watson OpenScale未显示任何可用模式

当用户尝试检索Watson OpenScale 的模式信息时,没有可用信息。 在不参考Watson OpenScale 的情况下,直接在DB2 中进行尝试后,检查数据库用户 ID 有哪些模式可用,结果也是没有。

数据库用户 ID 权限不足导致Watson OpenScale 出现数据库连接问题。

确保数据库用户拥有Watson OpenScale 所需的正确权限。

监视器运行失败,显示 "OutOfResources exception错误信息

您收到 "OutOfResources exception错误信息。

虽然您可以在反馈有效内容,评分有效内容或业务有效内容表中拥有的行数不再有限制。 现在,50,000 条的限制适用于每个计费期可通过质量和偏差监控器运行的记录数量。

达到限额后,您必须升级到标准计划或等待下一个账单期。

缺少部署

部署的模型不会显示为可供选择来创建预订的部署。

部署未显示在可用部署模型列表中的原因有很多。 如果该模型由于使用了不受支持的算法或框架而导致不是受支持的模型类型,则不会出现。 您的机器学习提供程序可能未正确配置。 还可能是存在许可权问题。

使用以下步骤来解决此问题:

  1. 检查模型是否为受支持的类型。
  2. 检查特定部署空间的Watson OpenScale配置中是否存在机器学习提供程序。
  3. 检查 CP4D admin 用户是否有权访问部署空间。

Watson OpenScale 评估可能由于大量预订而失败

如果 Watson OpenScale 实例包含过多预订 (例如 100 个预订) ,那么质量评估可能会失败。 您可以在日志中查看显示以下错误消息的数据集市服务 pod 的故障详细信息:

"Failure converting response to expected model EntityStreamSizeException: actual entity size (Some(8644836)) exceeded content length limit (8388608 bytes)! You can configure this by setting akka.http.[server|client].parsing.max-content-length or calling HttpEntity.withSizeLimit before materializing the dataBytes stream".

您可以使用 oc get pod -l component=aios-datamart 命令来查找 pod 的名称。 您还可以将 oc logs <pod name> 命令用于 pod 的日志。

要修正此错误,可以使用以下命令通过编辑 "ADDITIONAL_JVM_OPTIONS" 环境变量来增加最大请求主体大小:

oc patch woservice <release name> -p '{"spec": {"datamart": {"additional_jvm_options":"-Dakka.http.client.parsing.max-content-length=100m"} }}' --type=merge

如果在安装 Watson OpenScale时未定制发行版名称,那么发行版名称为 "aiopenscale"

Microsoft Azure ML Studio

  • 在两种Azure Machine Learning网络服务中,Watson OpenScale 仅支持 "New类型。 不支持 Classic 类型。

  • 必须使用缺省输入名称: 在 Azure Web Service 中,缺省输入名称为 "input1"。 目前,该字段是Watson OpenScale的必填字段,如果缺少该字段,Watson OpenScale将无法运行。

    如果 Azure Web Service 未使用缺省名称,请将输入字段名称更改为 "input1",然后重新部署 Web Service 并重新配置 OpenScale 机器学习提供程序设置。

  • 如果调用 Microsoft Azure ML Studio 以列出机器学习模型导致响应超时(例如,在具有许多 Web Service 时),那么必须增大超时值。 您可能需要通过更改 /etc/haproxy/haproxy.cfg 配置设置来解决此问题:

    • 登录到负载均衡器节点并更新 /etc/haproxy/haproxy.cfg,以将客户机和服务器超时从 1m 设置为 5m

      timeout client           5m
      timeout server           5m
      
    • 运行 systemctl restart haproxy 以重新启动 HAProxy 负载均衡器。

如果使用的是除 HAProxy 以外的其他负载均衡器,那么可能需要以类似方式调整超时值。

  • 在两种Azure Machine Learning网络服务中,Watson OpenScale 仅支持 "New类型。 不支持 Classic 类型。

导入设置后,在生产订阅中上传反馈数据失败

将预生产空间的设置导入生产空间后,上传反馈数据时可能会遇到问题。 当数据类型不精确匹配时,就会出现这种情况。 导入设置时,反馈表将引用其列类型的有效内容表。 要避免这个问题,首先要确保有效载荷数据具有最精确的值类型。 例如,必须优先使用双数据类型,而不是整数数据类型。

Microsoft Azure Machine Learning Service

执行模型评估时,当 Watson OpenScale 需要调用部署评分端点时,可能会迂到无法与 Azure Machine Learning 服务进行通信的问题。 实施企业安全策略的安全性工具(例如 Symantec Blue Coat)可能会阻止此类访问。

Watson OpenScale 无法为批处理部署预订创建新的 Hive 表

在 Watson OpenScale 批处理部署配置期间选择使用 Parquet 格式创建新的 Apache Hive 表时,可能会发生以下错误:

Attribute name "table name" contains invalid character(s) among " ,;{}()\\n\\t=". Please use alias to rename it.;

如果 Watson OpenScale 由于列名中的空格而无法运行 CREATE TABLE SQL 操作,那么会发生此错误。 为了避免此错误,您可以从列名中除去任何空格,或者将 Apache Hive 格式更改为 csv

Watson OpenScale 设置可能失败,带有缺省 Db2 数据库

设置 Watson OpenScale 并指定缺省 Db2 数据库时,安装可能无法完成。

要解决此问题,必须在 Cloud Pak for Data 中运行以下命令以更新 Db2:

db2 update db cfg using DFT_EXTENT_SZ 32

运行该命令后,必须创建新的 Db2 数据库以设置 Watson OpenScale。