ノートと小型の本番試験装置が並ぶアニメ背景調の機械学習スタジオ
制作ノート

MLOps入門 第3回:​小さなステップで​実装する

2023年12月23日

1冊の​Notebookから、​再現可能な​学習と​本番運用の​流れを​段階的に​つくる​実践編。

機械学習プログラミングMLOps

MLOpsシリーズ最終回では、導入する理由から一歩進み、実際に着手する順序を考えます。

本記事は、2021年9月にCode Chrysalisで行った技術トークを再構成したものです。掲載するツール名は当時の例であり、現在の製品選定を勧めるものではありません。大きなNotebookを、テスト、デプロイ、監視、改善できる仕組みへどう移すかという問いに焦点を当てます。

どう始めるか

数百セルに膨らんだNotebookを前にすると、最初に自動化すべき処理が見えにくくなります。まず、現在のワークフローを図にします。データ処理、実験、モデル作成、API、デプロイ、監視を並べると、手作業の繰り返しや運用上のボトルネックを確認できます。

棚卸しでは、次の3点を押さえます。

  1. 現在のアーキテクチャまたはワークフローを可視化する
  2. Google CloudのMLOpsレベルなどを参照し、現状を確認する
  3. 現在と将来のチーム構成を整理し、担当者と優先順位を割り当てる

ツールを選ぶのは、その後です。優先度の高い課題、チームが保守できる言語、対象コンポーネントとの適合性で絞ります。モデルのデプロイ、データ処理、バージョン管理は別の仕事です。新しい基盤を入れる前に、Notebookのセルを読みやすいPythonモジュールへ分けるだけでも前進になります。

選択肢を比較したい場合は、MLOps CommunityMLOps subredditの実装例も参考になります。移行は、個別にレビューでき、必要なら戻せる小さな変更に分けて計画します。

シンプルな移行例

一例として、3段階の流れを考えます。実験段階はNotebookまたはPythonスクリプトから始め、短いフィードバックループを保ちます。MVPではモデルをAPIで包み、ホスティング環境から提供します。本番化では、シリーズ前半で扱ったML、DEV、PRODの各フェーズに、共同実験、アプリケーション開発、デプロイ、監視の仕組みを足していきます。

実験段階

  • MLフェーズの1冊のJupyter Notebook

MVP段階

  • MLフェーズのモデル開発用Notebook
  • DEVフェーズのFlask API
  • PRODフェーズのホスティング環境

これは厳密な一本道ではありません。不具合や新しい要件によって次の課題が見つかれば、フェーズを行き来します。インターフェースを明確にできる場合は、複数の担当者が別々の改善を並行して進めることもできます。

本番化のステップ

元の技術トークでは、MVPから拡張する作業候補として次の項目を挙げました。実施順序は、プロダクトとチームの状況によって変わります。

  1. アプリケーションコードの単体テストと結合テスト
  2. Vertex AI WorkbenchやSageMaker Notebooksなど、クラウド上で共有できるNotebook
  3. フロントエンドとバックエンドのコンテナ化
  4. Redisなどを使ったキャッシュ
  5. Locustなどを使った負荷テスト
  6. Kubernetesなどを使ったオートスケール
  7. HelmやTerraformを使い、Gitでインフラ構成を管理する
  8. モデルの配信とバージョン管理
  9. DVCなどを使ったデータセットのバージョン管理
  10. Grafanaなどを使った運用監視
  11. SentryやSlackなどを通じたアラート通知

このリストは、項目ごとに独立して進められるようにしています。繰り返し発生する負担をひとつ選び、変更を検証し、全体へ組み込んでから次の移行に進めます。

要点

MLOpsの構成に唯一の正解はありません。Airflowのようなワークフローエンジン、GitHub ActionsのようなCI、マネージド基盤、あるいは小さなスクリプト群でも構築できます。ツールの数よりも、チームが扱えること、保守できること、実際のボトルネックを解消できることが重要です。

続けるべきなのは、現状を点検する習慣です。繰り返し作業をひとつ自動化し、結果をテストし、負担が減ったか、問題を早く発見できたかを確認します。その積み重ねが、実験の再現、モデルを使うプロダクトのリリース、本番環境での挙動把握を少しずつ容易にします。

結び

元の技術トークをレビューしてくださったJayson Cunanan, Ph.D.Felix Kirmseに感謝します。

Mediumの原文を読む