在所有资产的传感器上启用异常检测 - Amazon IoT SiteWise
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在所有资产的传感器上启用异常检测

创建计算模型 ()Amazon CLI

要创建计算模型,请使用 Amazon 命令行界面 (Amazon CLI)。定义计算模型后,训练模型并安排推理,以便对中的资产进行异常检测。 Amazon IoT SiteWise

以下步骤说明了此过程:

  1. 要设置异常检测,请使用 UpdateAssetModel(Amazon CLI),并满足以下要求:

    1. 至少一个属于DOUBLEINTEGER数据类型的输入属性。它既可以是测量属性,也可以是变换属性,用于训练模型。

    2. STRING数据类型的结果属性。它必须是测量属性,并存储异常检测结果。

  2. 创建包含以下内容anomaly-detection-computation-model-payload.json的文件:

    注意

    通过直接提供assetProperty作为数据源来创建计算模型。

    { "computationModelName": "name of ComputationModel", "computationModelConfiguration": { "anomalyDetection": { "inputProperties": "${properties}", "resultProperty": "${p3}" } }, "computationModelDataBinding": { "properties": { "list": [ { "assetProperty": { "assetId": "asset-id", "propertyId": "input-property-id-1" } }, { "assetProperty": { "assetId": "asset-id", "propertyId": "input-property-id-2" } } ] }, "p3": { "assetProperty": { "assetId": "asset-id", "propertyId": "results-property-id" } } } }
  3. 运行以下命令创建计算模型:

    aws iotsitewise create-computation-model \ --cli-input-json file://anomaly-detection-computation-model-payload.json

ExecuteAction API 有效负载准备

执行训练和推理的后续步骤是使用 ExecuteActionAPI 执行的。训练和推理均使用 JSON 操作负载配置进行配置。调用 ExecuteActionAPI 时,必须将操作负载作为带有效stringValue载荷的值提供。

有效载荷必须严格遵守 API 要求。具体而言,该值必须是没有控制字符(例如,换行符、制表符或回车符)的扁平字符串。以下选项提供了两种可靠的方式来提供有效的动作有效载荷。

选项 1:使用干净的有效载荷文件

以下过程描述了清理有效载荷文件的步骤:

  1. 清理文件以删除控制字符。

    tr -d '\n\r\t' < original-action-payload.json > training-or-inference-action-payload.json
  2. 使用文件执行操作@=file://...

    aws iotsitewise execute-action \ --target-resource computationModelId=<MODEL_ID> \ --action-definition-id <ACTION_DEFINITION_ID> \ --action-payload stringValue@=file://training-or-inference-action-payload.json

选项 2:带转义引号的内联字符串

以下步骤描述了以内联方式提供有效负载并避免使用中间文件的步骤:

  • 在 JSON 字符串中使用转义的双引号 (\")。

  • 将整个StringValue=..表达式用双引号包起来。

例 逃脱的动作有效载荷:
aws iotsitewise execute-action \ --target-resource computationModelId=<MODEL_ID> \ --action-definition-id <ACTION_DEFINITION_ID> \ --action-payload "stringValue={\"exportDataStartTime\":1717225200,\"exportDataEndTime\":1722789360,\"targetSamplingRate\":\"PT1M\"}"

训练模型 (Amazon CLI)

  1. 运行以下命令以查找 Amazon/ANOMALY_DETECTION_TRAINING 操作的 actionDefinitionIdcomputation-model-id替换为上一步中返回的 ID。

    aws iotsitewise describe-computation-model \ --computation-model-id computation-model-id
  2. 创建一个名为的文件anomaly-detection-training-payload.json并添加以下值:

    注意
    1. StartTime以训练数据的开头为单位,以纪元秒为单位提供。

    2. EndTime最后是训练数据,以纪元秒为单位提供。

    3. 您可以选择配置高级推理配置

      1. (可选)TargetSamplingRate使用数据的采样率。

      2. (可选)LabelInputConfiguration指定发生异常行为的时间段,以改进模型训练。

      3. (可选)ModelEvaluationConfiguration通过在训练完成后的指定时间范围内运行推理来评估模型性能。

    { "exportDataStartTime": StartTime, "exportDataEndTime": EndTime }
    例 训练有效载荷示例:
    { "exportDataStartTime": 1717225200, "exportDataEndTime": 1722789360 }
  3. 运行以下命令开始训练(不提供资产作为目标资源)。在命令中替换以下参数:

    aws iotsitewise execute-action \ --target-resource computationModelId=computation-model-id \ --action-definition-id training-action-definition-id \ --action-payload stringValue@=file://anomaly-detection-training-payload.json
  4. 运行以下命令以检查模型训练过程的状态。最新的执行摘要显示执行状态 (RUNNING/COMPLETED/FAILED)。

    aws iotsitewise list-executions \ --target-resource-type COMPUTATION_MODEL \ --target-resource-id computation-model-id
  5. 运行以下命令以检查最新训练模型的配置。只有当至少一个模型成功完成训练时,此命令才会生成输出。

    aws iotsitewise describe-computation-model-execution-summary \ --computation-model-id computation-model-id

开始和停止重新训练模型 ()Amazon CLI

在初始模型训练后,您可以配置自动重新训练以解决数据漂移问题并随着时间的推移保持模型的准确性。再训练调度器允许您使用可配置的升级模式来设置定期模型更新。

开始重新训练调度程序

  1. 准备与中提到的相同的有效载荷开始重新训练调度程序

  2. 执行训练操作(不提供资产作为目标资源)。在命令中替换以下参数:

    1. computation-model-id带有目标计算模型的 ID。

    2. training-action-definition-id带有Amazon/ANOMALY_DETECTION_TRAINING操作的 ID。

    aws iotsitewise execute-action \ --target-resource computationModelId=computation-model-id \ --action-definition-id training-action-definition-id \ --action-payload stringValue@=file://anomaly-detection-start-retraining-payload.json
  3. 运行以下命令以检查启动重新训练调度程序进程的状态。最新的执行摘要显示执行状态 (RUNNING/COMPLETED/FAILED)。

    aws iotsitewise list-executions \ --target-resource-type COMPUTATION_MODEL \ --target-resource-id computation-model-id

停止重新训练调度程序

  1. 准备与中提到的相同的有效载荷停止重新训练调度程序

  2. 执行训练操作(不提供资产作为目标资源)。在命令中替换以下参数:

    1. computation-model-id带有目标计算模型的 ID。

    2. training-action-definition-id带有Amazon/ANOMALY_DETECTION_TRAINING操作的 ID。

    aws iotsitewise execute-action \ --target-resource computationModelId=computation-model-id \ --action-definition-id training-action-definition-id \ --action-payload stringValue@=file://anomaly-detection-stop-retraining-payload.json
  3. 运行以下命令以检查停止重新训练调度程序进程的状态。最新的执行摘要显示执行状态 (RUNNING/COMPLETED/FAILED)。

    aws iotsitewise list-executions \ --target-resource-type COMPUTATION_MODEL \ --target-resource-id computation-model-id

开始和停止推理 ()Amazon CLI

训练完模型后,开始推理,这会指示 Amazon IoT SiteWise 您开始监控您的工业资产是否存在异常。

开始推理

  1. 运行以下命令以查找 Amazon/ANOMALY_DETECTION_INFERENCE 操作的 actionDefinitionIdcomputation-model-id替换为之前创建的计算模型的实际 ID。

    aws iotsitewise describe-computation-model \ --computation-model-id computation-model-id
  2. 创建文件anomaly-detection-start-inference-payload.json并添加以下代码。按所述替换以下参数:

    注意
    1. DataUploadFrequency:配置推理计划的运行频率,以执行异常检测。支持的值为:PT5M, PT10M, PT15M, PT30M, PT1H, PT2H..PT12H, PT1D

      "inferenceMode": "START", "dataUploadFrequency": "DataUploadFrequency"
    2. (可选)DataDelayOffsetInMinutes延迟偏移量以分钟为单位。将此值设置在 0 到 60 分钟之间。

    3. (可选)TargetModelVersion使用要激活的模型版本。

    4. (可选)weeklyOperatingWindow使用轮班配置进行配置。

    5. 您可以选择配置高级推理配置

      1. 高频推理(5 分钟 — 1 小时).

      2. 低频推理(2 小时 — 1 天).

      3. 灵活的日程安排.

  3. 运行以下命令开始推理。替换负载文件中的以下参数。

    1. computation-model-id带有目标计算模型的 ID。

    2. inference-action-definition-id使用步骤 1 中Amazon/ANOMALY_DETECTION_INFERENCE操作的 ID。

    aws iotsitewise execute-action \ --target-resource computationModelId=computation-model-id \ --action-definition-id inference-action-definition-id \ --action-payload stringValue@=file://anomaly-detection-inference-payload.json
  4. 运行以下命令以检查推理是否仍在运行。当推理处于活动状态TRUE时,该inferenceTimerActive字段设置为。

    aws iotsitewise describe-computation-model-execution-summary \ --computation-model-id computation-model-id
  5. 以下命令列出了所有的推理执行:

    aws iotsitewise list-executions \ --target-resource-type COMPUTATION_MODEL \ --target-resource-id computation-model-id
  6. 运行以下命令来描述单个执行。execution-id替换为先前步骤 5 中的 ID。

    aws iotsitewise describe-execution \ --execution-id execution-id

停止推理

  1. 运行以下命令以查找 Amazon/ANOMALY_DETECTION_INFERENCE 操作的 actionDefinitionIdcomputation-model-id替换为之前创建的计算模型的实际 ID。

    aws iotsitewise describe-computation-model \ --computation-model-id computation-model-id
  2. 创建文件anomaly-detection-stop-inference-payload.json并添加以下代码。

    { "inferenceMode": "STOP" }
    注意
  3. 运行以下命令停止推理。替换负载文件中的以下参数:

    1. computation-model-id带有目标计算模型的 ID。

    2. inference-action-definition-id使用步骤 1 中Amazon/ANOMALY_DETECTION_INFERENCE操作的 ID。

    例 停止推理命令中的:
    aws iotsitewise execute-action \ --target-resource computationModelId=computation-model-id \ --action-definition-id inference-action-definition-id \ --action-payload stringValue@=file://anomaly-detection-stop-inference-payload.json