MLシステムの監視項目一覧

# はじめに
* MLシステムを運用するときに監視するべき項目を一覧にまとめました
* 作成中。随時メンテします
* MLシステムの監視の考え方などは下記をご参照ください
    * [機械学習システムの監視入門](https://qiita.com/nokoxxx1212/items/de8764ce59439ab1af80)
    * [MLシステムにおけるモデル・データの監視【概要編】](https://future-architect.github.io/articles/20230412a/)
    * [Vertex AI Model MonitoringとEvidently AIで運用中のモデル・データを監視する【Input Metrics編】](https://future-architect.github.io/articles/20230413a/)
    * [Great ExpectationsでBigQueryのデータ品質を監視する](https://future-architect.github.io/articles/20230531a/)

# MLシステムの監視項目一覧

| No | 監視項目分類   | 監視項目                        | 監視項目詳細                                                                                                                                   | 監視方式例            |
|----|----------------|---------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------|
|  1 | Service health | Linter, Formatter               | Linter: ルールに則ったコードの記述ができているか。Formatter: コードのスタイルを確認して自動修正する                                            | flake8, black         |
|  2 | Service health | Unit Test                       | 使い回すコンポーネント向けのユニットテストを優先する。網羅検証として、特定の範囲の入力について、取り得る値の範囲が想定内か                     | pytest                |
|  3 | Service health | Integration Test / E2E Test     | 学習部分のコードでは、モデルが生成されていることまで確認し、モデルそのものの性質は別テストで検証する                                           | pytest                |
|  4 | Service health | Performance Test                | 性能テスト。データ量に対する処理時間・推論コストを確認しておく。                                                                               | pytest                |
|  5 | Service health | Uptime                          | 死活監視                                                                                                                                       | Cloud Monitoring(GCP) |
|  6 | Service health | Resource Usage                  | CPU・メモリ・GPU・GPUメモリ・ディスクなどのハードウェアリソースの使用率                                                                        | Cloud Monitoring(GCP) |
|  7 | Service health | Application / Infra Log         | アプリケーション・インフラの異常を検知する                                                                                                     | Cloud Logging(GCP)    |
|  8 | Service health | Request Count                   | 予測リクエストの頻度や量                                                                                                                       | Cloud Logging(GCP)    |
|  9 | Service health | Response Time                   | 予測リクエストから予測を返すまでの時間やその平均など。バッチの場合はバッチウィンドウに対する処理時間など                                       | Cloud Logging(GCP)    |
| 10 | Service health | Error Rate                      | エラー率、成功率                                                                                                                               | Cloud Monitoring(GCP) |
| 11 | Service health | Cost                            | インフラコスト                                                                                                                                 | Cloud Monitoring(GCP) |
| 12 | Data health    | Update Frequency                | データが定期的に入ってくるか。0件なのか、更新がなかったのか、更新がまだないのか                                                                | Great Expectations    |
| 13 | Data health    | Data Volume                     | 更新時に想定通りの量のデータが入ってきているか                                                                                                 | Great Expectations    |
| 14 | Data health    | Statistics                      | インプットデータの統計量が範囲内か。平均、分散などの統計量が期待する範囲内に収まっているか                                                     | Great Expectations    |
| 15 | Data health    | Missing Value                   | 欠損値が含まれているかや欠損値の割合など                                                                                                       | Great Expectations    |
| 16 | Data health    | Range of Value                  | 値が範囲内か。正の値が来るべきところに負の値が来ているなど                                                                                     | Great Expectations    |
| 17 | Data health    | outlier                         | 外れ値。平均から標準偏差の3倍以上離れているなど                                                                                                | Great Expectations    |
| 18 | Data health    | Correlations between Columns    | 列同士の相関。学習データでの相関と本番環境のデータでの相関に違いがみられないかなど                                                             | Great Expectations    |
| 19 | Data health    | Schema Change                   | columnが増減していないか。アップデートなどで入力形式が変わっていないかなど                                                                     | Great Expectations    |
| 20 | Data health    | Data Drift                      | 入力データの分布が時間とともに変化していないか。Concept, Data(Label, Feature)                                                                  | Evidently AI          |
| 21 | Model health   | Model Performance Test          | Gold Standardを利用するなどして、モデルの精度やFN/FPの傾向を測定する                                                                           | pytest                |
| 22 | Model health   | Metamorphic Testing             | モデルの推論間結果にあるべき関係が満たされているか                                                                                             |                       |
| 23 | Model health   | A/B Test                        | シャドウA/Bテスト、オンラインA/Bテスト                                                                                                         | A/Bテスト基盤         |
| 24 | Model health   | Statistics                      | 推論結果の統計量が範囲内か。平均、分散などの統計量が期待する範囲内に収まっているか                                                             | Great Expectations    |
| 25 | Model health   | Concept Drift                   | 入力データの分布が時間とともに変化していないか。Concept, Data(Label, Feature)                                                                  | Evidently AI          |
| 26 | Model health   | Skew                            | 学習データの分布と本番環境でのデータの分布に乖離がないか                                                                                       | Evidently AI          |
| 27 | Model health   | Accuracy                        | Accuracy、Precision、ROC AUCなど                                                                                                               | Evidently AI          |
| 28 | Model health   | Prediction Bias                 | 歪度、尖度など。学習時と本番環境時で予測の分布に変化がある場合には、学習データセットが本番環境でのデータをうまく再現できていない可能性がある。 | Evidently AI          |
| 29 | Model health   | Feature Contribution Ratio      | 特徴量寄与率。入出力の相関やShapleyなど。特徴量寄与率が時間経過とともに変化している場合には、精度が低下している可能性がある。                  | Evidently AI          |
| 30 | Model health   | Business Indicators             | CTRやCVRなど                                                                                                                                   | Great Expectations    |
| 31 | Model health   | Fairness and Bias               |                                                                                                                                                |                       |
| 32 | Model health   | Transparency and Explainability |                                                                                                                                                |                       |
| 33 | Model health   | Privacy                         |                                                                                                                                                |                       |
| 34 | Model health   | Security                        |                                                                                                                                                |                       |
| 35 | Model health   | Safety                          |                                                                                                                                                |                       |
| 36 | Model health   | Robustness                      |                                                                                                                                                |                       |

# その他
* 5W1Hで考える
    * 特に、「どのようなデータを取得するか」、「モニタリングのタイミング・頻度」、「分析方法」、「どのようなレポートを出力するか」、「検知後に誰がどう対応するか」
* 監視に必要なデータがそもそも揃っているか
    * 過去データが揃っているか、監視できる状態になっているか
* グループごとに評価することが大切
* 推論結果にモデルのバージョンを紐付けておく。後から分析しやすいように。
* Human in the loopの組み込み

# 参考
* [Step-by-step MLOps v1.2](https://speakerdeck.com/shisyu_gaku/step-by-step-mlops-v1-dot-2)
* [Model Monitoring in Practice (Tutorial)](https://sites.google.com/view/model-monitoring-tutorial)