Superwise Drift Detection Skill

Polar Sponsor
爱发电 赞助
.NET 9.0

使用 Superwise Compare Distribution 策略(Jensen‑Shannon 散度用于分类列)检测表格机器学习模型中的特征漂移。处理所有...

超智能的 Drift 检测技能

功能概述

超智能的 Drift 检测技能是一项面向实际任务的技能,主要用于当用户想要为模型设置漂移检测时, 引导它们通过;下面的步骤按顺序排列;

核心要点

  • 在移动到下一个步骤前完成每个步骤;
  • What you to between the model。
  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。

使用与执行

使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

结果检查与注意事项

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

Superwise 漂移检测技能

当用户希望为其模型配置漂移检测时,请按以下顺序引导其完成各步骤。必须完整执行当前步骤后,再进入下一步。

您需要向用户提供哪些信息

开始前,请用户提前提供以下内容:

  1. Superwise 凭据 — SUPERWISE_CLIENT_ID 和 SUPERWISE_SECRET_TOKEN(可在其 Superwise 账户的「设置 → API 密钥」中找到)
  2. 训练 CSV 文件 — 其模型所基于训练的 CSV 文件(仅需特征列;系统将自动添加 row_id 列)
  3. 模型名称 — 一个不含空格的简短标识符(例如:my_churn_model);该名称将用于在 Superwise 中命名数据集
  4. 推理端点(Inference endpoint) — 以下两种选项之一:
    • 选项 A:用户已部署运行中的模型端点。请其提供 URL。该端点必须返回 JSON 格式响应,结构为 {"records": [{...}, ...]},其中每个 record 包含与训练 CSV 完全一致的列名。
    • 选项 B:用户尚无可用端点,需自行部署。可参考 examples/dc-bikeshare-drift/app.py 中的 dc-bikeshare 示例作为模板。指导用户适配其自身的 predict.py,然后本地运行 python app.py。本地测试时,请设置 INFERENCE_ENDPOINT_URL=http://localhost:5001/predict。

步骤 1 — 安装依赖项

pip install -r requirements.txt

在技能根目录下创建一个 .env 文件,内容如下,并填入用户提供的对应值:

SUPERWISE_CLIENT_ID=<来自用户>
SUPERWISE_SECRET_TOKEN=<来自用户>
MODEL_NAME=<模型名称>
INFERENCE_ENDPOINT_URL=<来自用户对第 4 项问题的回答>
SUPERWISE_AUTO_TRIGGER=true
SUPERWISE_TRAINING_DATASET_ID=
SUPERWISE_TRAINING_DATASET_NAME=
SUPERWISE_TRAINING_CUBE_NAME=
SUPERWISE_INFERENCE_DATASET_ID=
SUPERWISE_INFERENCE_DATASET_NAME=
SUPERWISE_INFERENCE_CUBE_NAME=
SUPERWISE_DRIFT_POLICY_ID=
# 针对各列的独立策略配置 — 每行对应 setup_drift_policy.py 输出的一列:
# SUPERWISE_DRIFT_POLICY_ID_<列名>=<策略 ID>
SCHEDULE_HOUR_UTC=6
SCHEDULE_MINUTE_UTC=0
PORT=5000

数据集 ID 和策略 ID 字段将在步骤 2 和步骤 3 执行完成后填入。

步骤 2 — 创建 Superwise 数据集并上传训练数据

python setup_dataset.py 
    --training-csv path/to/training.csv 
    --model-name their_model_name

该命令将在 Superwise 中创建一个训练数据集和一个推理数据集,逐行上传训练 CSV 文件,并打印出数据集 ID 和 Cube 名称。

请将打印出的值复制到 .env 文件中:

SUPERWISE_TRAINING_DATASET_ID=<打印值>
SUPERWISE_TRAINING_DATASET_NAME=<打印值>
SUPERWISE_TRAINING_CUBE_NAME=<打印值>
SUPERWISE_INFERENCE_DATASET_ID=<打印值>
SUPERWISE_INFERENCE_DATASET_NAME=<打印值>
SUPERWISE_INFERENCE_CUBE_NAME=<打印值>

注意:训练 CSV 的列名只能包含字母、数字和下划线,且必须以字母开头。若发现任何列名违反此规则,请提醒用户修正。

步骤 3 — 创建漂移策略

python setup_drift_policy.py 
    --training-csv path/to/training.csv 
    --policy-name their_model_drift

该命令将为训练 CSV 中每一个分类型(字符串/布尔型)列,创建一条 Jensen-Shannon 散度(JSD)策略,用于比对训练数据集与推理数据集。数值型列会被跳过并输出警告 —— 这是当前 Superwise 平台的已知限制(暂不支持对数值型列使用 Wasserstein 距离进行漂移检测)。

请将主策略 ID(即首行打印出的策略 ID)复制到 .env 中:

SUPERWISE_DRIFT_POLICY_ID=<主策略 ID>
SUPERWISE_DRIFT_POLICY_ID_=<策略 ID>
SUPERWISE_DRIFT_POLICY_ID_=<策略 ID>
# ... 每条由 setup_drift_policy.py 打印出的额外列策略均需单独添加一行

请复制所有打印出的策略行(不仅限于第一行)—— _check_drift() 函数会自动识别并触发所有以 SUPERWISE_DRIFT_POLICY_ID* 开头的环境变量所对应的策略检查。

若用户仅希望监控特定若干列,可在命令中添加参数:--columns col1 col2 col3。

步骤 4 — 执行端到端漂移检测

python -c "
import os; os.chdir('.')
from dotenv import load_dotenv; load_dotenv()
from skill import run
result = run()
print(result)
"

该操作将执行以下流程:

  1. 从 INFERENCE_ENDPOINT_URL 获取推理记录
  2. 将这些记录写入 Superwise 推理数据集
  3. 触发所有已配置的漂移策略评估任务
  4. 轮询等待每项评估任务完成
  5. 若检测到漂移,则通过 OpenClaw 已有的 Telegram 连接发送告警
  6. 最终打印汇总结果

注意:一次完整检测耗时约 5–10 分钟(含推理请求、数据写入及全量列策略轮询)。为避免 exec 超时,请在后台或 PTY 会话中运行:

nohup python -c "..." &> drift_check.log &

步骤 5 — 设置周期性漂移检测

使用 skill.py 中定义的元数据,在 OpenClaw 中注册该技能:

  • 触发命令: /drift_check
  • 调度表达式: 0 6 * * *(每日 UTC 时间 06:00 执行 —— 可根据用户的推理频率调整)
  • 告警通道: 复用 OpenClaw 当前已配置的 Telegram 连接

如需生产环境部署,请指导用户使用随附的 render.yaml 将 scheduler.py 部署至 Render 平台,并将全部 .env 中的变量配置为 Render 的环境变量。

Telegram 告警

本技能复用 OpenClaw 已建立的 Telegram 连接,无需单独配置 Bot。技能中 skill.py 内的 _send_telegram() 函数将直接读取用户 OpenClaw 环境下的 TELEGRAM_BOT_TOKEN 和 TELEGRAM_CHAT_ID。若用户尚未在 OpenClaw 中配置 Telegram,请指引其查阅 OpenClaw 官方 Telegram 配置文档。

漂移告警格式如下:

  • Unhealthy(异常):列出漂移程度较高(得分 > 0.2)的特征,并提示预测结果可能不可靠
  • Healthy(正常):确认未检测到显著漂移,并展示各特征的具体漂移得分

参考示例:DC Bikeshare

examples/dc-bikeshare-drift/ 是一个完整的可运行示例,用户可在接入自身模型前,先运行该示例验证整套技能流程是否正常工作:

cd examples/dc-bikeshare-drift
pip install -r requirements.txt
python collect_training_data.py   # 获取真实站点数据,生成模拟历史数据
python train.py                   # 训练 RandomForest 分类器
python app.py                     # 启动本地 Flask 推理服务(端口 5001)

随后,在技能根目录下执行漂移检测,并指定:

INFERENCE_ENDPOINT_URL=http://localhost:5001/predict

该示例仅使用分类型特征(站点规模、是否配备电助力自行车、小时、日期类型、季节)来预测单车可用性 —— 所有特征均适用于 JSD 漂移检测。

模型重训练

当用户对其模型进行重训练时,请执行:

python setup_dataset.py 
    --training-csv path/to/new_training.csv 
    --model-name their_model_name 
    --retrain

该命令将创建一个带版本号的新训练数据集,同时保留原有推理数据历史。请更新 .env 中的训练数据集 ID 和 Cube 名称,然后重新运行 setup_drift_policy.py,以生成指向新基线数据集的漂移策略。

故障排查

  • 策略状态长期停留在 pending:请确认推理记录已在触发策略前成功写入推理数据集。若推理数据集为空,策略无法启动评估。
  • 首次运行即返回 unhealthy:若推理记录仅为单一时段快照(如全部记录均属同一小时/同一天/同一季节),该现象属预期行为。建议积累更长时间跨度的推理记录,以构建更具代表性的分布。
  • 数值型列被跳过:数值维度的 Wasserstein 距离计算是 Superwise 平台当前已知缺陷。临时解决方案包括:对数值列进行分桶(categorical bucketing)转为分类型,或等待 Superwise 平台后续修复。
  • 上传后 CubeJS Cube 未找到:新建数据集需数分钟才能在 Superwise 的 CubeJS 层完成注册。请等待 2–3 分钟后重试验证步骤。
  • 漂移检测被终止 / 无输出(收到 SIGTERM):完整检测耗时 5–10 分钟,易因环境 exec 超时而被强制中断。请改用后台会话运行:nohup python -c "from skill import run; run()" &> drift_check.log &,随后通过 tail -f drift_check.log 实时跟踪执行进度。

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

0

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

0

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

0

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

0

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

0

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

0

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习