You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Azure ML Studio交互式笔记本中加载已注册的sklearn MLflow模型

在Azure ML交互式笔记本中加载已注册的MLflow sklearn模型(无需下载)

问题描述

我正在使用Azure Machine Learning Studio,已将存储在默认数据存储(Blob存储)中的sklearn mlflow模型注册为模型资产。如何在交互式笔记本中加载该模型,以便在部署为批处理端点前快速进行推理测试?

我看到有帖子建议将模型工件下载到本地,但无需这么做,应该可以直接从数据存储或已注册资产加载模型,避免重复存储。我尝试了以下方法但均未成功:

从已注册模型资产读取(失败)

import mlflow
from azure.ai.ml import MLClient
from azure.ai.ml.entities import Model
from azure.identity import DefaultAzureCredential

ml_client = MLClient(DefaultAzureCredential(), "<subscription_id>", "<resource_group>", "<workspace_id>")

model = ml_client.models.get("<model_name>", version="1")
loaded_model = mlflow.sklearn.load_model(model.id)

OSError: No such file or directory: ...

从数据存储读取(失败)

import mlflow

model_path = "<datastore_uri_to_model_folder>"
loaded_model = mlflow.sklearn.load_model(model_path)

DeserializationError: Cannot deserialize content-type: text/html

解决方案

方法1:通过已注册模型的path属性加载

已注册模型的path字段包含了模型在Azure存储中的MLflow兼容URI,直接使用这个路径即可:

import mlflow
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential

# 初始化MLClient
ml_client = MLClient(DefaultAzureCredential(), "<subscription_id>", "<resource_group>", "<workspace_id>")

# 获取已注册模型
model = ml_client.models.get("<model_name>", version="1")

# 使用模型的path属性加载,该路径是Azure存储的mlflow兼容URI
loaded_model = mlflow.sklearn.load_model(model.path)

# 测试推理
sample_input = [[5.1, 3.5, 1.4, 0.2]]
prediction = loaded_model.predict(sample_input)
print(prediction)

方法2:使用Azure ML datastore的URI格式

如果直接使用数据存储路径,需要确保是MLflow可识别的Azure存储URI格式,即azureml://datastores/<datastore_name>/paths/<model_folder_path>,而不是普通的Blob存储URL:

import mlflow
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential

ml_client = MLClient(DefaultAzureCredential(), "<subscription_id>", "<resource_group>", "<workspace_id>")

# 获取默认数据存储
datastore = ml_client.datastores.get("workspaceblobstore")

# 构造正确的MLflow兼容路径
model_path = f"azureml://datastores/{datastore.name}/paths/<model_folder_in_blob>"
loaded_model = mlflow.sklearn.load_model(model_path)

# 测试推理
sample_input = [[5.1, 3.5, 1.4, 0.2]]
print(loaded_model.predict(sample_input))

关键说明

  • model.id是Azure ML内部的模型资产ID,不是MLflow可识别的模型路径,所以直接用它会报错。
  • 普通Blob存储URL(如https://<account>.blob.core.windows.net/...)无法被MLflow直接解析,必须使用azureml://格式的URI,MLflow会通过Azure ML的认证机制访问存储。

内容的提问来源于stack exchange,提问作者Matt_Haythornthwaite

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 06:41:09