運用環境の機械学習には、優れたモデルのトレーニング以上のものが必要です。 モデルを開発から検証から運用環境に移行するには、信頼性の高いワークフローが必要です。 Microsoft Fabricでのワークスペース間のログ記録では、次の 2 つの主要なシナリオが可能になります。
エンドツーエンドの MLOps ワークフローを構築します。 開発ワークスペースでトレーニングと実験を行い、テスト ワークスペースで検証し、標準 MLflow API を使用して運用サービス ワークスペースにデプロイします。 この環境の分離により、チームは品質ゲートを適用し、実験から運用環境まで明確な監査証跡を維持できます。
既存の機械学習資産を Fabric に作成します。 Azure Databricks、Azure Machine Learning、ローカル環境、または MLflow をサポートするその他のプラットフォームでモデルを既にトレーニングしている場合は、それらの実験とモデルをFabric ワークスペースに直接記録できます。 トレーニング パイプラインを再構築することなく、機械学習成果物を 1 か所に簡単に統合できます。
ワークスペース間のログ記録は、synapseml-mlflow パッケージを介して機能し、Fabric互換性のある MLflow 追跡プラグインを提供します。 ターゲット ワークスペースで認証し、追跡 URI を設定し、標準の MLflow コマンドを使用します。
注
ワークスペース間のログ記録では、 コード優先エクスペリエンスに重点を置いています。 ワークスペース間シナリオの UI 統合は、今後のリリースで対処される予定です。
前提条件
- Microsoft Fabricサブスクリプションまたは無料のMicrosoft Fabric試用版。
- ターゲット Fabric ワークスペースに対する書き込みアクセス許可。
- ソース ワークスペースとターゲット ワークスペースの両方に対してアップグレードされた機械学習追跡システム。
Fabricノートブックのシナリオでは、コードを実行する前に、新しいノートブックを作成し、lakehouse をアタッチします。
ヒント
ワークスペース間のログ記録は、 送信アクセス保護 が有効になっているワークスペースでサポートされています。 別のワークスペースへのワークスペース間のログ記録には、マネージド プライベート エンドポイントが必要です。 同じワークスペース内および外部からのログ記録Fabricは、追加の構成なしで機能します。
MLflow プラグインをインストールする
synapseml-mlflow パッケージでは、Fabric MLflow 追跡プラグインを提供することで、ワークスペース間のログ記録が可能になります。 環境に基づいてインストール コマンドを選択します。
Important
MLflow 3 は現在サポートされていません。
mlflow-skinnyをバージョン 2.22.2 以前にピン留めする必要があります。
Fabric ノートブックの場合は、次のコマンドを使用して、オンライン ノートブックの依存関係を含むパッケージをインストールします。
%pip install -U "synapseml-mlflow[online-notebook]" "mlflow-skinny<=2.22.2"
インストール後、残りのコードを実行する前にカーネルを再起動します。
MLflow オブジェクトを別のFabric ワークスペースに記録する
このシナリオでは、1 つのFabric ワークスペース (ソース) でノートブックを実行し、実験とモデルを別のFabric ワークスペース (ターゲット) に記録します。
ターゲット ワークスペースを設定する
MLFLOW_TRACKING_URI環境変数を設定して、ターゲット ワークスペースをポイントします。
import os
target_workspace_id = "<your-target-workspace-id>"
target_uri = f"sds://api.fabric.microsoft.com/v1/workspaces/{target_workspace_id}/mlflow"
os.environ["MLFLOW_TRACKING_URI"] = target_uri
実験とモデルをログに記録する
実験を作成し、パラメーター、メトリック、モデルを使用して実行をログに記録します。
import mlflow
import mlflow.sklearn
import numpy as np
from sklearn.linear_model import LogisticRegression
from mlflow.models.signature import infer_signature
# Create or set the experiment in the target workspace
EXP_NAME = "my-cross-workspace-experiment"
MODEL_NAME = "my-cross-workspace-model"
mlflow.set_experiment(EXP_NAME)
with mlflow.start_run() as run:
lr = LogisticRegression()
X = np.array([-2, -1, 0, 1, 2, 1]).reshape(-1, 1)
y = np.array([0, 0, 1, 1, 1, 0])
lr.fit(X, y)
score = lr.score(X, y)
signature = infer_signature(X, y)
mlflow.log_params({
"objective": "classification",
"learning_rate": 0.05,
})
mlflow.log_metric("score", score)
mlflow.sklearn.log_model(lr, "model", signature=signature)
mlflow.register_model(
f"runs:/{run.info.run_id}/model",
MODEL_NAME
)
実行が完了すると、実験と登録されたモデルがターゲット ワークスペースに表示されます。
Fabric ワークスペース間で MLflow オブジェクトを移動する
このシナリオでは、まずソース ワークスペースにオブジェクトをログに記録し、次に成果物をダウンロードして、ターゲット ワークスペースに再度ログを記録します。 この方法は、トレーニング済みのモデルを開発ワークスペースから運用ワークスペースに昇格させる必要がある場合に便利です。
手順 1: ソース ワークスペース内のオブジェクトをログに記録する
import mlflow
import mlflow.sklearn
import numpy as np
from sklearn.linear_model import LogisticRegression
from mlflow.models.signature import infer_signature
# Log to the current (source) workspace
EXP_NAME = "source-experiment"
mlflow.set_experiment(EXP_NAME)
with mlflow.start_run() as run:
lr = LogisticRegression()
X = np.array([-2, -1, 0, 1, 2, 1]).reshape(-1, 1)
y = np.array([0, 0, 1, 1, 1, 0])
lr.fit(X, y)
signature = infer_signature(X, y)
mlflow.sklearn.log_model(lr, "model", signature=signature)
source_run_id = run.info.run_id
手順 2: ソース実行から成果物をダウンロードする
import mlflow.artifacts
# Download the model artifacts locally
local_artifact_path = mlflow.artifacts.download_artifacts(
run_id=source_run_id,
artifact_path="model"
)
手順 3: 成果物をターゲット ワークスペースに再ログする
import os
target_workspace_id = "<your-target-workspace-id>"
target_uri = f"sds://api.fabric.microsoft.com/v1/workspaces/{target_workspace_id}/mlflow"
os.environ["MLFLOW_TRACKING_URI"] = target_uri
TARGET_EXP_NAME = "promoted-experiment"
TARGET_MODEL_NAME = "promoted-model"
mlflow.set_experiment(TARGET_EXP_NAME)
with mlflow.start_run() as run:
mlflow.log_artifacts(local_artifact_path, "model")
mlflow.register_model(
f"runs:/{run.info.run_id}/model",
TARGET_MODEL_NAME
)
Fabricの外部から MLflow オブジェクトをログに記録する
MLflow の実験とモデルは、モデルを構築する任意の環境からFabric ワークスペースにログに記録できます。
- ローカル コンピューター。 VS Code、Jupyter Notebook、またはローカル Python環境。
- Azure Databricks。 Azure Databricksのノートブックとジョブ。
- Azure Machine Learning。 Azure Machine Learning のコンピューティング インスタンスおよびパイプライン。
- その他のプラットフォーム。 Pythonと MLflow をサポートするすべての環境。
手順 1: パッケージをインストールする
環境に synapseml-mlflow パッケージをインストールします。
pip install -U "synapseml-mlflow" "mlflow-skinny<=2.22.2"
手順 2: Fabricで認証する
環境に基づいて認証方法を選択します。
VS Code や Jupyter などのブラウザー アクセスを使用するローカル開発環境では、この方法を使用します。
from fabric.analytics.environment.credentials import SetFabricAnalyticsDefaultTokenCredentialsGlobally
from azure.identity import DefaultAzureCredential
SetFabricAnalyticsDefaultTokenCredentialsGlobally(
credential=DefaultAzureCredential(exclude_interactive_browser_credential=False)
)
手順 3: ターゲット ワークスペースとログ MLflow オブジェクトを設定する
認証後、標準の MLflow API を使用して、ターゲット Fabric ワークスペースとログの実験とモデルを指す追跡 URI を設定します。
import os
import mlflow
import mlflow.sklearn
import numpy as np
from sklearn.linear_model import LogisticRegression
from mlflow.models.signature import infer_signature
target_workspace_id = "<your-target-workspace-id>"
target_uri = f"sds://api.fabric.microsoft.com/v1/workspaces/{target_workspace_id}/mlflow"
os.environ["MLFLOW_TRACKING_URI"] = target_uri
EXP_NAME = "external-experiment"
MODEL_NAME = "external-model"
mlflow.set_experiment(EXP_NAME)
with mlflow.start_run() as run:
lr = LogisticRegression()
X = np.array([-2, -1, 0, 1, 2, 1]).reshape(-1, 1)
y = np.array([0, 0, 1, 1, 1, 0])
lr.fit(X, y)
signature = infer_signature(X, y)
mlflow.log_metric("score", lr.score(X, y))
mlflow.sklearn.log_model(lr, "model", signature=signature)
mlflow.register_model(
f"runs:/{run.info.run_id}/model",
MODEL_NAME
)
ワークスペース間ログ記録の利用を送信アクセス保護を利用して行う
ワークスペース で送信アクセス保護 が有効になっている場合、ワークスペース間のログ記録には、ソース ワークスペースからターゲット ワークスペースへの ワークスペース間で管理されるプライベート エンドポイント が必要です。
同じワークスペース内のログ記録と、外部Fabric (ローカル コンピューター、Azure Databricks、Azure Machine Learning) からのログ記録は、追加の構成なしで機能します。
サポートされているシナリオと必要な構成の詳細については、「Fabric Data Science のWorkspace 送信アクセス保護を参照してください。
OAP 対応ワークスペースにパッケージをインストールする
標準の %pip install コマンドでは、送信インターネット アクセスが必要です。これは、送信アクセス保護 (OAP) が有効になっているワークスペースでブロックされます。
synapseml-mlflow パッケージをインストールするには、最初に OAP 以外の環境からダウンロードしてから、lakehouse にアップロードします。
インターネットにアクセスできるコンピューターから
synapseml-mlflowパッケージをダウンロードします。pip download synapseml-mlflow[online-notebook]ダウンロードしたファイルを OAP 対応ワークスペースの lakehouse にアップロードします。 すべての
.whlファイルを lakehouse の [ファイル ] セクションにアップロードします (例:/lakehouse/default/Files)。Fabric ノートブックの lakehouse パスからインストールします。
%pip install --no-index --find-links=/lakehouse/default/Files "synapseml-mlflow[online-notebook]>2.0.0" "mlflow-skinny<=2.22.2" --preマネージド プライベート エンドポイントを使用するように追跡 URI を設定します。 現在のワークスペースで OAP が有効になっている場合は、ソース ワークスペースからターゲット ワークスペースへのクロスワークスペース マネージド プライベート エンドポイント を構成する必要があります。 次に、プライベート エンドポイントを介して追跡 URI をルーティングします。
import os from fabric.analytics.environment.context import FabricContext, InternalContext context = FabricContext(workspace_id=target_workspace_id, internal_context=InternalContext(is_wspl_enabled=True)) print(context.pbi_shared_host) # You need to set up and use this private endpoint if your current workspace has OAP enabled os.environ["MLFLOW_TRACKING_URI"] = f"sds://{context.pbi_shared_host}/v1/workspaces/{target_workspace_id}/mlflow"
既知の制限
- 書き込みアクセス許可が必要です。 ターゲット ワークスペースに対する書き込みアクセス許可が必要です。
- ワークスペース間の系列はサポートされていません。 これらのオブジェクトが異なるワークスペースからログに記録されている場合、ノートブック、実験、モデル間のリレーションシップを表示することはできません。
- ソース ノートブックはターゲット ワークスペースに表示されません。 ソース ノートブックはターゲット ワークスペースに表示されません。 成果物の詳細とリスト ページでは、ソース ノートブックへのリンクは空です。
- 項目スナップショットはサポートされていません。 別のワークスペースに記録された機械学習の実験またはモデルは、ソース実行ノートブック項目のスナップショットには表示されません。
- 大規模な言語モデルはサポートされていません。 ワークスペース間のログ記録では、大規模な言語モデル (LLM) はサポートされていません。