

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在跨資產的感應器上啟用異常偵測
<a name="anom-detection-sensors-across-asset"></a>

## 建立運算模型 (AWS CLI)
<a name="create-computation-model-across-assets"></a>

若要建立運算模型，請使用 AWS 命令列界面 (AWS CLI)。定義運算模型後，請訓練模型並排程推論，以在資產間進行異常偵測 AWS IoT SiteWise。

下列步驟說明此程序：

1. 若要設定異常偵測，請使用 [UpdateAssetModel (AWS CLI)](https://docs.aws.amazon.com/cli/latest/reference/iotsitewise/update-asset-model.html)，並符合下列要求：

   1. 至少一個輸入屬性為 `DOUBLE`或 `INTEGER`資料類型。它是測量或轉換屬性，用於訓練模型。

   1. `STRING` 資料類型的結果屬性。它必須是測量屬性，並存放異常偵測結果。

1. 建立`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"
               }
           }
       }
   }
   ```

1. 執行下列命令來建立運算模型：

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

## ExecuteAction API 承載準備
<a name="create-action-payload-across-assets"></a>

 執行訓練和推論的後續步驟會使用 [ExecuteAction](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ExecuteAction.html) API 執行。訓練和推論都是使用 JSON 動作承載組態來設定。叫用 [ExecuteAction](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ExecuteAction.html) API 時，必須提供動作承載做為具有`stringValue`承載的值。

 承載必須嚴格遵守 API 要求。具體而言，該值必須是沒有**控制字元**的**扁平字串** （例如，換行、標籤或歸位字元）。下列選項提供兩種可靠的方式來提供有效的動作承載。

### 選項 1：使用乾淨的承載檔案
<a name="clean-payload-file-across-assets"></a>

下列程序說明乾淨承載檔案的步驟：

1. 清除 檔案以移除控制字元。

   ```
   tr -d '\n\r\t' < original-action-payload.json > training-or-inference-action-payload.json
   ```

1. 使用 檔案 執行 動作`@=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：具有逸出引號的內嵌字串
<a name="inline-string-quotes-across-assets"></a>

下列步驟說明內嵌提供承載的步驟，並避免中介檔案：
+ 在 JSON 字串中使用逸出雙引號 (`\"`)。
+ 以雙引號括住整個`StringValue=..`表達式。

**Example 逸出動作承載的 ：**  

```
aws iotsitewise execute-action \
    --target-resource computationModelId=<MODEL_ID> \
    --action-definition-id <ACTION_DEFINITION_ID> \
    --action-payload "stringValue={\"exportDataStartTime\":1717225200,\"exportDataEndTime\":1722789360,\"targetSamplingRate\":\"PT1M\"}"
```

## 訓練模型 (AWS CLI)
<a name="start-training-cli-across-assets"></a>

1. 執行下列命令來尋找 `AWS/ANOMALY_DETECTION_TRAINING`動作`actionDefinitionId`的 。`computation-model-id` 將 取代為上一個步驟中傳回的 ID。

   ```
   aws iotsitewise describe-computation-model \
       --computation-model-id computation-model-id
   ```

1. 建立名為 的檔案`anomaly-detection-training-payload.json`，並新增下列值：
**注意**  
 承載必須符合 [選項 1：使用乾淨的承載檔案](#clean-payload-file-across-assets)。

   1. `StartTime` 訓練資料的開頭，以 epoch 秒提供。

   1. `EndTime` 訓練資料的結尾，以 epoch 秒提供。

   1. 您可以選擇性地設定 [進階推論組態](advanced-inference-configurations.md)。

      1. （選用） `TargetSamplingRate`與資料的取樣率。

      1. （選用） `LabelInputConfiguration` 指定為改善模型訓練而發生異常行為的時段。

      1. （選用） `ModelEvaluationConfiguration` 在訓練完成後，透過在指定的時間範圍執行推論來評估模型效能。

   ```
   {
     "exportDataStartTime": StartTime,
     "exportDataEndTime": EndTime
   }
   ```  
**Example 訓練承載範例：**  

   ```
   {
     "exportDataStartTime": 1717225200,
     "exportDataEndTime": 1722789360
   }
   ```

1. 執行下列命令以開始訓練 （而不提供資產做為目標資源）。在 命令中取代下列參數：

   ```
   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
   ```

1. 執行下列命令來檢查模型訓練程序的狀態。最新的執行摘要會顯示執行狀態 (`RUNNING`/`COMPLETED`/`FAILED`)。

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

1. 執行下列命令來檢查最新訓練模型的組態。只有在至少有一個模型成功完成訓練時，此命令才會產生輸出。

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

## 開始和停止重新訓練模型 (AWS CLI)
<a name="start-stop-retraining-cli-model"></a>

 初始模型訓練後，您可以設定自動重新訓練，以解決資料偏離，並隨著時間維持模型準確性。重新訓練排程器可讓您使用可設定的提升模式設定定期模型更新。

### 開始重新訓練排程器
<a name="start-retraining-scheduler-model"></a>

1. 準備與 中所述相同的承載[開始重新訓練排程器](anom-detection-sensors-asset.md#start-retraining-scheduler)。

1. 執行訓練動作 （不提供資產做為目標資源）。在 命令中取代下列參數：

   1. `computation-model-id` 目標運算模型的 ID。

   1. `training-action-definition-id` 動作的 ID`AWS/ANOMALY_DETECTION_TRAINING`。

   ```
   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
   ```

1. 執行下列命令來檢查開始重新訓練排程器程序的狀態。最新的執行摘要會顯示執行狀態 (`RUNNING`/`COMPLETED`/`FAILED`)。

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

### 停止重新訓練排程器
<a name="stop-retraining-scheduler-model"></a>

1. 準備與 中所述相同的承載[停止重新訓練排程器](anom-detection-sensors-asset.md#stop-retraining-scheduler)。

1. 執行訓練動作 （不提供資產做為目標資源）。在 命令中取代下列參數：

   1. `computation-model-id` 目標運算模型的 ID。

   1. `training-action-definition-id` 動作的 ID`AWS/ANOMALY_DETECTION_TRAINING`。

   ```
   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
   ```

1. 執行下列命令來檢查停止重新訓練排程器程序的狀態。最新的執行摘要會顯示執行狀態 (`RUNNING`/`COMPLETED`/`FAILED`)。

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

## 啟動和停止推論 (AWS CLI)
<a name="start-stop-inference-across-assets"></a>

訓練模型後，請啟動推論，指示 AWS IoT SiteWise 開始監控您的工業資產是否有異常。

### 開始推論
<a name="start-inference-across-assets"></a>

1. 執行下列命令來尋找 `AWS/ANOMALY_DETECTION_INFERENCE`動作`actionDefinitionId`的 。`computation-model-id` 以先前建立的運算模型實際 ID 取代 。

   ```
   aws iotsitewise describe-computation-model \
       --computation-model-id computation-model-id
   ```

1. 建立檔案`anomaly-detection-start-inference-payload.json`並新增下列程式碼。依照說明取代下列參數：
**注意**  
 承載必須符合 [選項 1：使用乾淨的承載檔案](#clean-payload-file-across-assets)。

   1. `DataUploadFrequency`：設定推論排程執行的頻率，以執行異常偵測。允許的值為：`PT5M, PT10M, PT15M, PT30M, PT1H, PT2H..PT12H, PT1D`。

      ```
      "inferenceMode": "START",
      "dataUploadFrequency": "DataUploadFrequency"
      ```

   1. （選用） `DataDelayOffsetInMinutes` 搭配以分鐘為單位的延遲位移。將此值設定為 0 到 60 分鐘。

   1. （選用） `TargetModelVersion` 搭配要啟用的模型版本。

   1. （選用） `weeklyOperatingWindow`使用輪班組態設定 。

   1. 您可以選擇性地設定 [進階推論組態](advanced-inference-configurations.md)。

      1. [高頻率推論 (5 分鐘 – 1 小時）](advanced-inference-configurations.md#high-frequency-inferencing).

      1. [低頻率推論 (2 小時 – 1 天）](advanced-inference-configurations.md#low-frequency-inferencing).

      1. [彈性排程](advanced-inference-configurations.md#flexible-scheduling).

1. 執行下列命令以開始推論。取代承載檔案中的下列參數。

   1. `computation-model-id` 目標運算模型的 ID。

   1. `inference-action-definition-id` 具有步驟 1 中`AWS/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
   ```

1. 執行下列命令來檢查推論是否仍在執行中。推論作用中`TRUE`時， `inferenceTimerActive` 欄位會設為 。

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

1. 下列命令會列出所有推論執行：

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

1. 執行下列命令來描述個別執行。`execution-id` 將 取代為先前步驟 5 的 ID。

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

### 停止推論
<a name="stop-inference-across-assets"></a>

1. 執行下列命令來尋找 `AWS/ANOMALY_DETECTION_INFERENCE`動作`actionDefinitionId`的 。`computation-model-id` 以先前建立的運算模型實際 ID 取代 。

   ```
   aws iotsitewise describe-computation-model \
       --computation-model-id computation-model-id
   ```

1. 建立檔案`anomaly-detection-stop-inference-payload.json`並新增下列程式碼。

   ```
   {
       "inferenceMode": "STOP"
   }
   ```
**注意**  
 承載必須符合 [選項 1：使用乾淨的承載檔案](anom-detection-sensors-asset.md#clean-payload-file)。

1. 執行下列命令來停止推論。取代承載檔案中的下列參數：

   1. `computation-model-id` 目標運算模型的 ID。

   1. `inference-action-definition-id` 具有步驟 1 中`AWS/ANOMALY_DETECTION_INFERENCE`動作的 ID。  
**Example 停止推論命令的 ：**  

   ```
   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
   ```