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

Azure ML从Blob容器注册模型报错:TypeError解决方案及替代方法

问题解决与替代实现方法

一、解决当前TypeError错误

报错的核心原因是container_registry并非Model.register()方法的合法参数,直接移除这一行即可解决问题。

修正后的注册代码

from azureml.core import Model
from azureml.core import Workspace

subscription_id = 'mysub'
resource_group = 'my_resource_group'
workspace_name = 'my_ws_name'

ws = Workspace(subscription_id, resource_group, workspace_name)

model_path = 'my_model.joblib'
container = 'mycontainer'
model_name = 'my_model_v1'

model = Model.register(
    workspace=ws,
    model_name=model_name,
    model_path=model_path,
    description="Test_Model",
    tags={'area': "emotion detection"},
    model_framework=Model.Framework.SCIKITLEARN,
    model_framework_version='0.24.1',
    resource_configuration=None,
    properties=None,
    sample_input_dataset=None,
    sample_output_dataset=None,
    datasets=None,
    model_url=f'https://mystorage.blob.core.windows.net/{container}/{model_path}'
)
print("模型注册完成,Ws对象已创建")

二、确保外部Blob模型注册成功的注意事项

  • 若Blob存储为公开可读,上述代码可直接运行;
  • 若为私有Blob存储,需生成带权限的SAS URL替换model_url,或通过Azure ML Datastore注册(更安全):

替代方法:通过Datastore注册私有Blob模型

  1. 先注册Blob存储为Datastore(仅需执行一次)
from azureml.core import Datastore

datastore = Datastore.register_azure_blob_container(
    workspace=ws,
    datastore_name="my_blob_datastore",
    container_name=container,
    account_name="mystorage",
    account_key="your_blob_account_key"  # 也可使用SAS token
)
  1. 通过Datastore路径注册模型
model = Model.register(
    workspace=ws,
    model_name=model_name,
    model_path=f'datastore://my_blob_datastore/{model_path}',
    description="Test_Model",
    tags={'area': "emotion detection"},
    model_framework=Model.Framework.SCIKITLEARN,
    model_framework_version='0.24.1'
)

三、后续部署端点步骤(补充)

模型注册成功后,可部署为在线端点:

  1. 编写评分脚本score.py
import joblib
import json
import numpy as np

def init():
    global model
    model_path = Model.get_model_path(model_name='my_model_v1')
    model = joblib.load(model_path)

def run(raw_data):
    data = json.loads(raw_data)['data']
    np_data = np.array(data)
    result = model.predict(np_data)
    return result.tolist()
  1. 配置环境并部署
from azureml.core import Environment
from azureml.core.model import InferenceConfig
from azureml.core.webservice import AciWebservice

# 创建运行环境
env = Environment.from_conda_specification(name="sklearn_env", file_path="conda_dependencies.yml")

# 推理配置
inference_config = InferenceConfig(entry_script="score.py", environment=env)

# ACI部署资源配置
aci_config = AciWebservice.deploy_configuration(cpu_cores=1, memory_gb=1)

# 部署端点
service = Model.deploy(
    workspace=ws,
    name="emotion-detection-service",
    models=[model],
    inference_config=inference_config,
    deployment_config=aci_config
)
service.wait_for_deployment(show_output=True)
print(service.scoring_uri)

配套的conda_dependencies.yml文件内容:

name: sklearn_env
dependencies:
- python=3.8
- scikit-learn=0.24.1
- joblib
- numpy

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 00:27:19