如何在本地运行AzureML脚本时调用Azure Machine Learning Studio远程数据集
实现方案
你现有的训练脚本已经预留了--data_path参数,无需改动核心逻辑就能同时兼容本地调试、远程挂载Azure Datastore两种场景,具体操作步骤如下:
1. 前置准备
先把训练数据上传到Azure ML工作区绑定的Datastore中,你可以直接在Azure ML Studio的「数据」选项卡上传,也可以用SDK代码上传,上传后记录下数据所在的Datastore名称、以及数据在Datastore中的存储路径。
2. 编写实验提交控制脚本
在本地新建提交脚本submit_run.py,用来把远程Datastore路径作为参数传入你的训练脚本,示例代码如下:
from azureml.core import Workspace, Experiment, ScriptRunConfig, Environment from azureml.core.datastore import Datastore from azureml.data.datapath import DataPath # 连接Azure ML工作区,提前把工作区的config.json下载到本地同目录 ws = Workspace.from_config() # 获取存储训练数据的Datastore,示例用默认的workspaceblobstore,自建Datastore替换对应名称即可 datastore = Datastore.get(ws, datastore_name='workspaceblobstore') # 定义远程数据路径,path_on_datastore填你数据在Datastore里的实际存储目录 remote_data_path = DataPath(datastore=datastore, path_on_datastore='titanic/train_data/') # 加载你的训练环境,提前配置好带pandas、sklearn、azureml-core依赖的环境 env = Environment.get(ws, name='你的训练环境名称') # 配置运行参数,把远程数据路径作为--data_path参数传入训练脚本 src = ScriptRunConfig( source_directory='./', # 填你本地训练脚本所在的目录 script='train.py', # 填你上面贴的训练脚本的文件名 arguments=['--data_path', remote_data_path.as_mount()], # as_mount表示自动挂载远程存储到运行环境 environment=env, compute_target='你的计算集群名称' # 要本地调试直接填'local',会自动在你本地挂载远程Datastore,无需下载数据 ) # 提交实验 experiment = Experiment(ws, name='titanic-svm训练') run = experiment.submit(src) run.wait_for_completion(show_output=True)
可选优化
你的训练脚本里读取数据的代码可以稍加修改,避免挂载目录下有隐藏文件导致读取报错:
# 原代码 # train_df = pd.read_csv(os.path.join(args.data_path, os.listdir(args.data_path)[0])) # 优化后 import glob csv_files = glob.glob(os.path.join(args.data_path, "*.csv")) train_df = pd.read_csv(csv_files[0])
内容的提问来源于stack exchange,提问作者Larsq
相关产品推荐
相关产品推荐

