Azure ML Studio:如何从DatasetConsumptionConfig获取数据目录路径?
关于Azure ML DatasetConsumptionConfig获取实际路径的问题
首先明确:无法在定义Pipeline的代码中直接从DatasetConsumptionConfig获取真实的挂载路径,因为这个路径是计算节点运行时动态生成的,并非提前固定的。DatasetConsumptionConfig本质是用来配置数据集在计算目标上的消费规则(挂载/下载)的对象,本身不存储实际路径,只有当Pipeline在计算节点上执行时,Azure ML才会完成挂载并生成本地路径。
简化的替代方案
1. 用Named Input在脚本内直接获取路径
不用通过arguments传参,而是在PythonScriptStep中指定inputs,然后在脚本内部通过Run上下文获取路径,步骤更简洁:
Pipeline定义代码:
from azureml.pipeline.steps import PythonScriptStep step = PythonScriptStep( script_name="myscript.py", inputs=[dataset_mount], # 直接传入DatasetConsumptionConfig对象 compute_target=compute_target, workspace=aml_workspace )
myscript.py中的代码:
from azureml.core.run import Run run = Run.get_context() # 通过命名输入的名称获取实际路径 dataset_path = run.input_datasets["mydatasetname"] # 后续即可用dataset_path访问数据文件
2. 交互式环境(如Notebook)下获取路径
如果是在Notebook这类交互式环境中想访问数据集,不需要用DatasetConsumptionConfig,直接手动挂载数据集获取路径:
mount_context = dataset.mount() mount_context.start() # 获取挂载路径 dataset_path = mount_context.mount_point # 在此处进行数据读取操作... # 操作完成后停止挂载 mount_context.stop()
补充说明
你之前通过arguments传参的方式是Azure ML的标准用法之一,但用Named Input的方式可以省去手动处理参数的步骤,更符合Pipeline的设计逻辑。
内容的提问来源于stack exchange,提问作者jarmniku
相关产品推荐
相关产品推荐

