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

Azure ML管道Python步骤中MLClient使用及文件夹模型注册问题

为什么MLClient无法复用MLflow的凭据?

MLflow在Azure ML管道环境中是深度集成的,它会自动绑定当前计算目标的系统分配托管身份来访问模型注册表,无需手动配置凭据;而MLClient的DefaultAzureCredential默认凭据链在管道环境中,不会自动优先使用托管身份,需要显式指定或调整凭据链优先级,同时还要确保计算目标的身份具备足够权限。

解决方案1:在AML管道步骤中正确初始化MLClient

有两种可靠的实现方式:

  • 方式一:直接使用托管身份凭据
    显式调用ManagedIdentityCredential获取计算目标的系统托管身份,跳过默认凭据链的不确定性:

    from azure.ai.ml import MLClient
    from azure.identity import ManagedIdentityCredential
    
    # 获取计算目标的系统托管身份
    credential = ManagedIdentityCredential()
    
    # 初始化MLClient,替换为你的工作空间信息
    ml_client = MLClient(
        credential=credential,
        subscription_id="your-sub-id",
        resource_group_name="your-rg-name",
        workspace_name="your-ws-name"
    )
    

    注意:需确保计算目标的系统托管身份拥有机器学习数据科学家角色(或自定义角色,包含Microsoft.MachineLearningServices/workspaces/models/write等核心权限)。

  • 方式二:利用AML运行上下文自动获取工作空间信息
    通过Run.get_context()获取当前运行的工作空间上下文,避免硬编码订阅等信息:

    from azure.ai.ml import MLClient
    from azure.identity import DefaultAzureCredential
    from azureml.core import Run
    
    # 获取当前管道运行的上下文
    run = Run.get_context()
    workspace = run.experiment.workspace
    
    # 初始化MLClient
    ml_client = MLClient(
        credential=DefaultAzureCredential(),
        subscription_id=workspace.subscription_id,
        resource_group_name=workspace.resource_group,
        workspace_name=workspace.name
    )
    

解决方案2:将文件夹注册为单个模型

两种方式都支持直接注册包含PKL文件的文件夹:

用MLClient注册

直接指定文件夹路径,根据模型类型设置对应参数(自定义模型用custom_model,框架模型如scikit-learn用sklearn_model):

# 替换为你的模型文件夹路径和名称/版本
model = ml_client.models.create_or_update(
    name="folder-based-model",
    version="1",
    path="./your-model-folder",  # 包含PKL文件的文件夹路径
    description="包含PKL文件的完整模型文件夹",
    type="custom_model"
)

用MLflow注册(无需额外凭据配置)

利用MLflow与AML的自动集成,直接完成注册:

import mlflow
from azureml.core import Run

run = Run.get_context()
# 绑定AML工作空间的MLflow跟踪URI
mlflow.set_tracking_uri(run.experiment.workspace.get_mlflow_tracking_uri())

# 注册文件夹模型
mlflow.register_model(
    model_uri="./your-model-folder",
    name="folder-based-model"
)

提示:如果文件夹内没有MLmodel文件,MLflow会自动生成基础配置;若需要自定义模型元数据,可手动添加MLmodel文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 07:31:08