Merlion
Salesforce时序智能机器学习框架
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Salesforce时序智能机器学习框架
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这样的场景:某大型电商平台的运维团队正在监控全国数百个服务器节点的实时指标——CPU 使用率、内存占用、网络流量、订单处理延迟——每一个指标都是一条随时间不断延伸的数据流。某天,系统突然报警"异常",运维工程师需要立刻回答两个问题:这个点是不是真的异常(异常检测)?以及接下来几小时流量会怎么变化(时间序列预测)?
在没有专门工具的时代,工程师可能需要分别研究 scikit-learn 的 IsolationForest 做异常检测,再用 statsmodels 的 ARIMA 做预测,最后自己写一堆胶水代码把两者串起来——光搭一个基准 pipeline 就得好几天。而 Merlion 的出现,就是为了终结这种"重复造轮子"的困境。
时间序列分析并不是一个新领域,但长期以来,工业界面临一个尴尬的现实:学术界发布的算法往往停留在论文层面,缺乏统一、易用的工程实现。一个典型例子是 Facebook 的 Prophet——论文发表于 2017 年,工程化后解决了大量业务场景需求,但若想把它和其他算法(如 ARIMA、随机森林)放在同一个框架下对比评估,工程师仍然需要自己做大量对接工作。
Salesforce 作为全球最大的企业软件公司之一,其产品线(如 Einstein Analytics、Tableau)有大量时序预测和异常检测需求。内部团队发现,每次启动新项目时,数据科学家们都在重复相同的"搭架子"工作——数据加载、格式转换、模型调参、结果评估,每个环节都有坑,每个项目都要踩一遍。
2021 年,Salesforce AI 研究团队决定将内部沉淀的时序能力开源,推出了 Merlion(以神话中的喷火神兽命名,寓意"从数据海洋中识别异常")。核心目标非常明确:提供一个开箱即用、benchmark 完善、模型丰富的时间序列智能一站式框架。
Merlion 内置了 13+ 种异常检测算法,覆盖从经典统计方法到深度学习模型的完整光谱:
| 类别 | 代表算法 |
|---|---|
| 经典统计 | Spectral Residual、Stat Threshold |
| 树集成 | Isolation Forest、Random Cut Forest |
| 密度方法 | LOF、DAGMM、DBL |
| 深度学习 | AutoEncoder、VAE、LSTM-ED、Deep Point Anomaly Detector |
其中 Random Cut Forest 来自 Amazon SageMaker 的内置算法实现,Spectral Residual(光谱残差) 则来自微软 SIGIR 2019 的 Research 工作——Merlion 一次性将这些业界验证过的算法收入囊中。
每个检测器都遵循统一的 API 设计:model = DefaultDetector() 即可获得一个"傻瓜式"异常检测器,自动选择合适的预处理和阈值策略;高级用户则可以通过 model = IsolationForest() 完全掌控每个参数。

Merlion 异常检测可视化:原始时序(灰色)叠加异常分数(红色区域)
Merlion 的预测模型库同样丰富,涵盖 15+ 种算法:
其中 Informer 和 Autoformer 是 2020-2021 年顶会(SIGKDD、AAAI)上的最新成果,Merlion 是最早一批将其工程化的开源库之一。
Merlion 还支持外生回归变量(Exogenous Regressors)——你可以把天气数据、促销活动、节假日标记等外部因素作为额外输入一并喂给模型,这在零售销量预测场景中非常实用。

Merlion 多步预测可视化:预测值(橙色)与真实值(蓝色)对比
除了点和区间预测,Merlion 还支持检测数据分布发生根本性变化的变点场景——比如用户行为模式突变、系统调用模式改变等,对应金融风控、工业 IoT 等场景。
Merlion 最具差异化价值的特性,是它背后那套完整的 Benchmark 体系。项目提供了两个标准化评测脚本:
benchmark_anomaly.py:在 NASA-HDEX、SMD、SWaT、UCR 等多个公开数据集上评估异常检测算法benchmark_forecast.py:在 M4、Informer 官方数据集等上评估预测模型每个算法在不同数据集上的 Precision/Recall/F1 都有详细记录。这对于研究员来说是公平的对比基准,对于工程师来说是选型依据——再也不用靠"感觉"选算法了。
每个模型族都配备了 AutoML 引擎:AutoETS、AutoSARIMA、AutoProphet,能够自动搜索最优的季节性周期、差分阶数、趋势项等参数。用户不需要成为时间序列专家,只需调用 AutoETS() 即可获得接近最优配置的预测器。
Merlion 设计了一套统一的 Pipeline:
加载数据 → 数据转换 → 模型训练 → 后处理 → 评估
每个环节都抽象为可插拔的组件:
这种设计让用户可以在不改变主代码的情况下,自由替换底层算法——今天用 ARIMA,明天换 Prophet,后天上 Transformer,Pipeline 代码基本不变。
Merlion 内置了一个基于 Dash 的交互式可视化 Dashboard:


用户只需上传 CSV/Parquet 文件,选定目标列,Dashboard 会自动完成:
安装方式:pip install salesforce-merlion[dashboard],一行命令启动:python -m merlion.dashboard。
pip install salesforce-merlion
依赖:Python 3.7+,numpy、pandas、scikit-learn、torch(可选,深度学习模型需要)
pip install salesforce-merlion[deep-learning]
pip install salesforce-merlion[dashboard]
pip install salesforce-merlion[spark]
项目提供官方 Dockerfile,基于 python:3.9-slim,包含 Java 11(Random Cut Forest 需要):
cd docker && docker build -t merlion .
docker run -it merlion python
项目提供了 Spark on K8s 的 YAML manifest(位于 k8s-spec/),支持在 K8s 集群上运行分布式异常检测/预测任务。
merlion/
├── models/ # 核心模型
│ ├── anomaly/ # 异常检测器(13+种)
│ ├── forecast/ # 预测模型(15+种)
│ ├── automl/ # 自动调参引擎
│ └── ensemble/ # 模型集成(Bagging/Boosting)
├── transform/ # 数据预处理管道
├── post_process/ # 后处理(阈值、平滑)
├── evaluate/ # 评估指标
├── dashboard/ # Dash 可视化界面
└── utils/ # 工具函数
主要依赖:
torch>=1.9.0)⚠️ Merlion 项目已于 2023 年正式归档(Archived),进入维护模式,不再接受新功能开发。但这并不意味着它过时:
pip install[dashboard],且 docker-compose.yml 缺失,不支持 Docker Compose 一键拉起Merlion 是时间序列领域难得的工业级开源框架。它的价值不仅在于"收集了很多算法",更在于那套从数据加载、模型选择、AutoML 调参、benchmark 评测到结果可视化的完整 Pipeline 设计。对于需要快速搭建时序智能系统的团队,Merlion 能将原本数周的搭建工作压缩到数小时。
当然,项目归档带来的维护风险是真实存在的——如果你的团队需要长期依赖并持续更新,建议做好 Fork 维护的规划。
pip install salesforce-merlion