Superwise Drift Detection Skill — Superwise 漂移检测 Skill
v1.0.0检测使用Superwise Compare Distribution策略(对于分类列使用Jensen-Shannon divergence)的表格ML模型中的特征漂移。处理每个...
运行时依赖
安装命令
点击复制技能文档
Superwise 漂移检测技能 当用户想要为他们的模型设置漂移检测时,按照以下步骤引导他们完成。每个步骤完成后再移动到下一个步骤。
所需信息 在开始之前,请要求用户提供以下信息:
Superwise 凭证 — SUPERWISE_CLIENT_ID 和 SUPERWISE_SECRET_TOKEN(在他们的 Superwise 账户中找到,路径为 Settings → API Keys) 训练 CSV — 模型训练所用的 CSV 文件(仅包含特征列;行 ID 列将自动添加) 模型名称 — 一个不包含空格的短标签(例如 my_churn_model);用于在 Superwise 中命名数据集 推理端点 — 两个选项之一: 选项 A:他们已经有一个运行中的模型端点。要求他们提供 URL。它必须返回 JSON 格式的 {"records": [{...}, ...]},其中每个记录包含与训练 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 cp .env.example .env 用用户提供的 Superwise 凭证和模型名称填充 .env 文件。设置 INFERENCE_ENDPOINT_URL 为他们对问题 4 的答案。
步骤 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 散度策略,比较训练数据集与推理数据集。数字列将被跳过并发出警告 —— 这是 Superwise 平台的已知限制(尚不支持数字列的 Wasserstein 距离)。将打印的主要策略 ID 复制到 .env 文件中: 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) " 这将: 从 INFERENCE_ENDPOINT_URL 获取推理记录 将它们摄入 Superwise 推理数据集 触发漂移策略评估 轮询直到评估完成 如果检测到漂移,通过 OpenClaw 的 Telegram 连接发送警报 打印摘要
步骤 5 — 安排定期漂移检查 使用 skill.py 中的元数据将技能注册到 OpenClaw: 触发命令:/drift_check 计划:0 6 (06:00 UTC 每日 —— 根据用户的推理频率进行调整) 警报:通过 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 设置文档。 漂移警报如下: 不健康:列出具有高漂移(得分 > 0.2)的特征,标记预测可能不可靠 健康:确认没有显著的漂移,并显示每个特征的得分
参考示例: 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 漂移检测。
重新训练 当...(未完成)