メインコンテンツまでスキップ

MLOps スタック: コードとしてのモデル開発プロセス

この記事では、MLOps スタックを使用して、開発およびデプロイプロセスをソース管理リポジトリのコードとして実装する方法について説明します。 また、モデル開発とデプロイプロセスのすべてのステップを統合する単一のプラットフォームである Databricks Data Intelligence プラットフォームでのモデル開発の利点についても説明します。

MLOps スタックとは

MLOps スタックを使用すると、モデル開発プロセス全体が実装され、ソース管理されたリポジトリにコードとして保存されます。 このようにプロセスを自動化すると、より反復可能で予測可能、かつ体系的なデプロイが容易になり、CI/CD プロセスとの統合が可能になります。 モデル開発プロセスをコードとして表すと、モデルをデプロイする代わりにコードをデプロイできます。 コードをデプロイすると、モデルの構築機能が自動化され、必要に応じてモデルを再トレーニングすることがはるかに簡単になります。

MLOps スタックを使用してプロジェクトを作成するときは、特徴量エンジニアリング、トレーニング、テスト、デプロイに使用するノートブック、トレーニングとテスト用のパイプライン、各ステージで使用するワークスペース、コードの自動テストとデプロイに GitHub Actions または Azure DevOps を使用する CI/CD ワークフローなど、ML 開発およびデプロイ プロセスのコンポーネントを定義します。

MLOps Stacks によって作成された環境は、 Databricks が推奨する MLOps ワークフローを実装します。コードをカスタマイズして、組織のプロセスや要件に一致するスタックを作成できます。

MLOps スタックはどのように機能しますか?

Databricks CLIを使用してMLOpsスタックを作成します。手順の詳細については、 「MLOpsスタック向け宣言型自動化バンドル」を参照してください。

MLOps Stacks プロジェクトを開始すると、ソフトウェアによって設定の詳細が入力され、プロジェクトを構成するファイルを含むディレクトリが作成されます。 このディレクトリ (スタック) は、 が推奨する本番運用MLOps ワークフローを実装します。Databricks図に示されているコンポーネントは自動的に作成されており、カスタムコードを追加するにはファイルを編集するだけで済みます。

MLOps スタック コンポーネント図

図では、次のようになります。

  • A: データサイエンティストまたは ML エンジニアは、databricks bundle init mlops-stacksを使用してプロジェクトを初期化します。 プロジェクトを初期化するときに、 ML コード コンポーネント (通常は データサイエンティストが使用)、 CI/CD コンポーネント (通常は ML エンジニアが使用)、またはその両方を設定できます。
  • B: ML エンジニアは、 に対してDatabricks サービスプリンシパルCI/CD シークレットを設定します。
  • C: データサイエンティスト Databricks またはローカル システムでモデルを開発します。
  • D: データサイエンティスト pull request を作成して、 ML コードを更新します。
  • E: CI/CD runner 実行 ノートブック、ジョブの作成、およびステージング ワークスペースと本番運用ワークスペースでのその他のタスクの実行を行います。

組織は、デフォルトのスタックを使用することも、必要に応じてカスタマイズして、組織のプラクティスに合わせてコンポーネントを追加、削除、または改訂することもできます。詳細については、 GitHub リポジトリの readme を参照してください。

MLOpsStacksは、ソフトウェアエンジニアリングのベストプラクティスに従い、本番運用グレードのML を維持しながら、さまざまなCI/CD チームが独立してプロジェクトに取り組めるように、モジュール構造で設計されています。本番運用 engineers はMLデータサイエンティスト が ML パイプラインとモデルを開発、テスト、および本番運用にデプロイできるようにインフラストラクチャを構成します。

図に示すように、デフォルトの MLOps スタックには、次の 3 つのコンポーネントが含まれています。

  • ML コード。 MLOps スタックは、トレーニングやバッチ推論などのノートブックを含む ML プロジェクトのテンプレートのセットを作成します。 標準化されたテンプレートにより、 データサイエンティスト 迅速に開始でき、チーム間でプロジェクト構造が統一され、テストの準備が整ったモジュール化されたコードを適用できます。
  • コードとしてのMLリソース。 MLOpsスタックは、トレーニングやバッチ推論などのタスクのためのワークスペースやパイプラインといったリソースを定義します。は、 ML環境のテスト、最適化、およびバージョン管理を容易にするために、宣言型自動化バンドルで定義されています。 例えば、自動モデル再学習のために、より大きなインスタンスタイプを試すことができます。変更内容は自動的に追跡され、今後の参考資料として活用できます。
  • CI/CD。 GitHub Actions または Azure DevOps を使用して、ML のコードとリソースをテストおよびデプロイし、本番運用のすべての変更が自動化によって実行され、テストされたコードのみが本番環境にデプロイされるようにすることができます。

MLOps プロジェクトフロー

デフォルトMLOps StacksML CI/CDプロジェクトには、開発、ステージング、本番運用のDatabricks ワークスペース全体で自動モデル トレーニングとバッチ推論ジョブをテストおよびデプロイするための ワークフローを含む パイプラインが含まれています。MLOps スタックは設定可能なため、組織のプロセスに合わせてプロジェクト構造を変更できます。

この図は、デフォルトの MLOps スタックによって実装されるプロセスを示しています。 開発ワークスペースでは、データサイエンティストMLコードとファイルのプルリクエスト (PR) を反復処理します。PR は、分離されたステージング Databricks ワークスペースで単体テストと統合テストをトリガーします。 PR が main にマージされると、ステージングで実行されるモデル トレーニング ジョブとバッチ推論ジョブはすぐに更新され、最新のコードが実行されます。 PRを main にマージした後、スケジュールされたリリースプロセスの一部として新しいリリースブランチを切り取り、コードの変更を本番運用にデプロイできます。

全体的なMLOpsフロー図

MLOps スタック プロジェクトの構造

MLOpsスタックは、宣言型自動化バンドルを使用します。これは、プロジェクトのエンドツーエンドの定義として機能するソースファイルの集合です。これらのソースファイルには、テスト方法と展開方法に関する情報が含まれています。ファイルをまとめて収集することで、変更点の同時バージョン管理が容易になり、ソース管理、コードレビュー、テスト、CI/CDといったソフトウェアエンジニアリングのベストプラクティスを活用できるようになります。

この図は、デフォルトのMLOpsスタック用に作成されるファイルを示しています。スタックに含まれるファイルの詳細については、GitHub のドキュメント 「Declarative Automation Bundles forMLOps Stacks」 を参照してください。

MLOps スタックのディレクトリ構造

MLOps スタック コンポーネント

「スタック」とは、開発プロセスで使用される一連のツールを指します。 デフォルトの MLOps スタックは、統合された Databricks プラットフォームを利用し、次のツールを使用します。

コンポーネント

Databricks のツール

ML モデル開発コード

Databricks ノートブックMLflow

機能の開発と管理

特徴エンジニアリング

ML モデル リポジトリ

Unity Catalog上のモデル

MLモデルサービング

Mosaic AI モデルサービング

Infrastructure-as-Code (コードとしてのインフラストラクチャ)

宣言型自動化バンドル

オーケストレータ

Lakeflow ジョブ

CI/CD

GitHub ActionsAzure DevOps

データとモデルのパフォーマンスモニタリング

データプロファイリング

次のステップ

まずは、 「MLOpsスタック向け宣言型自動化バンドル」またはGitHub上のDatabricks MLOpsスタックリポジトリを参照してください。