时序异常检测预训练工作流
功能介绍
盘古时序异常检测大模型,支持时序数据的异常检测任务,分为预训练产物以及微调产物两种不同的部署模式。
- 预训练产物(正常数据学习):使用设备历史正常数据对时序异常检测大模型进行全量训练,使其更好地学习并重构正常数据的潜在特征分布。在推理阶段,利用模型对输入样本的重构误差作为异常判别依据:若重构效果显著下降,则表明该样本偏离正常模式,具有潜在异常趋势,从而实现对异常数据的有效检测与区分。
- 微调产物(正异常数据分类):在时序异常检测大模型基础上引入分类头,并在训练过程中冻结模型的主干网络,仅使用历史中包含正常与异常样本的混合数据对新增分类头进行微调。通过此方式,将原始问题转化为针对特定时间点的二分类任务,判断其状态为正常或异常。
推理部署服务需要兼容预训练、微调两种产物的部署,每种模型调用逻辑以及输出结果有区别,需要服务内自动识别加载模型的类别,并根据API请求体输入返回推理结果。
- 若为预训练工作流产物(正常数据学习)模型,根据指定异常分计算方式返回异常分+重构值,共有以下三种计算方式:
- 重构误差:计算多次重构的均值,计算与真实值的偏差值记作异常分。
- 重构方差(推荐):计算多次重构的方差,记作异常分。
- 重构误差+方差:异常分计算方式a)+b),记作异常分。
- 若为微调工作流产物(正异常数据分类)模型,返回时序点正异常类别+重构值。
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
X-Auth-Token |
是 |
String |
参数解释: 用户Token。 用于获取操作API的权限。如图4中响应消息头中X-Subject-Token的值即为Token。 约束限制: 不涉及 取值范围: 不涉及 默认取值: 不涉及 |
Content-Type |
是 |
String |
参数解释: 发送的实体的MIME类型。 约束限制: 不涉及 取值范围: 不涉及 默认取值: application/json |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
X-Apig-AppCode |
是 |
String |
参数解释: API Key值。 用于获取操作API的权限。API Key认证响应消息头中X-Apig-AppCode的值即为API Key。 约束限制: 不涉及 取值范围: 不涉及 默认取值: 不涉及 |
Content-Type |
是 |
String |
参数解释: 发送的实体的MIME类型。 约束限制: 不涉及 取值范围: 不涉及 默认取值: application/json |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
data |
是 |
Array |
参数解释: 时序异常检测批处理数据。 约束限制: 盘古时序预测分类任务的输入数据内容,用字典承载。输入数据字典中,键对应特征列名,值为列表承载的序列数据具体内容,单条时序数据窗口长度需大于等于100。 取值范围: 输入数据中的一组数据。 默认取值: 预测大模型在训练完成后,可以在训练日志页面,“模型训练”日志节点中获取推理api所用的示例数据。填写请求Body时可以参考该示例填写。 |
option |
否 |
String |
参数解释: 选择异常分计算模式,可选择模式包括["err","var", "mix"],分别代表["重构误差","重构方差", "重构误差+方差"]三种计算模式,推荐使用重构方差("var"):
约束限制: 无 取值范围: {"err", "var", "mix"} 默认取值: var |
响应参数
状态码: 200
参数 |
参数类型 |
描述 |
---|---|---|
data |
LIST<OutputMeta> |
参数解释: 时序预测结果的列表。同时返回各个特征的异常分以及重构值,分别以"anomaly_score"以及"reconstruction"两个键值承载。 约束限制: 不涉及 取值范围: 不涉及 默认取值: 不涉及 |
time_cost |
JSON |
参数解释: 当启动服务时,本次请求服务各阶段耗时情况。 约束限制: 不涉及 取值范围: 不涉及 默认取值: 不涉及 |
状态码: 400
参数 |
参数类型 |
描述 |
---|---|---|
error_code |
String |
错误码。 |
error_msg |
String |
错误信息。 |
请求示例
{ "option": "var", #可选模式包括["err","var", "mix"] "data": [ { "context": { "feature_0": [ 864.1618041992188, 493.91827392578125, 252.7724151611328,...], "feature_1": [ 864.1618041992188, 493.91827392578125, 252.7724151611328,...], "feature_2": [ 864.1618041992188, 493.91827392578125, 252.7724151611328,...], "feature_3": [ 864.1618041992188, 493.91827392578125, 252.7724151611328,...] } }, { "context": { "feature_0": [ 864.1618041992188, 493.91827392578125, 252.7724151611328,...], "feature_1": [ 864.1618041992188, 493.91827392578125, 252.7724151611328,...], "feature_2": [ 864.1618041992188, 493.91827392578125, 252.7724151611328,...], "feature_3": [ 864.1618041992188, 493.91827392578125, 252.7724151611328,...] } }, {...}, {...} ] }
响应示例
{ "data": [ { # 异常分 "anomaly_score":{ "feature_0": [ 864.1618041992188, 493.91827392578125, 252.7724151611328,...], "feature_1": [ 864.1618041992188, 493.91827392578125, 252.7724151611328,...], "feature_2": [ 864.1618041992188, 493.91827392578125, 252.7724151611328,...], "feature_3": [ 864.1618041992188, 493.91827392578125, 252.7724151611328,...] }, # 重构结果 "reconstruction":{ "feature_0": [ 864.1618041992188, 493.91827392578125, 252.7724151611328,...], "feature_1": [ 864.1618041992188, 493.91827392578125, 252.7724151611328,...], "feature_2": [ 864.1618041992188, 493.91827392578125, 252.7724151611328,...], "feature_3": [ 864.1618041992188, 493.91827392578125, 252.7724151611328,...] } }, {...}, {...}, {...} ], "time_cost": { "infer_cost_time": "82.609 ms", "postprocess_cost_time": "0.29 ms", "preprocess_cost_time": "0.1332 ms", "service_cost_total_time": "84.965 ms" } }
状态码
请参见状态码。
错误码
请参见错误码。