デプロイ用のモデル パッケージ (プレビュー)
機械学習モデルをトレーニングしたら、モデルをデプロイして、他のユーザーがその予測を使用できるようにする必要があります。 ただし、モデルをデプロイするには、重みまたはモデルの成果物以上のものが必要です。 モデル パッケージは Azure Machine Learning の機能であり、機械学習モデルをサービス プラットフォームにデプロイするために必要なすべての依存関係を収集できます。 パッケージは、ワークスペース間や Azure Machine Learning の外部でも移動できます。
重要
現在、この機能はパブリック プレビュー段階にあります。 このプレビュー バージョンはサービス レベル アグリーメントなしで提供されており、運用環境のワークロードに使用することは推奨されません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。
詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。
モデル パッケージとは
モデルをデプロイする前のベスト プラクティスとして、モデルを正常に実行するために必要なすべての依存関係を収集して解決し、再現可能で堅牢なアプローチでモデルをデプロイできるようにする必要があります。
通常、モデルの依存関係は次のとおりです。
- モデルが実行される基本イメージまたは環境。
- モデルが正常に機能するために依存する Python パッケージと依存関係の一覧。
- 推論を生成するためにモデルが必要とする可能性がある追加のアセット。 これらのアセットには、ラベルのマップと前処理パラメーターを含めることができます。
- 推論サーバーが要求を処理するために必要なソフトウェア。たとえば、Flask サーバーや TensorFlow Serving などです。
- 推論ルーチン (必要な場合)。
これらの要素はすべて、サービス インフラストラクチャにデプロイするために収集する必要があります。 すべての依存関係を収集した後に生成された結果のアセットは、モデル パッケージと呼ばれます。
モデルのパッケージ化の利点
デプロイ前のモデルのパッケージ化には、次の利点があります。
- 再現性: すべての依存関係は、デプロイ時ではなくパッケージ化時に収集されます。 依存関係が解決されたら、依存関係が既に解決されていることを保証しながら、必要な回数だけパッケージをデプロイできます。
- 競合の解決の高速化: Azure Machine Learning は、不足している Python パッケージなどの依存関係に関連する構成の誤りを検出し、モデルをパッケージ化します。 このような問題を検出するためにモデルをデプロイする必要はありません。
- 推論サーバーとの統合が容易: 使用している推論サーバーには特定のソフトウェア構成 (Torch Serve パッケージなど) が必要な場合があるため、このようなソフトウェアによってモデルの依存関係との競合が発生する可能性があります。 Azure Machine Learning のモデル パッケージは、モデルをデプロイする前に競合を検出できるように、推論サーバーに必要な依存関係を注入します。
- 移植性: レジストリを使用して、Azure Machine Learning モデル パッケージをワークスペース間で移動できます。 Azure Machine Learning の外部にデプロイできるパッケージを生成することもできます。
- プライベートネットワークでの MLflow のサポート: MLflow モデルの場合、Azure Machine Learning では、モデルを実行するために必要な Python パッケージを動的にインストールできるインターネット接続が必要です。 MLflow モデルをパッケージ化すると、モデル パッケージのパッケージ化操作中にこれらの Python パッケージが解決されるため、MLflow モデル パッケージにインターネット接続をデプロイする必要はありません。
ヒント
デプロイ前に MLflow モデルをパッケージ化することを強くおすすめします。また、送信ネットワーク接続がないエンドポイントでも必要です。 MLflow モデルは、モデル自体の依存関係を示すので、パッケージを動的にインストールする必要があります。 MLflow モデルをパッケージ化すると、この動的インストールは、デプロイ時ではなくパッケージ化時に実行されます。
モデル パッケージのデプロイ
モデル パッケージは、オンライン エンドポイントへの入力として提供できます。 モデル パッケージを使用すると、パッケージ化操作中にすべての依存関係が収集されるため、デプロイ時にエラーが発生する可能性を減らして、MLOps ワークフローを効率化できます。 モデル パッケージを構成して Docker イメージを生成し、オンプレミスまたはクラウドの Azure Machine Learning の外部にデプロイすることもできます。
デプロイ前のパッケージ
モデル パッケージを使用してデプロイする最も簡単な方法は、デプロイを実行する前に、モデル パッケージをデプロイするように Azure Machine Learning に指定する方法です。 Azure CLI、Azure Machine Learning SDK、または Azure Machine Learning スタジオを使用してオンライン エンドポイントにデプロイを作成する場合は、次のようにモデル パッケージの使用を指定できます。
デプロイを作成するときは、--with-package
フラグを使用します。
az ml online-deployment create --with-package -f model-deployment.yml -e $ENDPOINT_NAME
Azure Machine Learning では、最初にモデルがパッケージ化され、次にデプロイが実行されます。
Note
パッケージを使用する場合、conda
または pip
依存関係を持つ基本環境を指定する場合は、推論サーバー (azureml-inference-server-http
) の依存関係を含める必要はありません。 代わりに、これらの依存関係が自動的に追加されます。
パッケージ 化されたモデルをデプロイする
オンライン エンドポイントに直接パッケージ化されたモデルをデプロイできます。 この方法により結果の再現性が確保され、ベスト プラクティスとなっています。 「モデルをパッケージ化し、オンライン エンドポイントにデプロイする」を参照してください。
Azure Machine Learning の外部にパッケージをデプロイする場合は、「モデルをパッケージ化して Azure Machine Learning の外部にデプロイする」を参照してください。