在Databricks通过MLflow向AzureML注册模型遇403权限错误求助
问题:Azure Databricks中使用MLflow向Azure ML Studio注册模型时出现403权限错误
在Azure Databricks平台训练模型,想要将模型注册到Azure Machine Learning Studio,已创建服务主体用于身份认证,但使用MLflow 2.4和2.5版本时,无法记录实验或注册模型,代码及报错信息如下:
原测试代码
from azureml.core.authentication import ServicePrincipalAuthentication from azureml.core import Workspace, Experiment, RunConfiguration, Environment from azure.identity import DefaultAzureCredential from azureml.core.model import Model subscription_id = "" resource_group = "" workspace = "" srv_prc = ServicePrincipalAuthentication() ws = Workspace() mlflow.set_tracking_uri("azureml://eastus.api.azureml.ms/mlflow/v1.0/subscriptions//resourceGroups/mlopstest/providers/Microsoft.MachineLearningServices/workspaces/") mlflow.set_experiment(experiment_name='mlopstest1')
报错信息(已翻译)
MlflowException: 向端点/api/2.0/mlflow/experiments/get-by-name发送API请求失败,错误代码403 != 200。响应体:''
问题分析与解决步骤
1. 修正代码中的关键错误
你的代码存在多处配置缺失,导致认证和连接失败:
- 服务主体认证未传入必要参数(租户ID、主体ID、密码)
- Workspace实例化缺少必填的资源参数
- MLflow跟踪URI不完整(订阅ID为空)
修正后的代码如下:
import mlflow from azureml.core.authentication import ServicePrincipalAuthentication from azureml.core import Workspace # 填充实际的Azure资源信息 subscription_id = "你的订阅ID" resource_group = "你的资源组名称" workspace_name = "你的Azure ML工作区名称" tenant_id = "服务主体所属租户ID" sp_id = "服务主体应用ID" sp_password = "服务主体密码" # 初始化服务主体认证 srv_prc = ServicePrincipalAuthentication( tenant_id=tenant_id, service_principal_id=sp_id, service_principal_password=sp_password ) # 连接Azure ML工作区 ws = Workspace( subscription_id=subscription_id, resource_group=resource_group, workspace_name=workspace_name, auth=srv_prc ) # 使用工作区自动生成的MLflow跟踪URI(避免手动拼接出错) mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri()) # 设置目标实验 mlflow.set_experiment(experiment_name='mlopstest1')
2. 验证服务主体权限
- 确保服务主体被分配了Azure ML工作区的参与者角色(或具备
Microsoft.MachineLearningServices/workspaces/experiments/write、Microsoft.MachineLearningServices/workspaces/models/write等权限的自定义角色) - 在Azure门户的工作区**访问控制(IAM)**中检查服务主体的权限配置
3. 其他检查项
- 确认Databricks集群网络可访问Azure ML的公共端点(若使用私有网络,需配置VNet对等连接或服务端点)
- 建议使用Azure ML工作区推荐的MLflow版本(可在Azure ML Studio的"管理"->"MLflow"页面查看兼容版本)
内容的提问来源于stack exchange,提问作者Enoch Kranthi
相关产品推荐
相关产品推荐

