monitor-model-drift
について
このスキルは、Evidently AIおよびPSIやKSなどの統計的検定を用いて、本番環境のMLモデルにおけるデータドリフトと概念ドリフトを検出します。自動化されたアラートとレポート機能を設定し、パフォーマンスの低下を早期に捕捉します。モデルが予期せず劣化した場合、データ分布が変化した場合、または規制監視が必要な場合にご利用ください。
クイックインストール
Claude Code
推奨npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/monitor-model-driftこのコマンドをClaude Codeにコピー&ペーストしてスキルをインストールします
ドキュメント
監測模型漂移
完整配置檔與範本詳見 Extended Examples。
以統計檢定與自動化監測,偵測並告警生產 ML 模型之資料漂移與概念漂移。
適用時機
- 生產 ML 模型呈現不明性能下降
- 新資料分布與訓練資料不同
- 輸入特徵之季節性或時序偏移
- 須先發告警,免業務指標受擊
- 法規要求模型監測(如 SR 11-7、EU AI Act)
- 部署多模型版本,須漂移比較
輸入
- 必要:生產模型之預測與特徵(最近 30-90 日)
- 必要:參考資料集(訓練或驗證資料)
- 必要:真值標籤(或有延遲)
- 選擇性:特徵重要性分數或 SHAP 值
- 選擇性:告警之業務指標閾值
- 選擇性:歷史漂移報告,供趨勢分析
步驟
步驟一:安裝並配置 Evidently AI
以適當之依賴項建立監測框架。
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install Evidently and dependencies
pip install evidently pandas scikit-learn prometheus-client
# Create monitoring directory structure
mkdir -p monitoring/{reports,config,alerts}
建配置檔:
# monitoring/config/drift_config.py
from evidently.metric_preset import DataDriftPreset, TargetDriftPreset
from evidently.metrics import (
DatasetDriftMetric,
DatasetMissingValuesMetric,
ColumnDriftMetric,
)
# ... (see EXAMPLES.md for complete implementation)
預期: 配置檔已建,閾值合於模型之容忍度。
失敗時: 從保守閾值始(PSI > 0.2、KS p-value < 0.01),依誤報率調校。
步驟二:實作資料漂移偵測
建立含多種統計檢定之漂移偵測管道。
# monitoring/drift_detector.py
import pandas as pd
import numpy as np
from scipy.stats import ks_2samp, chi2_contingency
from evidently.report import Report
from evidently.metric_preset import DataDriftPreset
from evidently.metrics import ColumnDriftMetric, DatasetDriftMetric
from datetime import datetime, timedelta
# ... (see EXAMPLES.md for complete implementation)
預期: 漂移偵測順利運行,產出 JSON 報告含各特徵統計,並識別漂移之特徵。
失敗時: 檢查缺失值(補值或捨棄),確保參考與當前資料具相同欄位,驗證資料型別一致。
步驟三:產生 Evidently 報告
為人工檢視與調試,產生視覺化 HTML 報告。
# monitoring/generate_reports.py
from evidently.report import Report
from evidently.metric_preset import DataDriftPreset, TargetDriftPreset
from evidently.metrics import (
ColumnDriftMetric,
DatasetDriftMetric,
DatasetMissingValuesMetric,
)
# ... (see EXAMPLES.md for complete implementation)
預期: HTML 報告產於 monitoring/reports/,瀏覽器中可檢視,互動圖示分布比較。
失敗時: 驗輸出目錄之寫入權限,確認 Evidently 版本 >= 0.4.0,確保資料框有足夠列數(建議 >100)。
步驟四:實作概念漂移偵測
監測預測性能,以偵概念漂移(特徵與目標關係之變)。
# monitoring/concept_drift.py
import pandas as pd
import numpy as np
from sklearn.metrics import roc_auc_score, mean_squared_error, accuracy_score
from typing import Dict, List
import json
# ... (see EXAMPLES.md for complete implementation)
預期: 性能監測能偵知模型準確率/AUC 跌破閾值,預示概念漂移。
失敗時: 確真值標籤可得(或須延遲驗證批次作業),驗預測分數已適當校準(分類為 0-1 區間),查特徵中無標籤洩漏。
步驟五:建立自動告警
將漂移偵測與告警系統(Slack、PagerDuty、email)整合。
# monitoring/alerting.py
import requests
import json
from typing import Dict, List
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
# ... (see EXAMPLES.md for complete implementation)
預期: 偵知漂移時告警送至 Slack/PagerDuty,嚴重度依漂移占比與關鍵特徵涉及而定。
失敗時: 先以 curl 測試 webhook URL,驗 PagerDuty 整合金鑰權限正確,查防火牆對外 HTTPS 規則,對暫時性網路失敗實作重試邏輯。
步驟六:排程監測作業
將漂移偵測自動化,按排程運行(每日或每週)。
# monitoring/scheduler.py
import schedule
import time
import logging
from datetime import datetime, timedelta
import pandas as pd
logging.basicConfig(
# ... (see EXAMPLES.md for complete implementation)
或用 cron:
# Add to crontab (crontab -e)
# Run daily at 2 AM
0 2 * * * cd /path/to/monitoring && /path/to/venv/bin/python scheduler.py >> logs/cron.log 2>&1
或用 Airflow DAG:
# airflow/dags/drift_monitoring_dag.py
from airflow import DAG
from airflow.operators.python import PythonOperator
from datetime import datetime, timedelta
default_args = {
'owner': 'ml-team',
'depends_on_past': False,
# ... (see EXAMPLES.md for complete implementation)
預期: 監測按排程自動運行,產報告,僅於漂移逾閾值時送告警,並記錄所有活動。
失敗時: 查排程程序是否運行(ps aux | grep scheduler),驗 cron 服務啟動,確資料來源可達,覽日誌中之例外,作業未運行時設「死人開關」告警。
驗證
- PSI 與 KS 檢定計算對已知漂移情境產出預期值
- Evidently HTML 報告正確渲染,呈分布疊加圖
- 關鍵特徵之漂移即刻觸發告警
- 概念漂移偵測器可於 3 日內識別性能下降
- 告警送至所有所配通道(Slack、email、PagerDuty)
- 排程作業 7+ 日可無人介入運行
- 誤報率 < 5%(若高,調校閾值)
- 漂移偵測對 1M 列資料於 5 分內完成
常見陷阱
- 參考資料陳舊:每季或模型重訓後更新參考資料集,反映自然之資料演變
- 樣本大小不匹:確保當前與參考資料集大小相近(各 >1000 列),以求統計可靠
- 無真值標籤:概念漂移需標籤;若即時標籤不可得,實作延遲標記管道
- 季節性混淆:每週/每月模式可能誤報;用時間對齊之參考視窗或對特徵去季節化
- 告警疲勞:從高閾值始,依實際模型重訓週期漸降
- 忽略資料品質漂移:監測缺失值、離群值、編碼錯誤,與分布漂移分而視之
- 過度依賴合計指標:每特徵分析至要;合計漂移可掩個別關鍵特徵之偏移
- 忽略預測分布:縱無真值,預測分布之驟變即是訊號
相關技能
detect-anomalies-aiops- 時序異常偵測,用於運維指標deploy-ml-model-serving- 模型部署模式與版本管理setup-prometheus-monitoring- 基礎設施指標蒐集review-data-analysis- 統計分析驗證與同儕審查
GitHub リポジトリ
関連スキル
evaluating-llms-harness
テストこのClaudeスキルは、lm-evaluation-harnessを実行し、MMLUやGSM8Kなど60以上の標準化学術タスクでLLMをベンチマークします。開発者がモデルの品質を比較し、トレーニングの進捗を追跡し、学術的な結果を報告するために設計されています。このツールはHuggingFaceやvLLMモデルを含む様々なバックエンドをサポートしています。
cloudflare-cron-triggers
テストこのスキルは、cron式を使用してWorkersをスケジュールするためのCloudflare Cron Triggersの実装に関する包括的な知識を提供します。定期的なタスクの設定、メンテナンスジョブ、自動化されたワークフローの構築を網羅し、無効なcron式やタイムゾーン問題といった一般的な課題への対処法も含みます。開発者はこれを使用して、スケジュールされたハンドラーの設定、cronトリガーのテスト、WorkflowsやGreen Computeとの連携を構成できます。
webapp-testing
テストこのClaude Skillは、Playwrightベースのツールキットを提供し、Pythonスクリプトを通じてローカルWebアプリケーションのテストを可能にします。フロントエンドの検証、UIデバッグ、スクリーンショット撮影、ログ表示を実現し、サーバーライフサイクルを管理します。ブラウザ自動化タスクにご利用いただけますが、コンテキストの汚染を避けるため、スクリプトのソースコードを読むのではなく直接実行してください。
finishing-a-development-branch
テストこのスキルは、開発者がテストの合格を確認し、構造化された統合オプションを提示することで、完成した作業を仕上げることを支援します。実装が完了した後のマージ、PR作成、ブランチの整理といったワークフローを案内します。コードが準備できてテスト済みの際に使用し、開発プロセスを体系的に完了させましょう。
