Azure ML designer下载Blob storage模型在Python脚本模块加载报错咨询
Azure ML Designer加载Blob存储Pickle模型路径错误解决方案
该错误不是Pipeline绑定的Compute Cluster的限制,是Azure ML Python脚本模块的目录读写规则、路径配置问题导致的,可按以下步骤修复:
修复步骤
确认读写路径合法性
Azure ML Designer的Python脚本模块仅开放./scratch(临时目录,Pipeline运行后清空)和./outputs(持久化目录,运行后可在作业详情中查看文件)两个可读写目录,自定义路径会触发不存在/无权限报错,所有文件读写操作都需要放在这两个目录下。调整代码逻辑
示例代码如下:
import os import pickle from azure.storage.blob import BlobClient # 初始化合法目录,强制创建避免目录不存在错误 save_dir = "./scratch" os.makedirs(save_dir, exist_ok=True) model_file_path = os.path.join(save_dir, "trained_model.pkl") # 下载Blob存储中的模型文件 blob_conn_str = "你的Azure Blob存储连接字符串" container_name = "存储容器名称" blob_model_path = "容器内模型文件的路径/xxx.pkl" blob_client = BlobClient.from_connection_string(blob_conn_str, container_name, blob_model_path) with open(model_file_path, "wb") as f: download_stream = blob_client.download_blob() download_stream.readinto(f) # 验证文件存在后加载模型 if os.path.exists(model_file_path): with open(model_file_path, "rb") as f: model = pickle.load(f) else: raise FileNotFoundError(f"模型文件未下载成功,检查Blob连接信息、路径配置")
- 可选更稳定方案:用Datastore挂载访问
你可以将保存模型的Blob存储提前注册为Azure ML工作区的数据存储(Datastore),将模型文件作为数据集直接挂载到Python脚本模块的输入端口,无需手动下载,直接读取挂载路径的文件即可,避免下载逻辑带来的错误。
内容的提问来源于stack exchange,提问作者Guilherme Takata
相关产品推荐
相关产品推荐

