你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用经过训练的模型进行流式推理

重要

从 2023 年 9 月 20 日开始,将无法创建新的异常检测器资源。 异常检测器服务将于 2026 年 10 月 1 日停用。

可以选择批量推理 API 或流式推理 API 进行检测。

批量推理 API 流式推理 API
更适合用于以下批处理用例:客户不需要立即获取推理结果,并希望检测更长时间段内的异常,然后获得结果。 如果客户希望立即获取推理结果并希望实时检测多变量异常,建议使用此 API。 还适用于执行之前的压缩和上传过程以进行推理时遇到问题的客户。
API 名称 方法 路径 说明
批量推理 帖子 {endpoint}/anomalydetector/v1.1/multivariate/models/{modelId}:detect-batch 使用在批处理场景中工作的 modelId 触发异步推理
获取批量推理结果 GET {endpoint}/anomalydetector/v1.1/multivariate/detect-batch/{resultId} 使用 resultId 获取批量推理结果
流式推理 帖子 {endpoint}/anomalydetector/v1.1/multivariate/models/{modelId}: detect-last 使用 modelId 触发同步推理,这适用于流式处理方案

触发流式推理 API

请求

通过同步 API,可以实时逐点获取推理结果,而无需像训练和异步推理一样压缩和上传任务。 下面是同步 API 的一些要求:

  • 需要将 JSON 格式的数据放入 API 请求正文中。
  • 由于有效负载限制,请求正文中的推理数据大小受到限制,最多支持 2880 个时间戳 * 300 个变量,至少支持 1 sliding window length

可将多个变量的多个时间戳以 JSON 格式提交到请求正文中,API 调用方式如下:

{{endpoint}}/anomalydetector/v1.1/multivariate/models/{modelId}:detect-last

示例请求:

{
  "variables": [
    {
      "variable": "Variable_1",
      "timestamps": [
        "2021-01-01T00:00:00Z",
        "2021-01-01T00:01:00Z",
        "2021-01-01T00:02:00Z"
        //more timestamps
      ],
      "values": [
        0.4551378545933972,
        0.7388603950488748,
        0.201088255984052
        //more values
      ]
    },
    {
      "variable": "Variable_2",
      "timestamps": [
        "2021-01-01T00:00:00Z",
        "2021-01-01T00:01:00Z",
        "2021-01-01T00:02:00Z"
        //more timestamps
      ],
      "values": [
        0.9617871613964145,
        0.24903311574778408,
        0.4920561254118613
        //more values
      ]
    },
    {
      "variable": "Variable_3",
      "timestamps": [
        "2021-01-01T00:00:00Z",
        "2021-01-01T00:01:00Z",
        "2021-01-01T00:02:00Z"
        //more timestamps       
      ],
      "values": [
        0.4030756879437628,
        0.15526889968448554,
        0.36352226408981103
        //more values      
      ]
    }
  ],
  "topContributorCount": 2
}

必需的参数

  • variableName:此名称应与训练数据中的名称完全相同。
  • timestamps:时间戳的长度应等于“1 个滑动窗口”,因为每个流式推理调用都将使用 1 个滑动窗口来检测滑动窗口中的最后一个时间点。
  • values:上面输入的每个时间戳中每个变量的值。

可选参数

  • topContributorCount:该数字可以指定 N 从“1 到 30”,它将提供异常结果中前 N 个参与变量的详细信息。 例如,如果模型中有 100 个变量,但只关注检测结果中的前 5 个参与变量,则应用数字 5 填充此字段。 默认数字为 10。

响应

示例响应:

{
    "variableStates": [
        {
            "variable": "series_0",
            "filledNARatio": 0.0,
            "effectiveCount": 1,
            "firstTimestamp": "2021-01-03T01:59:00Z",
            "lastTimestamp": "2021-01-03T01:59:00Z"
        },
        {
            "variable": "series_1",
            "filledNARatio": 0.0,
            "effectiveCount": 1,
            "firstTimestamp": "2021-01-03T01:59:00Z",
            "lastTimestamp": "2021-01-03T01:59:00Z"
        },
        {
            "variable": "series_2",
            "filledNARatio": 0.0,
            "effectiveCount": 1,
            "firstTimestamp": "2021-01-03T01:59:00Z",
            "lastTimestamp": "2021-01-03T01:59:00Z"
        },
        {
            "variable": "series_3",
            "filledNARatio": 0.0,
            "effectiveCount": 1,
            "firstTimestamp": "2021-01-03T01:59:00Z",
            "lastTimestamp": "2021-01-03T01:59:00Z"
        },
        {
            "variable": "series_4",
            "filledNARatio": 0.0,
            "effectiveCount": 1,
            "firstTimestamp": "2021-01-03T01:59:00Z",
            "lastTimestamp": "2021-01-03T01:59:00Z"
        }
    ],
    "results": [
        {
            "timestamp": "2021-01-03T01:59:00Z",
            "value": {
                "isAnomaly": false,
                "severity": 0.0,
                "score": 0.2675322890281677,
                "interpretation": []
            },
            "errors": []
        }
    ]
}

响应包含结果状态、变量信息、推理参数和推理结果。

  • variableStates:列出推理请求中每个变量的信息。

  • setupInfo:为此次推理提交的请求正文。

  • results:包含检测结果。 有三种典型类型的检测结果。

  • isAnomalyfalse 指示当前时间戳不存在异常。true 指示当前时间戳有异常。

    • severity 指示异常情况的相对严重性;对于异常数据,它始终大于 0。
    • score 是模型在做出决策时所依据的原始模型输出。 severity 是从 score 派生的值。 每个数据点都有 score
  • interpretation:此字段仅在检测到时间戳异常时才会显示,其中包含 variablescontributionScorecorrelationChanges

  • contributors:一个列表,其中包含每个变量的贡献分数。 贡献分数越高表示根本原因的可能性越高。 此列表通常用于解释异常情况以及诊断根本原因。

  • correlationChanges:此字段仅在检测到时间戳异常时才会显示,它包含在 interpretation 中。 它包含 changedVariableschangedValues,用于解释变量之间的相关性发生了变化。

  • changedVariables:此字段将显示哪些变量具有与 variable 相关的重大更改。 此列表中的变量按相关更改程度进行排序。

注意

一个常见失误是将 isAnomaly=true 的所有数据点视为异常。 这最终可能导致出现过多的误报。 应同时使用 isAnomalyseverity(或 score)筛选出不严重的异常情况,并(选择性地)使用组合来检查异常情况的持续时间,以消除随机干扰。 有关 severity 之间的差异,请参阅最佳做法文档中的score

后续步骤