信頼性の高い機械学習―SRE原則を活用したMLOps を読んだ
オライリー様よりご恵贈いただきました。ML寄りのエンジニアとして継続的なモデルの訓練とデリバリーを伴なうMLシステムの信頼性をどう向上させるのかが気になって読みました。
本書では、ソフトウェアシステムの信頼性と安定性を保つことに優れたアプローチであるSRE(サイトリライアビリティエンジニアリング)の原則を適用し、信頼性が高く、効果的で、責任のある機械学習システムを構築し運用するための方法を紹介します。毛糸を販売している仮想のオンラインストア「yarnit.ai」を例に用いつつ、本番環境でのモデルモニタリングの方法から、製品開発組織で調整されたモデル開発チームを運営する方法まで解説します。
目次
1章 はじめに
2章 データマネジメント
3章 ML モデルの基礎
4章 特徴量と訓練データ
5章 モデルの確実性と品質の評価
6章 公正さ、プライバシー、倫理的なML システム
7章 ML モデル訓練システム
8章 サービス運用
9章 モデルの監視と可観測性
10章 継続的なML
11章 障害対応
12章 製品とML の関わり方
13章 ML の組織への統合
14章 実践的なML 組織の事例
15章 ケーススタディ:MLOps の実践
感想
私の少ない経験上ですがMLシステムの障害はパターンが多様で、発生から検知まで時間がかかるものばかりです。訓練データの汚染、データパイプラインの障害、モデルの訓練バッチやオンライン推論モジュールのバグ、予測対象のドリフト、あるいは予測による介入が引き起すフィードバックループによるもの、カテゴリ値の意味が変わった等々。予測パフォーマンスの低下を検知したとしても、予測対象が変わったのが原因なのか、推論側の問題なのか、調べる仕組みがなければ調査するのも一苦労です。その様なつらみと日々向きあっている開発者は得る物が多い本でしょう。私は特に9章の「モデルの監視と可観測性」と11章「障害対応」が興味深く読めました。
本書では機械学習システムに関係するコンポーネントから組織までを対象に以下の点が述べられていました。
- どんな障害が起こりうるか
- すばやく異常を検知する仕組み
- 障害時のオプション
- 信頼性を高めるための方策および組織戦略
何を監視すべきかという点では、予測モデル開発に軸足を置いているエンジニアはドメインシフト(データ分布の変化)や予測性能の変動、ビジネス指標に興味関心がある一方でストレージのメトリクスやスケジューラーが訓練ジョブをキックしたかどうか、といったもっと手前のシステムメトリクスは見落すかもしれません。本書は両者をカバーしているので読み手の不得意な領域についての気づきがありそうです。実際に私がML運用ダッシュボードを作り込むと、予測精度の推移、訓練データの変化、ビジネス指標は真っ先に可視化されるもののシステム面のメトリクスは不足しがちでした。先に本書に出会っていれば片手落ちな状況から早く脱することができただろうなと思います。
データや予測性能の監視については、手軽に実践可能なトピックが挙げられています。モデルの性能変化を検知するためのゴールデンセットの作成や簡易的なドリフト(分布の変化)の検知は省コストで導入できて効果があるでしょう。ドリフト検知の詳細には踏みこんでいませんが、そもそもそこが気になる人は自分で調べれば良いはずです。全体的に実現手段の詳細(ライブラリや論文)には触れていないので長く読める本だと思います。
11章の障害対応と15章のケーススタディは「もし自分の運用するシステムで同じ障害が起きたら対処できるか」と考えながら読むとより楽しい(?)です。SREチームの有無やチームなんてものは無く1人で全部やらなきゃいけない状況等、様々あると思いますが改善のネタは得られるでしょう。これから運用をはじめる場合も「こんな壊れ方するんだ」と記憶に留めておくだけで何かあった時の役に立つと感じました。
Discussion