MLOps アーキテクチャについて探る
データ科学者であるあなたは、最高の機械学習モデルをトレーニングしたいと考えています。 モデルを実装するため、あなたはそれをエンドポイントにデプロイし、アプリケーションと統合しようと考えます。
時間の経過と同時に、モデルの再トレーニングが必要になる場合があります。 たとえば、トレーニング データが増えたら、モデルを再トレーニングできます。
一般に、機械学習モデルをトレーニングしたら、エンタープライズ規模でモデルを準備する必要があります。 モデルを準備して運用化するには、次のことを行います。
- モデルトレーニングを 堅牢 で 再現可能 なパイプラインに変換します。
- 開発環境でコードとモデルをテストします。
- 運用環境にモデルをデプロイします。
- エンドツーエンドのプロセスを自動化します。
開発環境と運用環境を設定する
MLOps 内では、DevOps と同様に、 環境 はリソースのコレクションを指します。 これらのリソースは、アプリケーションをデプロイしたり、機械学習プロジェクトによってモデルをデプロイしたりするために使用されます。
注
このモジュールでは、環境を DevOps での解釈に基づいて使用しています。 Azure Machine Learning では、環境という用語が、スクリプトの実行に必要な Python パッケージのコレクションを記述するためにも使用されることに注意してください。 これら 2 つの環境の概念は互いに独立しています。
使用する環境の数は、組織によって異なります。 一般に、少なくとも 2 つの環境があります。 開発 、 開発 、 運用 、 または運用です。さらに、ステージング環境や 実稼働前 (事前運用) 環境などの間に環境を追加することもできます。
一般的な方法は次のとおりです。
- 開発環境でモデル トレーニングを試します。
- 最適なモデルをステージング環境または運用前環境に移動し、そのモデルをデプロイしてテストします。
- 最後に、モデルを 運用環境 にリリースして、エンドユーザーがモデルを使用できるようにモデルをデプロイします。
Azure Machine Learning の環境を構成する
MLOps を実装し、大規模な機械学習モデルを扱う場合は、さまざまな段階に対して個別の環境を使用することをお勧めします。
チームが開発、事前運用、運用環境を使用しているとします。 チームの全員がすべての環境にアクセスする必要があるわけではありません。 データ サイエンティストは、非運用データを使用して開発環境内でのみ作業する可能性があります。一方、機械学習エンジニアは、運用データを使用して運用前環境と運用環境にモデルをデプロイする作業を行います。
環境を分離すると、リソースへのアクセスを簡単に制御できます。 その後、各環境を個別の Azure Machine Learning ワークスペースに関連付けることができます。
Azure 内では、ロールベースのアクセス制御 (RBAC) を使用して、同僚が使用する必要があるリソースのサブセットへの適切なレベルのアクセス権を同僚に付与します。
または、Azure Machine Learning ワークスペースを 1 つだけ使用することもできます。 開発と運用に 1 つのワークスペースを使用すると、Azure フットプリントが小さくなり、管理オーバーヘッドが少なくなります。 ただし、RBAC は開発環境と運用環境の両方に適用されます。これは、ユーザーにリソースへのアクセスが少なすぎるか、アクセスが多すぎることを意味する可能性があります。
ヒント
Azure Machine Learning のリソースを編成するためのベスト プラクティスの詳細について説明します。
MLOps のアーキテクチャを設計する
モデルを運用環境に導入するには、ソリューションをスケーリングし、他のチームと連携する必要があります。 他のデータ サイエンティスト、データ エンジニア、インフラストラクチャ チームと共に、次のアプローチを使用することを決定できます。
- データ エンジニアが管理する Azure Blob Storage にすべてのデータを格納します。
- インフラストラクチャ チームは、Azure Machine Learning ワークスペースなど、すべての必要な Azure リソースを作成します。
- データ科学者は、自分達が最もうまくできることであるモデルの開発とトレーニング (内部ループ) に注目します。
- 機械学習エンジニアは、トレーニングの済んだモデルをデプロイします (外部ループ)。
その結果、MLOps アーキテクチャには次の部分が含まれます。
- セットアップ: ソリューションに必要なすべての Azure リソースを作成します。
- モデル開発 (内部ループ): モデルをトレーニングおよび評価するためのデータを探して処理します。
- 継続的インテグレーション: モデルをパッケージ化して登録します。
- モデル デプロイ (外部ループ): モデルをデプロイします。
- 継続的デプロイ: モデルをテストし、運用環境に昇格させます。
- 監視: モデルとエンドポイントのパフォーマンスを監視します。
大規模なチームで作業している場合、あなたはデータ科学者として MLOps アーキテクチャのすべての部分を担当する必要はありません。 ただし、MLOps 用にモデルを準備するには、監視と再トレーニング用に設計する方法を検討する必要があります。