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 スタックの Databricks アセット バンドル」を参照してください。
MLOps Stacks プロジェクトを開始すると、ソフトウェアによって設定の詳細が入力され、プロジェクトを構成するファイルを含むディレクトリが作成されます。 このディレクトリ (スタック) は、 が推奨する本番運用MLOps ワークフローを実装します。Databricks図に示されているコンポーネントは自動的に作成されており、カスタムコードを追加するにはファイルを編集するだけで済みます。
図では、次のようになります。
- A: データサイエンティストまたは ML エンジニアは、
databricks bundle init mlops-stacks
を使用してプロジェクトを初期化します。 プロジェクトを初期化するときに、 ML コード コンポーネント (通常は data scientistsが使用)、 CI/CD コンポーネント (通常は ML エンジニアが使用)、またはその両方を設定できます。 - B: ML エンジニアは、 に対してDatabricks サービスプリンシパルCI/CD シークレットを設定します。
- C: data scientists Databricks またはローカル システムでモデルを開発します。
- D: data scientists pull request を作成して、 ML コードを更新します。
- E: CI/CD runner 実行 ノートブック、ジョブの作成、およびステージング ワークスペースと本番運用ワークスペースでのその他のタスクの実行を行います。
組織は、デフォルトのスタックを使用することも、必要に応じてカスタマイズして、組織のプラクティスに合わせてコンポーネントを追加、削除、または改訂することもできます。 詳細については、 GitHub リポジトリの readme を参照してください。
MLOpsStacksは、ソフトウェアエンジニアリングのベストプラクティスに従い、本番運用グレードのML を維持しながら、さまざまなCI/CD チームが独立してプロジェクトに取り組めるように、モジュール構造で設計されています。本番運用 engineers はMLdata scientists が ML パイプラインとモデルを開発、テスト、および本番運用にデプロイできるようにインフラストラクチャを構成します。
図に示すように、デフォルトの MLOps スタックには、次の 3 つのコンポーネントが含まれています。
- ML コード。 MLOps スタックは、トレーニングやバッチ推論などのノートブックを含む ML プロジェクトのテンプレートのセットを作成します。 標準化されたテンプレートにより、 data scientists 迅速に開始でき、チーム間でプロジェクト構造が統一され、テストの準備が整ったモジュール化されたコードを適用できます。
- コードとしての ML リソース。 MLOps スタックは、トレーニングやバッチ推論などのタスクのためのワークスペースやパイプラインなどのリソースを定義します。 リソースは Databricks アセット バンドルで定義され、ML 環境のテスト、最適化、バージョン管理を容易にします。 たとえば、モデルの自動再トレーニングのためにより大きなインスタンスタイプを試すと、変更は後で参照するために自動的に追跡されます。
- CI/CD。 GitHub Actions または Azure DevOps を使用して、ML のコードとリソースをテストおよびデプロイし、本番運用のすべての変更が自動化によって実行され、テストされたコードのみが本番環境にデプロイされるようにすることができます。
MLOps プロジェクトフロー
デフォルトMLOps StacksML CI/CDプロジェクトには、開発、ステージング、本番運用のDatabricks ワークスペース全体で自動モデル トレーニングとバッチ推論ジョブをテストおよびデプロイするための ワークフローを含む パイプラインが含まれています。MLOps スタックは設定可能なため、組織のプロセスに合わせてプロジェクト構造を変更できます。
この図は、デフォルトの MLOps スタックによって実装されるプロセスを示しています。 開発ワークスペースでは、data scientistsMLコードとファイルのプルリクエスト (PR) を反復処理します。PR は、分離されたステージング Databricks ワークスペースで単体テストと統合テストをトリガーします。 PR が main にマージされると、ステージングで実行されるモデル トレーニング ジョブとバッチ推論ジョブはすぐに更新され、最新のコードが実行されます。 PRを main にマージした後、スケジュールされたリリースプロセスの一部として新しいリリースブランチを切り取り、コードの変更を本番運用にデプロイできます。
MLOps スタック プロジェクトの構造
MLOps スタックは、プロジェクトのエンドツーエンドの定義として機能するソースファイルのコレクションである Databricks アセットバンドル を使用します。 これらのソース ファイルには、テスト方法とデプロイ方法に関する情報が含まれています。 ファイルをバンドルとして収集することで、変更を共同バージョン管理し、ソース管理、コードレビュー、テスト、CI/CD などのソフトウェアエンジニアリングのベストプラクティスを簡単に使用できます。
この図は、デフォルトの MLOps スタック用に作成されたファイルを示しています。 スタックに含まれるファイルの詳細については、 GitHub リポジトリ のドキュメントまたは MLOps スタックの Databricks アセットバンドル を参照してください。
MLOps スタック コンポーネント
「スタック」とは、開発プロセスで使用される一連のツールを指します。 デフォルトの MLOps スタックは、統合された Databricks プラットフォームを利用し、次のツールを使用します。
コンポーネント | Databricks のツール |
---|---|
ML モデル開発コード | |
機能の開発と管理 | |
ML モデル リポジトリ | |
MLモデルサービング | |
Infrastructure-as-Code (コードとしてのインフラストラクチャ) | |
オーケストレータ | |
CI/CD | |
データとモデルのパフォーマンスモニタリング |
次のステップ
開始するには、 MLOps スタックの Databricks アセット バンドル または GitHub の Databricks MLOps スタック リポジトリを参照してください。