Azure Machine Learning中创建Pipeline用于数据传输处理

首先要搞清楚两个慨念:

1.Datastores---相当于数据库,用于数据存储的管理,浏览,blob指二进制数据存储

2.Dataset---相当于数据库中的表,用于数据的处理

文件结构(三个文件,两个文件夹):

主文件,这里命名为pipelineDataProcessing.py

文件夹train以及文件夹下面的文件train.py

文件夹prep以及文件夹下面的文件prep.py,一个题外话:为什么不和train.py共用一个文件夹?因为执行代码时会将文件夹下面的文件拷贝到服务器运行,文件越少,速度越快

好了,下面来看代码,先看:

pipelineDataProcessing.py

首先要添加引用,如果没有安装的化,先安装需要的包

from azureml.core import Datastore,Experiment,Workspace
form azureml.data import OutputFileDatasetConfig
from azureml.data.datapath import DataPath,DataPathComputeBinding
from azureml.pipeline.core import Pipeline,PipelineParameter
from azureml.pipeline.steps import PythonScriptStep

然后获取workspace

#本地运行要创建一个.azureml文件夹,里面创建一个config.json文件
#配置要有三个要素:{"subscription_id":"xxxx","resource_group":"xxxx","workspace_name":"xxxx"}
ws=Workspace.from_config()

定于一个实验路径,所运行的实验会放到这个路径下面

experiment_name="my_experiment"
experiemnt=Experiment(ws,experiment_name)

指定你要用到的计算机实例(如果没有先创建一个,代码创建参考论坛其他帖子)

#"csdn-cp"需改成自己的计算机实例名
compute_name="csdn-cp"
compute_target=ws.compute_targets[compute_name]

获得workspaceblobstore

#也可以用Datastore(ws,"datastorename")来指定
def_blob_store=ws.get_default_datastore()

定义管道参数

pipeline_param_string=PipelineParameter(

        name="input_string",

        default_value='sample_string')
data_path=DataPath(

        datastore=def_blob_store,

        path_on_datastore='csv在datastore中文件路径')
pipeline_param_datapath=PipelineParameter(

        name="input_datapath",

        default_value=data_path)
datapath_input=(pipeline_param_datapath,DataPathComputeBind(mode='mount'))

定义输出:

output_data=OutputFileDatasetConfig(
    name="train_data",
    destination=(
        def_blob_store,
        "UI/{rn-id}/output-name}")).as_mount()
#注册以后的数据可以在Data中看到,可以直接引用
datatrain_output=output_data.register_on_completer(
    name='train_data',
    description='file from prep',
    tags={"step":['step1']})

定义运行的步骤:

prep_step=PythonScriptStep(
    name='prep_step',
    script_name='prep.py',
    arguments=[
        "--arg1",pipeline_param_string,
        "--arg2",datapath_output,
        "--arg3",datatrain_output],
    inputs=[datapath_input],
    outputs=[datatrain_output],
    compute_target=compute_target,
    source_directory="./prep")

train_step=PythonScriptStep(
    name='train_step',
    script_name='train.py',
    arguments=[
        "--input",datatrain_output],
    inputs=[datatrain_output],
    compute_target=compute_target,
    source_directory="./train",
    allow_reuse=True)

定义pipeline:

pipeline=Pipeline(workspace=ws,steps=[prep_step,train_step])
pipeline_run=experiment.submit(pipeline)
pipeline_run.wait_for_completion()

再看

prep.py

import argparse
import csv
import os

添加运行时候的参数:

parser=argparse.ArgumentParser("perp")
parser.add_argument("--arg1",type=str,help="string sample")
parser.add_argument("--arg2",type=str,help="datapath sample")
parser.add_argument("--arg3",type=str,help="dataoutput sample")
args=parser.parse_args()

这里可以看到参数都是字符串,那数据如何来操作呢?

#arg2指向的是一个csv数据集
data_path=args.arg2
with open(data_path) as f:
    reader=csv.reader(f)
    i=1
    for row in reader:
        print('第 %d 行的数据为: %s',%(i,row))
        i=i+1

with open(data_path,'rb') as f:
    content=f.read()
    with open(os.path.join(args.arg3,'csv-file.csv'),'wb') as fw:
        fw.write(content)
print(output file have been saved)

train.py是在prep.py基础上简化一下就可以了,这里就不再列出来了

运行pipelineDataProcessing.py后,在experiment(现在是Jobs)下面打开对应的实验,可以看到pipeline,点右上角的Job overview可以看到pipeline的参数等,点prep_step切换到prep_step的属性页面,可以看到参数,logs,上传的代码等。在outputs+logs下面选70_driver_log.txt,可以看到程序运行时的输出(print输出内容,可以检查确认),下面是一个管道的图片,和上面的代码对应不上,不过也可以看下pipeline是什么样子。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水滴与鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值