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

如何在Azure ML作业/管道中直接引用模型目录中的模型(无需注册为自定义模型)

如何在Azure ML作业/管道中直接引用模型目录中的模型(无需注册为自定义模型)

我太懂你现在的处境了——想直接用Azure ML模型注册表(比如那个公共的HuggingFace注册表)里的预训练模型,不想多一步把它注册成自己的自定义模型,结果按之前的方式配置URI还报错了,确实头疼。

先说说你之前踩的坑:用custom_model类型去引用注册表模型完全不对路,这个类型是给咱们自己上传的、非注册表托管的自定义模型用的,注册表的模型属于平台托管的资产,得用对应的类型来指定。

给你两个靠谱的解决方案:

方案一:在管道YAML中正确配置输入类型

你需要把输入类型换成mlflow_model(毕竟HuggingFace注册表的模型大多是MLflow格式打包的),配置格式如下:

ce_model:
  type: mlflow_model
  path: azureml://registries/HuggingFace/models/cross-encoder-stsb-roberta-large/versions/7

如果还是遇到问题,也可以试试registry_model类型,这个是专门为注册表资产设计的:

ce_model:
  type: registry_model
  path: azureml://registries/HuggingFace/models/cross-encoder-stsb-roberta-large/versions/7

这么改之后,Azure ML就能正确识别这个是注册表中的模型,不会再抛出BlobUri无效的错误了。

方案二:在作业脚本中通过SDK直接加载模型

要是YAML配置还是不顺手,你也可以跳过管道输入声明,直接在代码里用Azure ML SDK拉取注册表模型。示例代码如下:

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

# 初始化MLClient,指定目标注册表名称
ml_client = MLClient(
    credential=DefaultAzureCredential(),
    registry_name="HuggingFace"
)

# 获取指定版本的模型
target_model = ml_client.models.get(
    name="cross-encoder-stsb-roberta-large",
    version="7"
)

# 加载MLflow格式的模型
loaded_model = mlflow.pyfunc.load_model(target_model.path)

这种方式更灵活,尤其是需要在代码里对模型做额外处理的时候特别好用。

最后提个小提醒:如果是私有注册表的模型,要确保你的作业身份有访问该注册表的权限;公共注册表比如HuggingFace的模型一般是公开可访问的,不用额外配置权限。

备注:内容来源于stack exchange,提问作者Henrique S. Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 08:04:37