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

如何将Azure ML中的sklearn模型保存至指定Blob存储容器?

问题解答

Azure ML是否关联本地文件存储?

  • Azure ML的计算实例和计算集群都配备了临时本地存储:
    • 计算实例有固定的本地工作目录(如/home/azureuser),存储会随实例保留(只要实例不被删除),但仅适合临时文件操作,不建议作为模型长期存储的方案。
    • 计算集群的节点本地存储是临时态,节点停止或销毁后数据会被清除,仅用于任务执行过程中的临时缓存。
  • 这类本地存储并非必须使用,完全可以跳过本地保存步骤,直接将模型上传到目标Blob存储容器。

能否通过指向指定存储容器的Datastore完成模型保存?

完全可以,以下是两种无需本地文件的实现方案:

方案1:通过Datastore直接上传内存中的模型

将sklearn模型序列化到内存字节流,再通过Datastore直接上传到目标Blob容器:

from azureml.core import Workspace, Datastore
import joblib
import io

# 加载工作区及已关联目标Blob容器的Datastore
ws = Workspace.from_config()
target_datastore = Datastore.get(ws, datastore_name="你的Datastore名称")

# 假设你的sklearn模型变量名为model
# 将模型序列化到内存字节流
model_stream = io.BytesIO()
joblib.dump(model, model_stream)
model_stream.seek(0)

# 上传到Blob容器指定路径
target_datastore.upload_bytes(
    data=model_stream.getvalue(),
    target_path="models/sklearn_models/",  # Blob容器内的存储路径
    target_name="trained_model.joblib"     # Blob文件名称
)

方案2:注册模型时直接关联Datastore

如果需要将模型纳入Azure ML模型注册表,可直接注册内存中的模型并指定存储到目标Datastore:

from azureml.core import Workspace, Model
import joblib
import io

ws = Workspace.from_config()
target_datastore = Datastore.get(ws, datastore_name="你的Datastore名称")

# 序列化模型到内存
model_stream = io.BytesIO()
joblib.dump(model, model_stream)
model_stream.seek(0)

# 注册模型并指定存储到目标Datastore
registered_model = Model.register(
    workspace=ws,
    model_name="sklearn-classification-model",
    model_path=None,  # 不指定本地文件路径
    model_data=model_stream.getvalue(),  # 传入内存中的模型数据
    description="直接存储到目标Blob容器的Sklearn分类模型",
    datastore=target_datastore
)

补充说明

  • 两种方案均无需将模型写入本地文件,直接完成模型到目标Blob容器的存储。
  • 确保你的Datastore已正确关联目标Blob容器,且当前Azure ML工作区拥有该Datastore的读写权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 23:55:27