
MLOps入門 第3 回:小さなステップで実装する
1冊のNotebookから、再現可能な学習と本番運用の流れを段階的につくる実践編。
MLOpsシリーズ最終回では、導入する理由から一歩進み、実際に着手する順序を考えます。
本記事は、2021年9月にCode Chrysalisで行った技術トークを再構成したものです。掲載するツール名は当時の例であり、現在の製品選定を勧めるものではありません。大きなNotebookを、テスト、デプロイ、監視、改善できる仕組みへどう移すかという問いに焦点を当てます。
どう始めるか
数百セルに膨らんだNotebookを前にすると、最初に自動化すべき処理が見えにくくなります。まず、現在のワークフローを図にします。データ処理、実験、モデル作成、API、デプロイ、監視を並べると、手作業の繰り返しや運用上のボトルネックを確認できます。
棚卸しでは、次の3点を押さえます。
- 現在のアーキテクチャまたはワークフローを可視化する
- Google CloudのMLOpsレベルなどを参照し、現状を確認する
- 現在と将来のチーム構成を整理し、担当者と優先順位を割り当てる
ツールを選ぶのは、その後です。優先度の高い課題、チームが保守できる言語、対象コンポーネントとの適合性で絞ります。モデルのデプロイ、データ処理、バージョン管理は別の仕事です。新しい基盤を入れる前に、Notebookのセルを読みやすいPythonモジュールへ分けるだけでも前進になります。
選択肢を比較したい場合は、MLOps CommunityやMLOps subredditの実装例も参考になります。移行は、個別にレビューでき、必要なら戻せる小さ な変更に分けて計画します。
シンプルな移行例
一例として、3段階の流れを考えます。実験段階はNotebookまたはPythonスクリプトから始め、短いフィードバックループを保ちます。MVPではモデルをAPIで包み、ホスティング環境から提供します。本番化では、シリーズ前半で扱ったML、DEV、PRODの各フェーズに、共同実験、アプリケーション開発、デプロイ、監視の仕組みを足していきます。
実験段階
- MLフェーズの1冊のJupyter Notebook
MVP段階
- MLフェーズのモデル開発用Notebook
- DEVフェーズのFlask API
- PRODフェーズのホスティング環境
これは厳密な一本道ではありません。不具合や新しい要件によって次の課題が見つかれば、フェーズを行き来します。インターフェースを明確にできる場合は、複数の担当者が別々の改善を並行して進めることもできます。
本番化のステップ
元の技術トークでは、MVPから拡張する作業候補として次の項目を挙げました。実施順序は、プロダクトとチームの状況によって変わります。
- アプリケーションコードの単体テストと結合テスト
- Vertex AI WorkbenchやSageMaker Notebooksなど、クラウド上で共有できるNotebook
- フロントエンドとバックエンドのコンテナ化
- Redisなどを使ったキャッシュ
- Locustなどを使った負荷テスト
- Kubernetesなどを使ったオートスケール
- HelmやTerraformを使い、Gitでインフラ構成を管理する
- モデルの配信とバージョン管理
- DVCなどを 使ったデータセットのバージョン管理
- Grafanaなどを使った運用監視
- SentryやSlackなどを通じたアラート通知
このリストは、項目ごとに独立して進められるようにしています。繰り返し発生する負担をひとつ選び、変更を検証し、全体へ組み込んでから次の移行に進めます。
要点
MLOpsの構成に唯一の正解はありません。Airflowのようなワークフローエンジン、GitHub ActionsのようなCI、マネージド基盤、あるいは小さなスクリプト群でも構築できます。ツールの数よりも、チームが扱えること、保守できること、実際のボトルネックを解消できることが重要です。
続けるべきなのは、現状を点検する習慣です。繰り返し作業をひとつ自動化し、結果をテストし、負担が減ったか、問題を早く発見できたかを確認します。その積み重ねが、実験の再現、モデルを使うプロダクトのリリース、本番環境での挙動把握を少しずつ容易にします。
結び
元の技術トークをレビューしてくださったJayson Cunanan, Ph.D.とFelix Kirmseに感謝します。