时序异常检测使用文档
产线介绍
时序异常检测是目前时序数据分析成熟的应用之一,其旨在从正常的时间序列数据中识别出异常的事件或行为模式,在众多领域都发挥着重要作用:量化交易中,用于发现异常交易行为,规避潜在的金融风险;在网络安全领域,用于实时监测网络流量,及时发现并预防网络攻击行为的发生;在自动驾驶汽车领域,异常检测可以持续监测车载传感器数据,及时发现可能导致事故的异常情况;而在大型工业设备维护中,异常检测也能够帮助工程师提前发现设备故障苗头,从而采取预防性维护措施,降低设备停机时间和维修成本。
模型方案介绍
本产线的模型方案包含1个模块,对应 在线体验应用 中的结果:时间序列是否异常。由于时序与数据场景强相关,因此不支持直接部署。如果你希望对自己的场景进行训练部署,可以向下查找模型介绍,选择合适的模型做训练。
时序异常检测模型
本产线包含 5 个端到端算法模型,benchmark 如下:
模型列表 | precision | recall | f1_score | 模型存储大小(M) |
---|---|---|---|---|
DLinear_ad | 0.904 | 0.891 | 0.897 | 0.9M |
PatchTST_ad | 0.900 | 0.925 | 0.913 | 2.1M |
TimesNet_ad | 0.899 | 0.935 | 0.917 | 5.4M |
AutoEncoder_ad | 0.897 | 0.860 | 0.876 | 0.4M |
Nonstationary_ad | 0.901 | 0.938 | 0.918 | 19.1MB |
注:以上精度指标测量自 SWAT 数据集,重建长度为 100。
数据准备
TSADDataset
时序异常检测和多模型融合时序异常检测要求的数据集格式,支持 xls、xlsx 格式的数据集转换为 csv 格式。
数据集目录结构
请按照如下格式准备数据,以确保产线可以正确读取数据集,进行模型训练。
dataset_dir # 数据集根目录,目录名称可以改变
├── train.csv # 训练集文件,文件名称不可改变
├── val.csv # 验证集文件,文件名称不可改变
└── test.csv # 测试集文件,文件名称不可改变
你可以参考:示例数据集
参数准备
正确设置训练参数对于模型训练至关重要,本产线支持两种参数设置方式:修改表单和修改配置文件,常见训练参数推荐使用表单修改,可展开高级设置修改更多参数,对飞桨套件参数较熟悉的用户可以通过表单修改全部训练参数。训练模型的基础配置和高级配置参数如下:
基础配置
- 时间列(time_col):须结合自己的数据设置时间序列数据集的时间列的列名称。
- 特征变量(feature_cols):须结合自己的数据设置需判断异常的特征的列名称,可以为多个,多个之间用','分隔。
- 频率(freq):须结合自己的数据设置时间序列数据集的时间频率,如:1。
- 标签列(label_col):须结合自己的数据设置标签列名称,标签列用 0 表示正常,1 表示异常。
- 输入长度(seq_len):须结合自己的场景需求设置历史时间序列长度,如:96。
- 轮次(Epochs):模型对训练数据的重复学习次数,一般来说,轮次越大,模型训练时间越长,模型精度越高,但是如果设置特别大,可能会导致模型过拟合。
- 批大小(Batch Size):由于模型每轮次的训练是分批读取数据的,批大小是每一批数据的数据量,和显存直接相关,批大小越大模型训练的速度越快,显存占用越高。为确保训练不会因为显存溢出而终止。
- 学习率(Learning Rate):模型训练过程中梯度调整的步长,通常与批大小成正比例关系,学习率设置过大可能会导致模型训练不收敛,设置过小可能会导致模型收敛速度过慢。在不同的数据集上学习率可能不同,对结果影响较大,需要不断调试。
提交训练
训练套餐包括:
- V100 32G 1卡 3算力点/小时
- V100 32G 1卡 30A币/小时
支持用户选择算力点或 A 币支付 GPU 使用花费。你可以根据自己的需求和平台 GPU 占用情况选择合适的训练套餐。
为鼓励更多用户体验模型产线新功能,每个账户赠送 3 张限时免费卡,前三次使用 V100 32G 1卡 30A币/小时训练套餐免费,之后将按对应训练时长计费,此外,训练过程中主动停止或因配置信息有误导致的训练失败,限免卡不返还。
产线详情页
提交训练后,页面会刷新为产线详情页,展示用户设置的全部训练配置信息,包括:产线模板、微调模型、训练参数配置、数据集、输出路径、资源选择和任务状态。当 GPU 集群可以执行训练任务时,任务状态显示为运行中,日志详情实时打印当前训练 log;当 GPU 集群暂无资源执行训练任务时,任务状态显示为排队中,此时可选择取消排队,返回配置中状态,如使用限免卡,限免卡会原路返还。
产线评估
产线状态为完成态(含运行成功、已停止、运行失败)时,产线内通常有结果产出,支持用户对产出的模型权重进行评估。训练中使用验证集评估的结果被提前保存,以表单的形式展示在评估页面,方便用户查看和标记模型权重。
注:由于时序的场景强相关性,时序相关产线均不支持直接部署。
标记模型权重
每条产线产出的最佳模型权重,为方便用户查找和管理,你可以在这里对模型权重做个标记,并为它取一个昵称(例如:数据集A评估最佳)。标记过的模型权重支持跨产线导入,也就是说,你可以在其他产线的同模型名选择权重(如模型部署、断点训练)的下拉菜单中,找到在本产线标记过的权重。当然,权重也可以取消标记,以减少选择成本。
创建评估任务
除了在验证集上评估模型权重外,如果你还有一批新的测试数据,可以选择自定义测试集的方式,上传测试数据并进行评估。请注意数据集的格式要求与训练数据集相同,但此处不会进行数据校验,如果数据格式存在问题,可能会引发评估任务失败。
历史评估任务的设置信息与日志会完整保留,可以通过历史记录查看详细情况。
产线部署
本产线支持两种部署方式:在线服务化部署和导出离线部署包。你可以根据自己的实际需求选择合适的部署方式,使用你满意的模型方案。
在线服务化部署
服务化部署指的是将模型方案部署为一个云端可调用 API,服务成功运行后,你可以使用自己的访问令牌鉴权后调用 API。此外,在线体验的应用中也可以找到这个 API 进行小样本可视化测试哦。
注:这种方式适用于数据不敏感且无部署机器的用户使用,API 为用户私有,仅能通过用户个人的访问令牌鉴权后调用。
导出离线部署包
如果你有离线部署的需求,产线也支持用户导出离线部署包。与在线服务化部署不同的是,你需要选择本地运行环境,产线会依据运行环境的不同导出相应的部署包,支持用户下载后本地运行。