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

monitor-model-drift

pjt222
업데이트됨 Yesterday
2 조회
17
2
17
GitHub에서 보기
기타ai

정보

이 스킬은 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値
  • 任意: アラート用のビジネスメトリクス閾値
  • 任意: トレンド分析用の過去のドリフトレポート

手順

ステップ1: 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値 < 0.01)から始め、偽陽性率に基づいてチューニングする。

ステップ2: データドリフト検出の実装

複数の統計テストを使用したドリフト検出パイプラインを作成する。

# 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レポートを生成し、ドリフトした特徴を特定すること。

失敗時: 欠損値を確認する(補完または除去)、リファレンスと現在のデータが同じカラムを持つことを確認する、データセット間でデータ型が一致することを検証する。

ステップ3: 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)

期待結果: monitoring/reports/にHTMLレポートが生成され、分布比較を示すインタラクティブなチャートと共にブラウザで閲覧可能であること。

失敗時: 出力ディレクトリへの書き込み権限を確認し、Evidentlyバージョンが >= 0.4.0であることを確認し、データフレームに十分な行(100以上を推奨)があることを確認する。

ステップ4: コンセプトドリフト検出の実装

コンセプトドリフト(特徴とターゲット間の関係の変化)を検出するための予測パフォーマンスのモニタリング。

# 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の範囲)、特徴のラベルリーケージを確認する。

ステップ5: 自動アラートの設定

ドリフト検出をアラートシステム(Slack、PagerDuty、メール)と統合する。

# 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のファイアウォールルールを確認し、一時的なネットワーク障害のためのリトライロジックを実装する。

ステップ6: モニタリングジョブのスケジューリング

ドリフト検出をスケジュール(毎日または毎週)で自動実行する。

# 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、メール、PagerDuty)にアラートが配信される
  • スケジュールされたジョブが手動介入なしで7日以上実行される
  • 偽陽性率が < 5%(高い場合は閾値をチューニングする)
  • 100万行に対してドリフト検出が5分以内に完了する

よくある落とし穴

  • 古いリファレンスデータ: リファレンスデータセットを四半期ごとまたはモデル再トレーニング後に更新し、自然なデータの進化を反映する
  • サンプルサイズの不一致: 信頼性の高い統計のために、現在とリファレンスのデータセットが同様のサイズ(各1000行以上)であることを確認する
  • グランドトゥルースの欠如: コンセプトドリフトにはラベルが必要; リアルタイムラベルが利用できない場合は遅延ラベリングパイプラインを実装する
  • 季節性の混同: 週次/月次パターンが偽陽性をトリガーする可能性がある; 時間整列されたリファレンスウィンドウを使用するか、特徴の季節性を除去する
  • アラート疲労: 高い閾値から始めて、実際のモデル再トレーニング頻度に基づいて徐々に下げる
  • データ品質ドリフトの無視: 欠損値、外れ値、エンコーディングエラーを分布ドリフトとは別にモニタリングする
  • 集約メトリクスへの過度の依存: 特徴ごとの分析が重要; 集約ドリフトは個別の重要な特徴のシフトを隠す可能性がある
  • 予測分布の無視: グランドトゥルースなしでも、突然の予測分布のシフトは問題を示す

関連スキル

  • detect-anomalies-aiops - 運用メトリクスの時系列異常検出
  • deploy-ml-model-serving - モデルデプロイメントパターンとバージョニング
  • setup-prometheus-monitoring - インフラストラクチャメトリクスの収集
  • review-data-analysis - 統計分析の検証とピアレビュー

GitHub 저장소

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

연관 스킬

llamaguard

기타

LlamaGuard는 폭력 및 혐오 발언 등 6가지 안전 범주에서 LLM 입력과 출력을 조정하기 위한 Meta의 70-80억 파라미터 모델입니다. 94-95% 정확도를 제공하며 vLLM, Hugging Face 또는 Amazon SageMaker를 사용해 배포할 수 있습니다. 이 기술을 사용하여 AI 애플리케이션에 콘텐츠 필터링 및 안전 가드레일을 손쉽게 통합하세요.

스킬 보기

cost-optimization

기타

이 Claude Skill은 리소스 적정화, 태깅 전략, 지출 분석을 통해 개발자들이 클라우드 비용을 최적화할 수 있도록 지원합니다. AWS, Azure, GCP에서 클라우드 비용을 절감하고 비용 거버넌스를 구현하기 위한 프레임워크를 제공합니다. 인프라 비용을 분석하거나, 리소스를 적정화하거나, 예산 제약을 충족해야 할 때 사용하세요.

스킬 보기

quantizing-models-bitsandbytes

기타

이 스킬은 bitsandbytes를 사용하여 LLM을 8비트 또는 4비트 정밀도로 양자화하며, 최소한의 정확도 손실로 50-75%의 메모리 감소를 달성합니다. 제한된 GPU 메모리에서 더 큰 모델을 실행하거나 추론을 가속화하는 데 이상적이며, INT8, NF4, FP4와 같은 형식을 지원합니다. 이 스킬은 HuggingFace Transformers와 통합되어 QLoRA 학습 및 8비트 옵티마이저를 가능하게 합니다.

스킬 보기

dispatching-parallel-agents

기타

이 Claude Skill은 3개 이상의 독립적인 문제를 동시에 조사하고 해결하기 위해 다중 에이전트를 배치합니다. 공유 상태나 의존성 없이 해결 가능한 무관련 장애 시나리오에 맞게 설계되었습니다. 핵심 기능은 병렬 문제 해결로, 각 독립 문제 영역마다 하나의 에이전트를 할당하여 효율성을 극대화합니다.

스킬 보기