如何拆分Azure ML管道步骤调试并模拟PipelineData对象
解决方案:模拟PipelineData实现单步骤调试
核心思路
PipelineData是Azure ML管道运行时自动管理的存储路径,单独用ScriptRunConfig调试时,我们可以用本地路径或Azure ML数据存储路径模拟它的行为,让原脚本的输入输出逻辑完全不变,无需修改代码。
方法1:本地路径直接模拟(适合快速本地调试)
原脚本中--model_path参数在管道里会被Azure ML替换为实际存储路径,本地调试时直接传入本地文件夹路径即可,脚本读写逻辑完全匹配管道场景:
# 用本地文件夹模拟PipelineData的输出/输入路径,提前创建该文件夹 local_model_path = "./local_model_temp" # 创建验证步骤的ScriptRunConfig validate_script_config = ScriptRunConfig( source_directory=source_folder, script='ValidateStepScript.py', arguments=['--model_name', model_name, '--model_path', local_model_path], # 直接传入本地路径 environment=experiment_env, docker_runtime_config=DockerConfiguration(use_docker=True) ) # 提交运行 experiment = Experiment(workspace=ws, name=experiment_name) run = experiment.submit(config=validate_script_config) run.wait_for_completion(show_output=True)
调试训练步骤时,脚本会自动把模型写入local_model_path,之后验证步骤直接读取该路径即可,完全复刻管道数据流。
方法2:用DataReference模拟管道存储路径(贴近真实运行环境)
如果要更贴近管道的真实运行逻辑(使用Azure ML云端存储),可以用DataReference指向数据存储中的指定路径替代PipelineData:
- 获取工作区默认数据存储:
from azureml.core import Datastore datastore = ws.get_default_datastore()
- 创建指向云端存储路径的DataReference:
from azureml.data.data_reference import DataReference # 模拟PipelineData在云端存储的路径,需提前在数据存储中创建该路径 model_data_ref = DataReference( datastore=datastore, data_reference_name='model', path_on_datastore='simulate_pipeline/model' )
- 将DataReference传入ScriptRunConfig:
validate_script_config = ScriptRunConfig( source_directory=source_folder, script='ValidateStepScript.py', arguments=['--model_name', model_name, '--model_path', model_data_ref], # 传入DataReference environment=experiment_env, docker_runtime_config=DockerConfiguration(use_docker=True) ) experiment = Experiment(workspace=ws, name=experiment_name) run = experiment.submit(config=validate_script_config) run.wait_for_completion(show_output=True)
这种方式下,Azure ML会自动将DataReference解析为云端存储的实际路径,和管道中PipelineData的行为完全一致,脚本无需任何修改。
关键注意事项
- 确保原脚本对
--model_path的处理是直接读写路径本身(原适配PipelineData的脚本天然满足此要求)。 - 使用Docker运行时,本地路径会被自动挂载,无需额外配置。
内容的提问来源于stack exchange,提问作者Jorge LG
相关产品推荐
相关产品推荐

