PaddleX 时序异常检测模块实战指南:模型选型、快速推理与二次开发全流程

发布时间:2026/10/10 5:41:32
PaddleX 时序异常检测模块实战指南:模型选型、快速推理与二次开发全流程 人工智能大模型低代码计算机视觉深度学习模型推理服务【免费下载链接】PaddleXAll-in-One Development Tool based on PaddlePaddle项目地址https://gitcode.com/gh_mirrors/pa/PaddleX点击查看免费下载时序异常检测用于识别时序数据中不符合预期模式、趋势或周期性规律的异常点或异常时段这类异常可能由系统故障、外部冲击、数据录入错误或罕见事件引发对及时响应、风险评估与业务决策至关重要。本文以 PaddleX 的时序异常检测模块为主线完整覆盖支持模型清单与性能数据、基于create_model的快速推理集成、结果对象处理方法以及从数据校验、格式转换、模型训练、评估到推理部署的二次开发全流程并结合仓库源码说明底层预处理与后处理原理帮助你直接上手将该模块集成进自己的项目。一、模块概述与能力边界PaddleX 将时序异常检测封装为独立的单模型推理模块用户只需几行 Python 代码即可完成推理也可以基于官方模型进行二次开发以追求更高精度。模块底层以 PaddleTS 生态为基础训练需要安装 PaddleTS 插件推理侧则由 PaddleX 的推理框架统一调度。从源码结构看该模块的推理链路主要由以下文件构成推理预测器paddlex/inference/models/ts_anomaly_detection/predictor.py其中定义了TSAdRunnerPredictor负责构建预处理与后处理流水线后处理逻辑paddlex/inference/models/ts_anomaly_detection/processors.py包含GetAnomaly将模型重建误差与阈值比较输出 0/1 异常标签结果对象paddlex/inference/models/ts_anomaly_detection/result.py定义TSAdResult支持打印、保存 CSV/JSON 及可视化。二、支持模型列表与性能参考PaddleX 时序异常检测模块目前内置以下官方模型推理耗时仅包含模型推理耗时不包含前后处理耗时模型名称模型下载链接precisionrecallf1_score模型存储大小MB介绍DLinear_ad推理模型 / 训练模型0.98980.39 / 0.160.69 / 0.080.1DLinear_ad 结构简单效率高且易用的时序异常检测模型Nonstationary_ad推理模型 / 训练模型0.98551.94 / 1.165.31 / 1.661.5基于 transformer 结构针对性优化非平稳时间序列的异常检测模型AutoEncoder_ad推理模型 / 训练模型0.99360.24 / 0.130.41 / 0.050.052AutoEncoder_ad 是经典的自编码结构的效率高且易用的时序异常检测模型PatchTST_ad推理模型 / 训练模型0.98782.10 / 0.556.98 / 0.630.164PatchTST 是兼顾局部模式和全局依赖关系的高精度时序异常检测模型上表中 recall / f1_score 的“A / B”格式为两种异常判定口径下的取值实际以官方发布的模型详情为准。测试环境说明性能测试环境测试数据集PSM 数据集时序输入长度为 100硬件配置GPU 为 NVIDIA Tesla T4CPU 为 Intel Xeon Gold 6271C 2.60GHz软件环境Ubuntu 20.04 / CUDA 11.8 / cuDNN 8.9 / TensorRT 8.6.1.6paddlepaddle 3.0.0 / paddlex 3.0.3。推理模式说明模式GPU 配置CPU 配置加速技术组合常规模式FP32 精度 / 无 TRT 加速FP32 精度 / 8 线程PaddleInference高性能模式选择先验精度类型和加速策略的最优组合FP32 精度 / 8 线程选择先验最优后端Paddle/OpenVINO/TRT 等需要说明的是上述指标来自官方文档给出的特定软硬件环境实际效果会随数据与设备环境变化应以自己环境中的实测为准。三、快速集成几行代码完成时序异常检测3.1 环境准备与示例数据在快速集成前请先安装 PaddleX 的 wheel 包详细请参考 PaddleX 本地安装教程。安装完成后还需要下载示例数据 ts_ad.csv 到本地。3.2 最小推理示例from paddlex import create_model model create_model(model_nameAutoEncoder_ad) output model.predict(ts_ad.csv, batch_size1) for res in output: res.print() res.save_to_csv(save_path./output/) res.save_to_json(save_path./output/res.json)运行后得到的结果为{res: {input_path: ts_ad.csv, anomaly: label timestamp 220226 1 220227 1 220228 0 220229 1 220230 1 ... ... 220317 1 220318 1 220319 1 220320 1 220321 1 [96 rows x 1 columns]}}运行结果参数含义如下input_path表示输入待预测异常的时序文件路径anomaly表示时序异常检测结果1 表示预测异常0 表示预测正常可以通过res.save_to_csv()将预测结果保存为 csv 文件通过res.save_to_json()将预测结果保存为 json 文件。从推理实现来看TSAdRunnerPredictor.process() 返回的字典正是input_path、input_ts与anomaly三个键与上述输出一一对应。3.3 create_model 参数说明create_model用于实例化时序异常检测模型文档中以AutoEncoder_ad为例你也可以自由切换该模块下任意模型具体说明如下参数参数说明参数类型可选项默认值model_name模型名称str所有 PaddleX 支持的模型名称无model_dir模型存储路径str无无device模型推理设备str支持指定 GPU 具体卡号如gpu:0其他硬件具体卡号如npu:0CPU 如cpugpu:0use_hpip是否启用高性能推理插件bool无Falsehpi_config高性能推理配置dict/None无None其中model_name必须指定。指定model_name后默认使用 PaddleX 内置的模型参数在此基础上再指定model_dir时则使用用户自定义的模型。3.4 predict() 方法参数说明调用时序异常检测模型的predict()方法进行推理预测参数有input和batch_size具体说明如下参数参数说明参数类型可选项默认值input待预测数据支持多种输入类型Python Var/str/list-Python 变量如pandas.DataFrame表示的时序数据-文件路径如时序文件的本地路径/root/data/ts.csv-URL 链接如时序文件的网络 URL示例-本地目录该目录下需包含待预测数据文件如本地路径/root/data/-列表列表元素需为上述类型数据如[pandas.DataFrame, pandas.DataFrame]、[/root/data/ts1.csv, /root/data/ts2.csv]、[/root/data1, /root/data2]、[{ts: /root/data1}, {ts: /root/data2/ts.csv}]无batch_size批大小int大于 0 任意整数13.5 预测结果处理方法与属性每个样本的预测结果均为对应的 Result 对象支持打印、保存为 csv 文件、保存为 json 文件等操作方法方法说明参数参数类型参数说明默认值print()打印结果到终端format_jsonbool是否对输出内容进行 JSON 缩进格式化Trueindentint指定缩进级别以美化输出的 JSON 数据仅当format_json为True时有效4ensure_asciibool是否将非 ASCII 字符转义为 UnicodeTrue时全部转义False保留原始字符仅当format_json为True时有效Falsesave_to_json()将结果保存为 json 格式文件save_pathstr保存的文件路径当为目录时保存文件命名与输入文件类型命名一致无indentint指定缩进级别以美化输出的 JSON 数据仅当format_json为True时有效4ensure_asciibool是否将非 ASCII 字符转义为 UnicodeTrue时全部转义False保留原始字符仅当format_json为True时有效Falsesave_to_csv()将结果保存为时序 csv 格式文件save_pathstr保存的文件路径当为目录时保存文件命名与输入文件类型命名一致无此外也支持通过属性获取带结果的可视化时序和预测结果属性属性说明json获取预测的 json 格式的结果csv获取格式为 csv 的时序异常检测预测结果在源码层面TSAdResult 继承了BaseTSResult其_to_csv()直接返回anomaly对应的 DataFrame同时提供了基于 matplotlib 的visualize()函数可绘制带异常标注的时序阶梯图标题为 Time Series Anomaly Detection将检测结果可视化输出为图片。关于更多 PaddleX 单模型推理的 API 使用方法可以参考 PaddleX 单模型 Python 脚本使用说明。四、二次开发训练更高精度的异常检测模型如果你追求更高精度的现有模型可以使用 PaddleX 的二次开发能力开发更好的时序异常检测模型。在使用 PaddleX 开发时序异常模型之前请务必安装 PaddleTS 插件安装过程可以参考 PaddleX 本地安装教程。4.1 数据准备在进行模型训练前需要准备相应任务模块的数据集。PaddleX 针对每一个模块提供了数据校验功能只有通过数据校验的数据才可以进行模型训练。此外PaddleX 为每一个模块都提供了 Demo 数据集你可以基于官方提供的 Demo 数据完成后续的开发。若希望用私有数据集进行后续的模型训练可以参考 PaddleX 时序异常检测任务模块数据标注教程。4.1.1 Demo 数据下载可以参考下面的命令将 Demo 数据集下载到指定文件夹wget https://paddle-model-ecology.bj.bcebos.com/paddlex/data/ts_anomaly_examples.tar -P ./dataset tar -xf ./dataset/ts_anomaly_examples.tar -C ./dataset/从 PaddleTS_api/ts_ad/config.py 的_make_custom_dataset_config可以看出时序异常检测数据集TSADDataset要求目录内包含train.csv与val.csv两个标注文件这也是数据校验的基本格式约束。4.1.2 数据校验一行命令即可完成数据校验python main.py -c paddlex/configs/modules/ts_anomaly_detection/AutoEncoder_ad.yaml \ -o Global.modecheck_dataset \ -o Global.dataset_dir./dataset/ts_anomaly_examples执行上述命令后PaddleX 会对数据集进行校验并统计数据集的基本信息命令运行成功后会在 log 中打印出Check dataset passed !信息。校验结果文件保存在./output/check_dataset_result.json同时相关产出会保存在当前目录的./output/check_dataset目录下产出目录中包括示例时序序列。校验结果文件具体内容为{ done_flag: true, check_pass: true, attributes: { train_samples: 22032, train_table: [ [ timestamp, feature_0, ..., feature_24, label ], [ 0.0, 0.7326893750079723, ..., 0.1382488479262673, 0.0 ] ], val_samples: 198290, val_table: [ [ timestamp, feature_0, ..., feature_24, label ], [ 22032.0, 0.8604795809835284, ..., 0.1428571428571428, 0.0 ] ] }, analysis: { histogram: }, dataset_path: ./dataset/ts_anomaly_examples, show_type: csv, dataset_type: TSADDataset }上述校验结果中check_pass为True表示数据集格式符合要求其他部分指标的说明如下attributes.train_samples该数据集训练集样本数量为 22032attributes.val_samples该数据集验证集样本数量为 198290attributes.train_table该数据集训练集样本示例数据前 10 行信息attributes.val_table该数据集验证集样本示例数据前 10 行信息。注只有通过数据校验的数据才可以训练和评估。从示例数据可以看到时序异常检测数据集的列结构通常为timestamp时间列feature_0...feature_N特征列label异常标签列异常点为 1、正常点为 0。4.1.3 数据集格式转换 / 数据集划分可选在完成数据校验之后可以通过修改配置文件或是追加超参数的方式对数据集的格式进行转换也可以对数据集的训练/验证比例进行重新划分。1数据集格式转换时序异常检测支持将xlsx和xls格式的数据集转换为csv格式。数据集校验相关的参数可以通过修改配置文件中CheckDataset下的字段进行设置CheckDataset:convert:enable是否进行数据集格式转换支持xlsx和xls格式的数据集转换为 CSV 格式默认为Falsesrc_dataset_type如果进行数据集格式转换无需设置源数据集格式默认为null。若要开启格式转换修改配置如下CheckDataset: ...... convert: enable: True src_dataset_type: null ......随后执行命令python main.py -c paddlex/configs/modules/ts_anomaly_detection/AutoEncoder_ad.yaml \ -o Global.modecheck_dataset \ -o Global.dataset_dir./dataset/ts_anomaly_examples以上参数同样支持通过追加命令行参数的方式进行设置python main.py -c paddlex/configs/modules/ts_anomaly_detection/AutoEncoder_ad.yaml \ -o Global.modecheck_dataset \ -o Global.dataset_dir./dataset/ts_anomaly_examples \ -o CheckDataset.convert.enableTrue2数据集划分数据集重新划分相关参数同样位于CheckDataset下CheckDataset:convert:enable是否进行数据集格式转换为True时进行数据集格式转换默认为Falsesrc_dataset_type如果进行数据集格式转换时序异常检测仅支持将 xlsx 标注文件转换为 csv无需设置源数据集格式默认为nullsplit:enable是否重新划分数据集为True时进行数据集划分默认为Falsetrain_percent如果重新划分数据集需设置训练集的百分比类型为 0-100 之间的任意整数需要保证与val_percent的值之和为 100val_percent如果重新划分数据集需设置验证集的百分比类型为 0-100 之间的任意整数需要保证与train_percent的值之和为 100。例如你想重新划分数据集为训练集占比 90%、验证集占比 10%则需将配置文件修改为CheckDataset: ...... split: enable: True train_percent: 90 val_percent: 10 ......随后执行命令python main.py -c paddlex/configs/modules/ts_anomaly_detection/AutoEncoder_ad.yaml \ -o Global.modecheck_dataset \ -o Global.dataset_dir./dataset/ts_anomaly_examples数据划分执行之后原有标注文件会被在原路径下重命名为xxx.bak。以上参数同样支持通过追加命令行参数的方式进行设置python main.py -c paddlex/configs/modules/ts_anomaly_detection/AutoEncoder_ad.yaml \ -o Global.modecheck_dataset \ -o Global.dataset_dir./dataset/ts_anomaly_examples \ -o CheckDataset.split.enableTrue \ -o CheckDataset.split.train_percent90 \ -o CheckDataset.split.val_percent104.2 模型训练一条命令即可完成模型的训练此处以时序异常检测模型AutoEncoder_ad的训练为例python main.py -c paddlex/configs/modules/ts_anomaly_detection/AutoEncoder_ad.yaml \ -o Global.modetrain \ -o Global.dataset_dir./dataset/ts_anomaly_examples需要如下几步指定模型的.yaml配置文件路径此处为AutoEncoder_ad.yaml训练其他模型时需要指定相应的配置文件模型和配置文件的对应关系可以查阅 PaddleX 模型列表CPU/GPU指定模式为模型训练-o Global.modetrain指定训练数据集路径-o Global.dataset_dir其他相关参数均可通过修改.yaml配置文件中的Global和Train下的字段来进行设置也可以通过在命令行中追加参数来调整。如指定前 2 卡 GPU 训练-o Global.devicegpu:0,1设置训练轮次数为 10-o Train.epochs_iters10。更多可修改的参数及其详细解释可以查阅 PaddleX 时序任务模型配置文件参数说明。以仓库自带的 AutoEncoder_ad.yaml 为例训练相关的核心字段包括参数数据类型描述示例默认值Train.time_colstr时间列须结合自己的数据设置时间序列数据集的时间列列名称timestampTrain.feature_colsstr特征变量列表示能够判断设备是否异常的相关变量可以为多个多个之间用,分隔feature_0,feature_1Train.label_colstr代表时序时间点是否异常的编号异常点为 1正常点为 0labelTrain.freqstr / int时间频率如 1min、5min、1h1Train.input_lenint输入给模型的时间序列长度会按该长度对时间序列切片预测该长度下这一段时序序列是否有异常如输入长度为 96则表示预测 96 个时间点是否有异常96Train.epochs_itersint模型对训练数据的重复学习次数20Train.batch_sizeint批大小16Train.learning_ratefloat初始学习率0.0005Train.log_intervalint日志打印间隔10新特性Paddle 3.0 版本支持了 CINN 神经网络编译器在使用 GPU 设备训练时不同模型有不同程度的训练加速效果。在 PaddleX 中训练模型时可通过指定参数-o Train.dy2stTrue开启。更多说明模型训练过程中PaddleX 会自动保存模型权重文件默认为output如需指定保存路径可通过配置文件中-o Global.output字段进行设置PaddleX 对用户屏蔽了动态图权重和静态图权重的概念。在模型训练的过程中会同时产出动态图和静态图的权重在模型推理时默认选择静态图权重推理在完成模型训练后所有产出保存在指定的输出目录默认为./output/下通常有以下产出train_result.json训练结果记录文件记录了训练任务是否正常完成以及产出的权重指标、相关文件路径等train.log训练日志文件记录了训练过程中的模型指标变化、loss 变化等config.yaml训练配置文件记录了本次训练的超参数配置best_accuracy.pdparams.tar、scaler.pkl、.checkpoints、.inference模型权重相关文件包括网络参数、优化器、EMA、静态图网络参数、静态图网络结构等。4.3 模型评估在完成模型训练后可以对指定的模型权重文件在验证集上进行评估验证模型精度。使用 PaddleX 进行模型评估一条命令即可完成python main.py -c paddlex/configs/modules/ts_anomaly_detection/AutoEncoder_ad.yaml \ -o Global.modeevaluate \ -o Global.dataset_dir./dataset/ts_anomaly_examples与模型训练类似需要如下几步指定模型的.yaml配置文件路径此处为AutoEncoder_ad.yaml指定模式为模型评估-o Global.modeevaluate指定验证数据集路径-o Global.dataset_dir。其他相关参数均可通过修改.yaml配置文件中的Global和Evaluate下的字段来进行设置详细请参考 PaddleX 时序任务模型配置文件参数说明。更多说明在模型评估时需要指定模型权重文件路径每个配置文件中都内置了默认的权重保存路径如Evaluate.weight_path: output/best_model/model.pdparams如需要改变只需通过追加命令行参数的形式进行设置即可如-o Evaluate.weight_path./output/best_model/model.pdparams在完成模型评估后会产出evaluate_result.json其记录了评估的结果具体来说记录了评估任务是否正常完成以及模型的评估指标包含f1、recall和precision。4.4 模型推理与模型集成在完成模型的训练和评估后即可使用训练好的模型权重进行推理预测或者进行 Python 集成。4.4.1 模型推理通过命令行的方式进行推理预测只需如下一条命令。运行前请下载示例数据到本地python main.py -c paddlex/configs/modules/ts_anomaly_detection/AutoEncoder_ad.yaml \ -o Global.modepredict \ -o Predict.model_dir./output/inference \ -o Predict.inputts_ad.csv与模型训练和评估类似需要如下几步指定模型的.yaml配置文件路径此处为AutoEncoder_ad.yaml指定模式为模型推理预测-o Global.modepredict指定模型权重路径-o Predict.model_dir./output/inference指定输入数据路径-o Predict.input...。其他相关参数均可通过修改.yaml配置文件中的Global和Predict下的字段来进行设置详细请参考 PaddleX 时序任务模型配置文件参数说明。4.4.2 模型集成模型可以直接集成到 PaddleX 产线中也可以直接集成到你自己的项目中。1. 产线集成时序异常检测模块可以集成的 PaddleX 产线有时序异常检测只需要替换模型路径即可完成时序异常检测的模型更新。在产线集成中你可以使用服务化部署来部署你得到的模型。仓库中也提供了对应的产线 API 示例可参考 api_examples/pipelines/test_ts_anomaly_detection.py其中通过create_pipeline(pipelinets_anomaly_detection)创建产线并调用pipeline.predict(./test_samples/ts_ad.csv)完成推理。2. 模块集成你产出的权重可以直接集成到时序异常检测模块中可以参考快速集成的 Python 示例代码只需要将模型替换为你训练得到的模型路径即可即通过create_model(model_nameAutoEncoder_ad, model_dir你的模型路径)指定自定义模型。你也可以利用 PaddleX 高性能推理插件来优化模型的推理过程进一步提升效率详细的流程请参考 PaddleX 高性能推理指南。五、推理链路源码解读异常标签是怎么算出来的为帮助理解模型输出的含义这里结合源码对推理链路做一次透视。在 TSAdRunnerPredictor._build() 中预处理阶段按顺序构建了以下算子ReadTS读取输入时序文件TSCutOff按size即input_len对时序序列做截断切分TSNormalize可选读取模型目录下的scaler.pkl对序列做归一化若找不到该文件会直接报错BuildTSDataset按info_params构建模型输入数据集TimeFeature可选按time_feat配置生成时间特征TStoArray/TStoBatch将数据转为数组并组织为 batch随后交给runner执行模型推理。推理完成后进入后处理算子GetAnomaly见 paddlex/inference/models/ts_anomaly_detection/processors.py。其核心逻辑是对每个时间点计算模型重建/预测值与原始序列的均方误差作为异常分数anomaly_score mean((pred - ts)^2)再将异常分数与模型阈值model_threshold比较anomaly_score model_threshold的点标记为 1异常否则为 0正常最终以timestamp为索引、label为列名输出异常标签 DataFrame——这正是快速集成示例中anomaly字段的由来。理解这一点有助于你调整model_threshold相关的敏感性阈值越低越容易把正常点误判为异常反之则越容易漏报。至此从模型选型、快速推理、结果处理到数据准备、训练、评估、推理部署与源码原理PaddleX 时序异常检测模块的完整使用路径已全部打通你可以据此直接在自己的业务数据上开展异常检测实验与落地。赞分享人工智能大模型低代码计算机视觉深度学习模型推理服务【免费下载链接】PaddleXAll-in-One Development Tool based on PaddlePaddle项目地址https://gitcode.com/gh_mirrors/pa/PaddleX点击查看免费下载相关推荐Fish Redux 的 Redux 基础从 State、Action 到 Store 与 Middleware 的完整数据管理指南Fish Redux 的 Redux 基础从 State、Action 到 Store 与 Middleware 的完整数据管理指南 本篇技术指南以 doc/人工智能大模型低代码计算机视觉深度学习模型推理服务PaddleX 时序异常检测模块实战教程从快速推理到二次开发全流程PaddleX 时序异常检测模块实战教程从快速推理到二次开发全流程 时序异常检测是运维监控、金融风控与工业设备健康管理中的关键任务旨在从连续采集的时间序列中人工智能大模型低代码计算机视觉深度学习NLP模型推理服务RAG微调语音Wagmi v1 到 v2 完整迁移指南依赖、Hooks、Connectors 与 Config 的破坏性变更全解析Wagmi v1 到 v2 完整迁移指南依赖、Hooks、Connectors 与 Config 的破坏性变更全解析 Wagmi v2 重新设计了核心 API人工智能大模型低代码计算机视觉深度学习模型推理服务上一篇3大突破番茄小说下载器如何构建个人数字阅读生态下一篇5步快速部署ERPNext免费开源ERP系统完整实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询