Azure ML中如何正确指定ScriptRunConfig的source_directory路径?
Azure ScriptRunConfig路径配置问题
问题场景
我在Azure中执行训练脚本,用以下代码配置ScriptRunConfig:
script_config = ScriptRunConfig( source_directory='flightdelayMLfolder', script='training_script.py', environment=env )
运行实验时(代码如下)触发FileNotFoundError,提示找不到路径/mnt/batch/tasks/shared/LS_root/mounts/clusters/,,,,/code/Users/,,,/outputs/MLfolder:
experiment = Experiment(ws, name='flightdelayMLscript') run = experiment.submit(config=script_config) RunDetails(run).show() run.wait_for_completion()
我的账户目录下有两个文件夹:
/Users/myaccount/outputs /Users/myaccount/flightdelayMLfolder
尝试指定flightdelayMLfolder的完整集群挂载路径(/mnt/batch/tasks/shared/LS_root/mounts/clusters.....)时,又报错:script path doesn't exist. The script should be inside the project folder。
附文件夹结构截图:
解决方案
核心规则
ScriptRunConfig的source_directory需满足两个要求:
- 必须是相对于当前运行代码脚本的路径,或是本地可直接访问的绝对路径(不能用集群远端挂载路径)
- 脚本文件
training_script.py必须位于source_directory指定的文件夹内
具体配置方法
根据你的文件夹结构,分两种场景处理:
场景1:当前运行代码的脚本在/Users/myaccount目录下
直接使用相对路径即可,因为flightdelayMLfolder就在当前目录下:
script_config = ScriptRunConfig( source_directory='flightdelayMLfolder', script='training_script.py', environment=env )
若仍报错,可先在本地验证路径有效性:
import os print(os.path.exists('flightdelayMLfolder')) # 输出True则路径有效
场景2:当前运行代码的脚本不在/Users/myaccount目录下
使用本地绝对路径(注意是本地机器路径,而非集群挂载路径):
script_config = ScriptRunConfig( source_directory='/Users/myaccount/flightdelayMLfolder', script='training_script.py', environment=env )
关键注意事项
- 不要使用集群远端的
/mnt/batch/...路径,Azure ML会自动将本地source_directory同步到集群节点,无需手动指定集群路径 - 确保
training_script.py确实在flightdelayMLfolder文件夹内,文件名拼写完全一致(区分大小写) - 若需访问
outputs文件夹,在训练脚本内可使用Azure ML的run.outputs_directory获取集群上的输出路径,不要硬编码本地路径
内容的提问来源于stack exchange,提问作者Karthik S
相关产品推荐
相关产品推荐

