MCP HubMCP Hub
스킬 목록으로 돌아가기

monitor-model-drift

pjt222
업데이트됨 2 days ago
17
2
17
GitHub에서 보기
테스팅aitestingautomationdesigndata

정보

이 스킬은 Evidently AI와 PSI, KS 같은 통계 테스트를 사용해 프로덕션 ML 모델의 데이터 및 개념 드리프트를 감지합니다. 자동화된 경고 및 보고 체계를 구축하여 성능 저하를 조기에 포착할 수 있습니다. 모델이 예기치 않게 성능이 저하되거나 데이터 분포가 변화할 때, 또는 규정 준수 모니터링이 필요할 때 사용하세요.

빠른 설치

Claude Code

추천
기본
npx skills add pjt222/agent-almanac -a claude-code
플러그인 명령대체
/plugin add https://github.com/pjt222/agent-almanac
Git 클론대체
git 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 저장소

pjt222/agent-almanac
경로: i18n/wenyan-lite/skills/monitor-model-drift
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

연관 스킬

evaluating-llms-harness

테스팅

이 Claude Skill은 MMLU, GSM8K를 포함한 60개 이상의 표준화된 학술 과제에서 LLM 성능을 벤치마크하기 위해 lm-evaluation-harness를 실행합니다. 개발자들이 모델 품질을 비교하고, 학습 진행 상황을 추적하거나 학술 결과를 보고할 수 있도록 설계되었습니다. 이 도구는 HuggingFace와 vLLM 모델을 포함한 다양한 백엔드를 지원합니다.

스킬 보기

cloudflare-cron-triggers

테스팅

이 스킬은 cron 표현식을 사용하여 Worker를 스케줄링하기 위한 Cloudflare Cron Triggers 구현에 관한 포괄적인 지식을 제공합니다. 주기적 작업, 유지보수 작업, 자동화된 워크플로우 설정 방법을 다루며, 잘못된 cron 표현식이나 시간대 문제 같은 일반적인 이슈들을 해결하는 방법을 포함합니다. 개발자들은 이를 통해 스케줄된 핸들러 구성, cron 트리거 테스트, Workflows 및 Green Compute와의 연동 작업을 수행할 수 있습니다.

스킬 보기

webapp-testing

테스팅

이 Claude Skill은 Python 스크립트를 통해 로컬 웹 애플리케이션을 테스트하기 위한 Playwright 기반 툴킷을 제공합니다. 프론트엔드 검증, UI 디버깅, 스크린샷 캡처, 로그 확인 기능을 지원하며 서버 라이프사이클을 관리합니다. 브라우저 자동화 작업에 사용하되 컨텍스트 오염을 방지하기 위해 소스 코드를 읽지 않고 스크립트를 직접 실행하세요.

스킬 보기

finishing-a-development-branch

테스팅

이 스킬은 테스트 통과를 확인한 후 체계적인 통합 옵션을 제시하여 개발자가 완성된 작업을 마무리하도록 돕습니다. 구현이 완료된 후 머지, PR 생성, 브랜치 정리와 같은 워크플로우를 안내합니다. 코드가 준비되고 테스트가 완료되었을 때 개발 프로세스를 체계적으로 마무리하기 위해 사용하세요.

스킬 보기