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

部署XGBoost模型到本地托管在线端点时遇MlException错误求助

问题原因及解决方案

问题根源

你直接将mlflow.xgboost.load_model()加载得到的XGBClassifier实例传给了ManagedOnlineDeployment的model参数,但Azure ML托管在线部署要求model参数接收的是:

  • 工作区已注册模型的引用字符串(格式为模型名:版本号)
  • 或Azure ML SDK中的Model对象
    而非本地加载的模型实例。

错误信息的三个提示均因传入对象类型错误导致:

  • Non-string passed to RegistryStr for model/Non-string passed to ArmStr for model:未传入符合要求的字符串格式模型引用
  • 'XGBClassifier' object has no attribute '_intellectual_property':XGBoost模型实例不具备Azure ML Model对象的特有属性,部署逻辑无法识别

修复方案

方案1:使用注册模型的引用字符串(推荐)

直接传入已注册模型的名称和版本号,同时补充部署必填的instance_type和instance_count参数:

blue_deployment = ManagedOnlineDeployment(
    name='blue',
    endpoint_name='diabetes-online-endpoint',
    model='diabetes-prediction:1',  # 对应你注册的模型名和版本
    instance_type='Standard_DS3_v2',  # 根据需求选择合适的计算实例类型
    instance_count=1
)

ml_client.online_deployments.begin_create_or_update(blue_deployment, local=True)

方案2:获取Azure ML的Model对象传入

先通过ML客户端获取工作区中已注册的Model对象,再传入部署配置:

# 获取注册的模型对象
registered_model = ml_client.models.get(name='diabetes-prediction', version='1')

blue_deployment = ManagedOnlineDeployment(
    name='blue',
    endpoint_name='diabetes-online-endpoint',
    model=registered_model,
    instance_type='Standard_DS3_v2',
    instance_count=1
)

ml_client.online_deployments.begin_create_or_update(blue_deployment, local=True)

额外注意

你原代码中缺少instance_type和instance_count两个必填参数,即使解决了模型参数问题,部署也会因缺少这两个参数报错,必须补充。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 20:33:15