Model Serving への移行
この記事では、ワークスペースで Model Serving を有効にし、モデルを Mosaic AI Model Serving エクスペリエンスに切り替える方法について説明します。
要件
- MLflow モデル レジストリに登録されたモデル。
- アクセス制御ガイドに説明されている登録済みモデルに対するアクセス許可。
- ワークスペースでのサーバーレス コンピューティングの有効化。
重要な変更
- Model Serving では、エンドポイントに対する要求の形式とエンドポイントからの応答が、レガシ MLflow Model Serving と若干異なります。 新しいフォーマット プロトコルの詳細については、モデル エンドポイントのスコアリングに関する記事を参照してください。
- Model Serving では、エンドポイント URL には
model
ではなくserving-endpoints
が含まれます。 - Model Serving には、API ワークフローを使用したリソースの管理に対する詳細サポートが含まれています。
- Model Serving は運用環境に対応していて、Azure Databricks SLA によってサポートされています。
レガシ MLflow Model Serving が提供したモデルを Model Serving に移行する
Model Serving エンドポイントを作成し、レガシ MLflow Model Serving を無効にすることなく、ワークフローを提供するモデルを柔軟に切り替えることができます。
次のステップでは、UI でこれを実現する方法を示します。 レガシ MLflow Model Serving が有効になっているモデルごとに、次の手順を実行します。
- モデルを Unity カタログに登録します。
- 機械学習ワークスペースのサイドバーから [Serving endpoints] (提供エンドポイント) に移動します。
- モデルを使用して提供エンドポイントを作成する方法については、「カスタム モデル サービング エンドポイントを作成する」に記載されているワークフローに従います。
- 提供エンドポイントによって提供される新しい URL を使用してモデルのクエリを実行するように、新しいスコアリング形式とともにアプリケーションを移行します。
- モデルが切り替わると、機械学習ワークスペースのサイドバーにある [モデル] に移動できます。
- レガシ MLflow Model Serving を無効にするモデルを選択します。
- [提供] タブで、[停止] を選択します。
- 確認メッセージが表示されます。 [提供の停止] を選択します。
デプロイされたモデル バージョンを Model Serving に移行する
前のバージョンの Model Serving 機能では、登録済みのモデル バージョンのステージ (Staging
または Production
) に基づいてサービス エンドポイントが作成されていました。 そのエクスペリエンスから提供されたモデルを移行するには、新しい Model Serving エクスペリエンスでその動作をレプリケートできます。
このセクションでは、Staging
モデル バージョンと Production
モデル バージョンに別個のモデル サービング エンドポイントを作成する方法について説明します。 次の手順では、サービス対象モデルごとに Serving Endpoints API を使用してこれを実現する方法を示します。
この例では、登録されたモデル名 modelA
にモデル ステージ Production
のバージョン 1 とモデル ステージ Staging
のバージョン 2 があります。
登録済みモデルに対して、
Staging
モデル バージョン用の1 つと、Production
モデル バージョン用のもう 1 つの 2 つのエンドポイントを作成します。Staging
モデル バージョン用:POST /api/2.0/serving-endpoints { "name":"modelA-Staging" "config": { "served_entities": [ { "entity_name":"model-A", "entity_version":"2", // Staging Model Version "workload_size":"Small", "scale_to_zero_enabled":true }, ], }, }
Production
モデル バージョン用:POST /api/2.0/serving-endpoints { "name":"modelA-Production" "config": { "served_entities": [ { "entity_name":"model-A", "entity_version":"1", // Production Model Version "workload_size":"Small", "scale_to_zero_enabled":true }, ], }, }
エンドポイントの状態を確認します。
Staging エンドポイント用:
GET /api/2.0/serving-endpoints/modelA-Staging
Production エンドポイント用:
GET /api/2.0/serving-endpoints/modelA-Production
エンドポイントの準備ができたら、次を使用してエンドポイントに対してクエリを実行します。
Staging エンドポイント用:
POST /serving-endpoints/modelA-Staging/invocations
Production エンドポイント用:
POST /serving-endpoints/modelA-Production/invocations
モデル バージョンの切り替えに基づいてエンドポイントを更新します。
新しいモデル バージョン 3 が作成されるシナリオでは、モデル バージョン 2 を
Production
に移行できます。同時に、モデル バージョン 3 はStaging
に移行でき、モデル バージョン 1 はArchived
になります。 これらの変更は、次のように別個のモデル サービング エンドポイントに反映できます。Staging
エンドポイントについては、Staging
で新しいモデル バージョンを使用するようにエンドポイントを更新します。PUT /api/2.0/serving-endpoints/modelA-Staging/config { "served_entities": [ { "entity_name":"model-A", "entity_version":"3", // New Staging model version "workload_size":"Small", "scale_to_zero_enabled":true }, ], }
Production
エンドポイントについては、Production
で新しいモデル バージョンを使用するようにエンドポイントを更新します。PUT /api/2.0/serving-endpoints/modelA-Production/config { "served_entities": [ { "entity_name":"model-A", "entity_version":"2", // New Production model version "workload_size":"Small", "scale_to_zero_enabled":true }, ], }
MosaicML 推論ワークフローを Model Serving に移行する
このセクションでは、MosaicML 推論デプロイを Mosaic AI Model Serving に移行する方法に関するガイダンスを提供し、ノートブックの例を示します。
次の表は、Azure Databricks で提供される MosaicML 推論とモデル間のパリティをまとめたものです。
MosaicML 推論 | Mosaic AI Model Serving |
---|---|
create_inference_deployment | Model Serving エンドポイントを作成する |
update_inference_deployment | Model Serving エンドポイントを更新する |
delete_inference_deployment | Model Serving エンドポイントを削除する |
get_inference_deployment | Model Serving エンドポイントの状態を取得する |
次のノートブックは、llama-13b
モデルを MosaicML から Mosaic AI Model Serving に移行する場合のガイド付き例を示しています。