本文へ移動

ホーム / ML / 第4部 学習と推論の基盤

第4部 学習と推論の基盤・第9章

MLOps

★★★ 必須9トピック・面接 5問

モデルを継続的に作り直して届ける仕組みを押さえる。

9.1ML パイプライン

用語★★☆ 重要
ひとことで

データの取得から学習・評価・登録・デプロイまでを自動で流す。

ML パイプラインは、データの取得 → 前処理・特徴量 → 学習 → 評価 → モデルの登録 → デプロイまでを、手作業ではなく決まった手順として自動で流す仕組みです。ノートブックで手で動かしていると、誰がいつどのデータで作ったモデルなのか分からなくなり、再学習のたびにミスが起きます。各段階を独立した処理(コンテナなど)にし、入力と出力を記録しておくと、途中からやり直したり、同じ結果を再現したりできます。

評価の関門を通ったモデルだけが、登録・デプロイされるデータ取得特徴量学習評価関門今より良い?登録デプロイきっかけ:定期・ドリフト・精度の低下下回ったら止める各段の入力と出力を記録しておく
ML パイプライン
道具特徴
Kubeflow PipelinesKubernetes の上で動くオープンソース。自前のクラスタで細かく制御したいとき
Vertex AI PipelinesGoogle Cloud のマネージドサービス。Kubeflow Pipelines と同じ書き方で、クラスタの管理が要らない
SageMaker PipelinesAWS のマネージドサービス。SageMaker の学習・モデルレジストリとつながる
Airflow・Dagster・Prefect など汎用のワークフローの道具。データの処理と一緒に ML の処理も流せる

どれを選ぶかは、すでに使っているクラウドやデータ基盤に合わせるのが基本です。小さく始めるなら、定期実行のジョブと実験管理の道具の組み合わせでも十分です。

面接ではこう答える

ML パイプラインは、データの取得、前処理と特徴量、学習、評価、モデルの登録、デプロイまでを、手作業ではなく決まった手順として自動で流す仕組みです。ノートブックで手で動かしていると、誰がいつどのデータで作ったモデルか分からなくなり、再学習のたびにミスが起きます。各段階を独立した処理にして入力と出力を記録しておけば、途中からやり直したり再現したりできます。道具は、すでに使っているクラウドやデータ基盤に合わせて選びます。

ひとことで

再学習したモデルを、今のモデルと同じ評価データで比べ、基準を満たしたときだけ先に進める関門。

自動で再学習しても、関門(ゲート)を通ったものだけ先へ進めるきっかけ定期・精度低下・ドリフト再学習同じパイプライン評価ゲート今のモデルと比較登録段階的に本番へ下回ったら止めて通知
再学習と評価ゲート

再学習のきっかけ:

  • 定期:毎週・毎月など。一番簡単で、多くの場合はこれで足ります。データの変化の速さに合わせて間隔を決めます。
  • 精度の低下:正解が分かって精度を測れる場合に、しきい値を下回ったら。
  • ドリフトの検知:入力の分布が大きく変わったら(ドリフトを参照)。
  • データやコードの変更:新しい特徴量を足した、ラベルの定義を変えたなど。

自動で再学習しても、自動で本番に出してよいとは限りません。今のモデルと同じ評価データで比べ、下回ったら止める関門(ゲート)を必ずパイプラインに入れます。

ゲートで見るもの例
全体の指標今のモデル以上(または下がり幅が 0.5 ポイント以内)
重要な区分ごとの指標新規ユーザー・地域ごとで大きく下がっていない
予測の分布陽性の割合が急に変わっていない
速さ・大きさレイテンシ・メモリが上限以内

面接ではこう答える

再学習のきっかけには、定期、精度の低下、ドリフトの検知、データやコードの変更があり、多くの場合は定期で足ります。ただし自動で再学習しても、自動で本番に出してよいとは限りません。今のモデルと同じ評価データで比べ、全体の指標だけでなく重要な区分ごとの指標、予測の分布、レイテンシも確かめる評価ゲートをパイプラインに入れ、下回ったら止めて通知します。

9.3モデルレジストリ

用語★★☆ 重要
ひとことで

モデルをバージョン付きで管理し、評価を通ったものだけを段階的に本番へ出す。

モデルレジストリは、学習したモデルをバージョン付きで保存し、「どのデータとコードで作ったか」「評価の結果」「今どの段階か(検証中・本番・引退)」を一緒に管理する場所です。MLflow のモデルレジストリや、各クラウドのサービスがあります。本番で動いているモデルがどれか、1つ前はどれかがすぐ分かることが、安全なデプロイとロールバックの前提になります。

版ごとに「どのデータとコードで作り、今どの段階か」を管理する登録v12:データ・指標検証中シャドー・カナリア本番今使われている版引退1つ前は残す本番の版とその1つ前がすぐ分かれば、設定の切り替えだけで戻せる
モデルレジストリの段階
登録するもの理由
モデルのファイルと前処理これだけで推論を再現できるように
学習データの版・コードのコミットどう作ったかを追える
評価の結果版どうしを比べる・ゲートの判断の記録
入力の形(スキーマ)推論側との約束。違う入力を早く検知する
段階と承認した人いつ誰が本番にしたか

面接ではこう答える

モデルレジストリは、学習したモデルをバージョン付きで保存し、どのデータとコードで作ったか、評価の結果、今どの段階か、を一緒に管理する場所です。本番で動いている版と1つ前の版がすぐ分かることが、安全なデプロイとロールバックの前提になります。モデルのファイルだけでなく、前処理と入力の形も一緒に登録し、推論側はレジストリから版を指定して読み込むようにします。

ひとことで

シャドーは新しいモデルに本番と同じ入力を送って結果を記録だけする方法、カナリアは一部の利用者にだけ新しいモデルの結果を返す方法。

段階的に本番へ出す:オフラインの評価を通っても、本番のデータで初めて分かる問題があるので、いきなり全員に出しません。

段階的に広げ、決めた条件を超えたらすぐ前の版に戻すシャドー結果は返さない1%10%50%100%前の版に戻す設定の切り替えだけでエラー率・予測の分布が条件を超えたら
シャドーとカナリアで段階的に出す
方法やり方分かること
シャドーデプロイ新しいモデルにも本番と同じリクエストを送って予測させるが、その結果は利用者に返さず記録だけするエラー・レイテンシ・予測の分布が今のモデルとどれくらい違うか。利用者への影響はない
カナリアリリース一部(例:1% → 10% → 50% → 100%)の利用者だけに新しいモデルの結果を返す実際の利用者への影響。問題があれば一部で止められる
A/B テスト利用者をランダムに分けて、ビジネスの指標を統計的に比べる本当に良くなったか

面接ではこう答える

新しいモデルはいきなり全員には出さず、段階的に出します。シャドーデプロイは、本番と同じリクエストを新しいモデルにも送って予測させますが、結果は利用者に返さず記録だけするので、利用者への影響なしにエラーやレイテンシ、予測の分布を比べられます。カナリアリリースは、1% から 10%、50% のように一部の利用者にだけ新しいモデルの結果を返し、実際の影響を見ながら広げます。最後に A/B テストで本当に良くなったかを確かめます。

9.5ロールバック

★★★ 必須
作り直さずに、「本番」が指す版を前の版に付け替える本番(別名)v12(問題あり)v11(1つ前)特徴量・前処理もv11 に合わせて戻す戻す条件(エラー率・陽性の割合など)は事前に決めておく
ロールバック:作り直さず、指す版を替える

ロールバック:問題が起きたら、すぐ前のモデルに戻せるようにしておきます。

  • 前のバージョンのモデルをレジストリに残し、設定の切り替えだけで戻せるようにする(作り直さない)。
  • 戻す条件を事前に決める(例:エラー率が 1% を超えた、予測の陽性の割合が 2倍になった)。自動で戻す仕組みにできればなお良いです。
  • モデルと特徴量・前処理の版を一緒に管理する。モデルだけ戻して、特徴量の作り方が新しいままだと合わなくなります。
ひとことで

コードのテストに加え、データの検証とモデルの品質の関門を自動で通してから出す仕組み。

普通のソフトウェアの CI/CD はコードが変わったときに動きますが、ML ではデータが変わるだけでもモデルが変わります。そのため、コードのテストにデータのテストとモデルのテストを足します。

コードのテストに加えて、データとモデルのテストを通すコード単体テスト・型データスキーマ・範囲・件数モデルゲート・区分ごと推論入出力・速さ・負荷モデルの CI/CD は「コードが変わったとき」と「データが変わったとき」の両方で動く
ML の CI/CD で通すテスト
テスト確かめること例
コード特徴量の関数・前処理が正しいか境界の値・欠損・タイムゾーンの単体テスト
データ入力のデータが想定どおりか列と型、値の範囲、欠損の割合、件数が前回から急に変わっていない
モデル品質が基準以上か評価ゲート・重要な区分ごとの指標・既知の難しい例(回帰テスト)
推論本番で動くか入出力の形・レイテンシ・メモリ・同時のリクエストへの耐性

学習は時間がかかるので、CI では小さなデータで「最後まで動くか」だけを確かめ、本番用の学習はパイプラインで行う、のように分けるのが現実的です。

面接ではこう答える

ML の CI/CD は、普通のソフトウェアの CI/CD にデータとモデルのテストを足したものです。コードの単体テストに加え、入力のデータの形・範囲・件数を確かめるデータの検証、評価ゲートや区分ごとの指標を見るモデルのテスト、入出力の形やレイテンシを確かめる推論のテストを通します。コードが変わったときだけでなく、データが変わって再学習したときも同じ関門を通すのがポイントです。

9.7データの検証

★★★ 必須

モデルの事故の多くは、モデルではなく上流のデータの変化から起きます。列の単位が変わった、ある日だけ件数が半分になった、全部 NULL になった、などです。学習の前と推論の入力の両方で、データを自動で確かめます。

確かめるもの例見つかったときの動き
形(スキーマ)列がある・型が合っている・新しい列が増えていない学習を止める
件数前日・前週の同じ曜日から大きく変わっていない学習を止めて上流に確認
欠損の割合急に増えていない止めるか、警告して続ける
値の範囲・種類年齢が 0〜120、金額が負でない、カテゴリが既知のもの範囲外を除く・警告
鮮度最新の日付のデータが届いている待つか、前回のモデルを使い続ける

Great Expectations や TensorFlow Data Validation のような道具もありますが、まずは SQL で件数と欠損の割合を数えて、前回と比べるだけでも多くの事故を防げます。「止める」と「警告だけ」の基準を分けておくと、誤報で学習が止まり続けることを避けられます。

ノートブックで良い結果が出たモデルを本番に載せるには、次のような作業が要ります。面接でも「試作から本番まで何をしますか」はよく聞かれます。

やること中身
コードを整理する前処理・特徴量・学習を関数やモジュールにし、ノートブックの実行順に依存しないようにする
テストを書く特徴量の関数の単体テスト、小さなデータで学習から推論まで通るテスト
環境を固定するライブラリの版をロックし、コンテナにする
データを固定する学習データの期間と版を記録し、再現できるようにする
推論と学習の前処理を共通にする同じパイプラインのオブジェクトや関数を使う
パイプラインにする定期の再学習・評価ゲート・登録を自動で流す
監視を入れるレイテンシ・エラー・予測の分布・入力の欠損
戻し方を決める前の版への切り替え・代わりの答え

全部を最初からそろえる必要はありません。まず「再現できる・前処理が共通・戻せる」の3つを満たしてから出し、残りは使われ方を見ながら足していきます。

9.9MLOps の成熟度

用語★★☆ 重要
ひとことで

ML の運用の自動化の段階。手作業、学習パイプラインの自動化、パイプライン自体の CI/CD の自動化、の3段階で語られることが多い。

手作業 → 学習の自動化 → パイプライン自体の CI/CDレベル 0手作業・ノートブックレベル 1学習パイプラインを自動化レベル 2パイプラインの CI/CD も自動化モデルの数・入れ替えの頻度に合わせて段を上げる。全部をレベル 2 にする必要はない
MLOps の成熟度(よく使われる3段階)
段階様子次に足すもの
レベル 0:手作業データサイエンティストがノートブックで学習し、ファイルを渡して載せる。入れ替えは年に数回学習の手順のコード化・実験管理・モデルの版管理
レベル 1:学習の自動化パイプラインで定期的に再学習し、評価ゲートを通ったものを出すデータの検証・監視・特徴量の共通化
レベル 2:CI/CD の自動化パイプラインのコードの変更もテストされ、自動で配られる。多くのモデルを素早く入れ替えられる(モデルが多いチーム向け)

面接ではこう答える

MLOps の成熟度は、よく3段階で説明されます。レベル0はノートブックで学習してファイルを渡す手作業の段階、レベル1は学習パイプラインを自動化し、定期的な再学習と評価ゲートで出す段階、レベル2はパイプラインのコード自体も CI/CD でテストして配る段階です。どこまで目指すかは、モデルの数と入れ替えの頻度で決めます。モデルが1つで年に数回しか入れ替えないなら、レベル1で十分なことが多いです。

この章のまとめ

🖨 まとめシート(印刷・PDF)
  • 学習から本番までのパイプラインと、モデルのバージョン管理
  • モデルの CI/CD
  • ML パイプライン:データの取得から学習・評価・登録・デプロイまでを自動で流す。
  • 再学習のきっかけと評価ゲート:再学習したモデルを、今のモデルと同じ評価データで比べ、基準を満たしたときだけ先に進める関門。
  • モデルレジストリ:モデルをバージョン付きで管理し、評価を通ったものだけを段階的に本番へ出す。
  • 段階的に本番へ出す(シャドー・カナリア):シャドーは新しいモデルに本番と同じ入力を送って結果を記録だけする方法、カナリアは一部の利用者にだけ新しいモデルの結果を返す方法。
  • モデルの CI/CD とテスト:コードのテストに加え、データの検証とモデルの品質の関門を自動で通してから出す仕組み。
  • MLOps の成熟度:ML の運用の自動化の段階。手作業、学習パイプラインの自動化、パイプライン自体の CI/CD の自動化、の3段階で語られることが多い。

この章のクイズ

面接ではこう聞かれる

まず答えを見ずに声に出して答え、そのあと開いて比べる。

Q1モデルを安全に本番に出す流れを説明してください。

模範回答

まず評価です。新しいモデルを今の本番のモデルと同じ評価データで比べ、主な指標が下回らないこと、属性ごとの性能やレイテンシも悪くないことを、パイプラインの関門として自動で確かめます。通ったものだけをモデルレジストリにバージョン付きで登録します。

次に段階的なリリースです。シャドーデプロイで本番のリクエストに対するエラーやレイテンシ、予測の分布を確かめ、カナリアで 1% など一部の利用者から広げ、必要なら A/B テストでビジネスの指標を比べます。その間はシステムの指標とモデルの指標の両方を監視し、事前に決めた条件を超えたら、レジストリに残しておいた前のバージョンに設定の切り替えだけで戻します。モデルと特徴量の版をそろえて戻すのがポイントです。

深掘りされたら

  • シャドーデプロイで、新旧のモデルの予測が大きく違ったらどうしますか?

見られているポイント評価・段階的リリース・監視・ロールバック

Q2再学習はどのタイミングで行いますか?

模範回答

基本は定期的な再学習で、データの変わる速さに合わせて週次や月次などにします。一番簡単で、多くの場合はこれで足ります。それに加えて、正解が分かる場合は精度がしきい値を下回ったとき、入力の分布が大きく変わったとき、特徴量やラベルの定義を変えたときに再学習します。

大事なのは、自動で再学習しても自動で本番に出してよいとは限らないことです。今のモデルと同じ評価データで比べて下回ったら止める関門をパイプラインに入れ、通ったものだけを段階的に出します。

深掘りされたら

  • 再学習したモデルが前より悪かったら、どうしますか?

見られているポイント定期と条件による再学習・評価の関門

Q3シャドーデプロイとカナリアリリースの違いは何ですか?

模範回答

シャドーデプロイは、新しいモデルにも本番と同じリクエストを流して予測させますが、その結果は利用者に返さず記録だけします。利用者に影響を出さずに、エラーやレイテンシ、予測の分布が今のモデルとどれくらい違うかを確かめられます。

カナリアリリースは、1% や 10% など一部の利用者にだけ新しいモデルの結果を実際に返し、問題がなければ広げていく方法です。実際の利用者への影響まで見られる代わりに、問題があれば一部の利用者には影響が出ます。シャドーで安全を確かめてからカナリアに進む、という順に使うことが多いです。

深掘りされたら

  • シャドーデプロイで費用が増えるのが気になる場合は、どうしますか?

見られているポイント利用者に返すかどうかの違いと使う順番

Q4ノートブックで作ったモデルを、本番に載せるまでに何をしますか?

模範回答

ノートブックの処理を、再現できるコードとパイプラインに直します。前処理と特徴量の作り方を関数やモジュールにまとめて推論でも同じものを使う、乱数とデータの版を固定する、ライブラリの版をロックする、学習を誰でも同じ手順で流せるようにする、です。

そのうえで、評価の関門・モデルレジストリへの登録・推論の API やバッチの仕組み・監視(システムの指標と予測の分布)・ロールバックの手順を用意します。最初は小さく、定期実行のジョブと実験管理の道具の組み合わせから始めても構いません。

深掘りされたら

  • 学習と推論で前処理を共有するには、どうしますか?

見られているポイント再現性・前処理の共有・評価から監視までの一式

Q5モデルのデプロイで障害を起こした経験を教えてください。

模範回答

例えば、次のような話し方をします(架空の例)。「新しいモデルをカナリアで 10% に出したところ、予測の陽性の割合が 3倍に増えました。調べると、新しいモデルが使う特徴量の作り方が学習時と推論時で違っており、欠損を学習では平均で、推論では 0 で埋めていました。事前に決めていた条件に当たったので、すぐに前のモデルへ戻し、影響は一部の利用者の数時間に収まりました。」

そのうえで再発防止を話します。「前処理を学習と推論で共通のコードにし、推論で使った特徴量をログに残して学習データの分布と比べるチェックを、シャドーの段階に入れました。」原因・影響・対応・再発防止の順に話すと伝わりやすいです。

深掘りされたら

  • その障害は、どうすれば事前に気づけましたか?

見られているポイント原因・影響・戻し方・再発防止を順に話す