0Pricing
Learn AI with Python · レッスン

本番環境でのモデル性能監視

データドリフトの検知、モデル劣化のシグナル、再学習のトリガー、evidentlyライブラリについて学習します。

「本番環境でのモデル性能監視」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。

本番環境で監視する理由

リリース時には高い性能を示したモデルも、環境の変化に伴って気付かないうちに劣化することがあります。監視によってこのドリフトを早期に検出し、ビジネス指標がひそかに大きく悪化する前に、再学習のタイミングを判断できます。

データドリフトとコンセプトドリフト

  • データドリフト: 入力データの分布が変化すること(新しい顧客構成など)です。
  • コンセプトドリフト: 入力と目的変数の関係が変化すること(解約を予測する要因が変わるなど)です。

どちらも精度を低下させますが、監視では異なる方法で検出します。

データドリフトのPSI

Population Stability Index(PSI)は、ある特徴量の現在の分布とベースラインを比較します。両方をビンに分け、各ビンについて(now% - base%) * ln(now% / base%)を計算して合計します。

PSI値の読み方

目安は次のとおりです。PSI < 0.1は大きな変化なし、0.1-0.25は中程度の変化(調査が必要)、> 0.25は大きな変化(再学習が必要になる可能性が高い)を表します。PSIは特徴量ごとに計算します。

import numpy as np

def psi(base, now, bins=10):
    edges = np.percentile(base, np.linspace(0, 100, bins + 1))
    b_pct = np.histogram(base, edges)[0] / len(base) + 1e-6
    n_pct = np.histogram(now, edges)[0] / len(now) + 1e-6
    return np.sum((n_pct - b_pct) * np.log(n_pct / b_pct))

分布のKS検定

Kolmogorov-Smirnov(KS)検定は、2つの連続分布を比較します。p値が小さい場合、本番環境の分布が学習時の分布と有意に異なることを意味し、ドリフトを示します。

from scipy.stats import ks_2samp

stat, pvalue = ks_2samp(train_feature, prod_feature)
if pvalue < 0.05:
    print("Distribution drift detected")

PSIとKS

  • PSI: 解釈しやすい単一の数値で、ダッシュボードやしきい値の設定に適しています。
  • KS: p値を使う統計的な仮説検定で、連続特徴量に対してより厳密です。

多くのチームでは、両方を並べて報告します。

Evidentlyとは

Evidentlyは、ドリフトや品質のレポート作成を自動化するオープンソースライブラリです。各メトリクスを手作業で実装する代わりに、あらかじめ用意されたチェックを組み合わせ、HTML/JSONレポートを取得できます。

# pip install evidently
from evidently.report import Report
from evidently.metric_preset import DataDriftPreset

DataDriftPresetレポートの構築

DataDriftPresetは、すべての列に対して一連のドリフト検定を実行し、参照用(学習時)データセットと現在の(本番環境)データを比較します。

report = Report(metrics=[DataDriftPreset()])
report.run(
    reference_data=train_df,
    current_data=prod_df
)
report.save_html("drift_report.html")

プログラムからの結果の抽出

レポートをdictとして出力してアラート処理に渡すと、スケジュールに従って監視を自動実行できます。

result = report.as_dict()
drift_share = result["metrics"][0]["result"]["dataset_drift"]
print("Dataset drift flag:", drift_share)

精度低下へのアラート

正解ラベルを取得できる場合は、実運用中の精度を追跡し、しきい値を下回ったときにアラートを発生させます。これは、再学習が必要な状態を示す最も直接的なシグナルです。

THRESHOLD = 0.85

if live_accuracy < THRESHOLD:
    send_alert(f"Accuracy dropped to {live_accuracy:.2f}")

ループを閉じる

優れたモニタリングはアクションにつながります。ドリフトを検出 -> アラートを発行 -> 再トレーニングパイプライン(前のレッスンで使用したMakefile/registry)をトリガー -> 新しいバージョンをデプロイします。対応計画のないモニタリングは、単なるノイズにすぎません。

クイックチェック

モニタリングに関する知識を確認しましょう。

まとめ

本番環境のモデルをモニタリングしました。PSIとKS testでデータドリフトを検出し、EvidentlyでDataDriftPresetを使ったレポートを自動生成しました。また、精度がしきい値を下回ったときにアラートを発行し、再トレーニングをトリガーする方法も学びました。これでMLOpsコースは終了です。次のコースは、FastAPIによるAIモデルのサービングです。

よくある質問

「本番環境でのモデル性能監視」レッスンは無料ですか?

はい。「本番環境でのモデル性能監視」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。

「本番環境でのモデル性能監視」で何を学びますか?

データドリフトの検知、モデル劣化のシグナル、再学習のトリガー、evidentlyライブラリについて学習します。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Learn AI with Pythonを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「本番環境でのモデル性能監視」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このLearn AI with Pythonレッスンでコードを書いて実行できますか?

はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. MLflowによる実験管理
  2. モデルレジストリとバージョニング
  3. 再現可能なMLパイプラインの構築
  4. 本番環境でのモデル性能監視
← Learn AI with Pythonに戻る