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プロジェクトを開始すると、ソフトウェアによって構成の詳細が入力され、プロジェクトを構成するファイルを含むディレクトリが作成されます。 このディレクトリ (スタック) は、Databricks が推奨する本番運用 MLOps ワークフローを実装します。 図に示されているコンポーネントは自動的に作成され、カスタムコードを追加するために必要なのはファイルを編集するだけです。
![MLOpsスタックのコンポーネント図](../../_images/mlops-stacks-components.png)
図では、次のようになります。
ある: データサイエンティストまたは 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 を参照してください。
MLOps スタックはモジュール構造で設計されているため、ソフトウェア エンジニアリングのベスト プラクティスに従い、本番運用グレードの CI/CD を維持しながら、さまざまな機械学習チームがプロジェクトで独立して作業できます。 本番運用エンジニアは、データサイエンティストが機械学習パイプラインとモデルを開発、テスト、および本番運用に展開するための機械学習インフラストラクチャを構築します。
図に示すように、デフォルトの MLOps スタックには次の 3 つのコンポーネントが含まれています。
ML コード。 MLOps スタックは、トレーニング、バッチ推論などのノートブックを含む ML プロジェクト用のテンプレートのセットを作成します。 標準化されたテンプレートにより、 data scientistsすぐに作業を開始でき、チーム間でプロジェクト構造を統一し、テストの準備が整ったモジュール化されたコードを適用できます。
コードとしての ML リソース。 MLOps スタックは、トレーニングやバッチ推論などのタスク用のワークスペースやパイプラインなどのリソースを定義します。 リソースは、ML 環境のテスト、最適化、バージョン管理を容易にするために、Databricks Asset Bundles で定義されます。 たとえば、モデルの自動再トレーニングのためにより大きなインスタンスタイプを試すと、変更は後で参照するために自動的に追跡されます。
CI/CD。 GitHub ActionsまたはAzure DevOpsを使用してMLコードとリソースをテストおよびデプロイし、すべての本番運用の変更が自動化によって実行され、テストされたコードのみが本番環境にデプロイされることを保証できます。
MLOps プロジェクトフロー
うまくMLOps Stacks プロジェクトには、開発、ステージング、本番運用Databricks ワークスペースにわたって自動化されたモデル トレーニングとバッチ推論ジョブをテストおよびデプロイするためのCI/CDワークフローを備えた機械Databricksパイプラインが含まれています。 MLOps スタックは構成可能なので、組織のプロセスに合わせてプロジェクト構造を変更できます。
この図は、デフォルトの MLOps スタックによって実装されるプロセスを示しています。 開発ワークスペースでは、 data scientists MLコードとファイル プル リクエスト (PR) を繰り返し処理します。 PR は、分離されたステージング Databricks ワークスペースで単体テストと統合テストをトリガーします。 PR がメインにマージされると、ステージングで実行されるモデル トレーニング ジョブとバッチ推論ジョブがすぐに更新され、最新のコードが実行されます。 PRを main にマージした後、スケジュールされたリリース プロセスの一環として新しいリリース ブランチを切り取り、コードの変更を main にデプロイできます。
![全体的なMLOpsフロー図](../../_images/mlops-stack-summary.png)
MLOps スタックのプロジェクト構造
MLOps スタックは、プロジェクトのエンドツーエンドの定義として機能するソース ファイルのコレクションである Databricks アセット バンドル を使用します。 これらのソース ファイルには、テスト方法とデプロイ方法に関する情報が含まれています。 ファイルをバンドルとして収集すると、変更を共同バージョン管理したり、ソース管理、コードレビュー、テスト、CI/CDなどのソフトウェアエンジニアリングのベストプラクティスを使用したりすることが容易になります。
この図は、デフォルトのMLOpsスタック用に作成されたファイルを示しています。 スタックに含まれるファイルの詳細については、 GitHub リポジトリ のドキュメントまたは MLOps スタックの Databricks アセット バンドルを参照してください。
![MLops スタックのディレクトリ構造](../../_images/mlops-directory-structure.png)
MLOpsスタックのコンポーネント
「スタック」とは、開発プロセスで使用される一連のツールを指します。 デフォルトのMLOpsスタックは、統合されたDatabricksプラットフォームを利用し、次のツールを使用します。
コンポーネント |
Databricksのツール |
---|---|
MLモデル開発コード |
|
機能の開発と管理 |
|
ML モデル リポジトリ |
|
MLモデルサービング |
|
Infrastructure-as-Code |
|
オーケストレータ |
|
CI/CD |
|
データとモデルのパフォーマンスのモニタリング |
次のステップ
開始するには、 MLOps スタックの Databricks アセット バンドル または GitHub の Databricks MLOps スタック リポジトリを参照してください。