Azure机器学习实战:使用ScriptRunConfig实现数据输入输出处理

Azure机器学习实战:使用ScriptRunConfig实现数据输入输出处理

MachineLearningNotebooks Python notebooks with ML and deep learning examples with Azure Machine Learning Python SDK | Microsoft MachineLearningNotebooks 项目地址: https://gitcode.com/gh_mirrors/ma/MachineLearningNotebooks

概述

在Azure机器学习服务中,ScriptRunConfig是一个强大的工具,它允许我们配置和提交训练运行,同时处理数据的输入和输出。本文将深入探讨如何使用ScriptRunConfig来构建一个完整的数据处理流程,从数据准备到模型训练再到结果输出。

准备工作

在开始之前,我们需要确保已经完成以下准备工作:

  1. 理解Azure机器学习服务的基本架构和核心概念
  2. 安装并配置好Azure机器学习SDK
  3. 创建好工作区(Workspace)并获取配置文件

初始化工作区

首先,我们需要初始化工作区对象,这是与Azure机器学习服务交互的起点:

from azureml.core import Workspace
ws = Workspace.from_config()
print('工作区名称:', ws.name)
print('Azure区域:', ws.location)
print('订阅ID:', ws.subscription_id)
print('资源组:', ws.resource_group)

这段代码会从配置文件(config.json)中读取工作区信息并创建工作区对象。

创建计算资源

在Azure机器学习中,计算目标(Compute Target)是执行训练任务的资源。我们可以创建一个AmlCompute集群作为训练资源:

from azureml.core.compute import ComputeTarget, AmlCompute
from azureml.core.compute_target import ComputeTargetException

cluster_name = "cpu-cluster"

try:
    compute_target = ComputeTarget(workspace=ws, name=cluster_name)
    print('找到现有计算目标')
except ComputeTargetException:
    print('创建新的计算目标...')
    compute_config = AmlCompute.provisioning_configuration(
        vm_size='STANDARD_D2_V2', 
        max_nodes=4
    )
    compute_target = ComputeTarget.create(ws, cluster_name, compute_config)
    compute_target.wait_for_completion(show_output=True, timeout_in_minutes=20)

print(compute_target.get_status().serialize())

创建计算目标的过程分为三个步骤:

  1. 创建配置(本地操作,几乎瞬间完成)
  2. 创建集群(约20秒)
  3. 配置VM以将集群扩展到初始大小(1个节点,约3-5分钟)

准备训练脚本

我们将使用一个简单的Python脚本来演示数据输入输出处理。这个脚本会读取输入数据,处理后写入输出位置:

%%writefile script_run/dummy_train.py

import sys
import os

print("*********************************************************")
print("Hello Azure ML!")

mounted_input_path = sys.argv[1]
mounted_output_path = sys.argv[2]

print("输入路径:", mounted_input_path)
print("输出路径:", mounted_output_path)
    
with open(mounted_input_path, 'r') as f:
    content = f.read()
    with open(os.path.join(mounted_output_path, 'output.csv'), 'w') as fw:
        fw.write(content)

数据准备与上传

每个工作区都有一个默认的数据存储(DataStore),它关联着Azure Blob存储账户。我们可以使用它来上传数据:

def_blob_store = ws.get_default_datastore()
def_blob_store.upload_files(
    files=['iris.csv'],
    target_path='script-run/',
    overwrite=True,
    show_progress=True
)

配置输入输出

接下来,我们需要配置脚本的输入和输出。输入可以是一个数据集,输出可以指定到数据存储的特定位置:

from azureml.core import Dataset
from azureml.data import OutputFileDatasetConfig

# 配置输入数据集
input_data = Dataset.File.from_files(
    def_blob_store.path('script-run/iris.csv')
).as_named_input('input').as_mount()

# 配置输出位置
output = OutputFileDatasetConfig(
    destination=(def_blob_store, 'sample/outputdataset')
)

配置运行环境

为了确保脚本运行在正确的环境中,我们需要配置运行环境:

from azureml.core import Environment
from azureml.core.conda_dependencies import CondaDependencies

myenv = Environment("myenv")
myenv.docker.enabled = True
myenv.python.conda_dependencies = CondaDependencies.create(
    pip_packages=['azureml-sdk>=1.12.0']
)

配置ScriptRunConfig

现在我们可以将所有配置组合起来创建ScriptRunConfig对象:

from azureml.core import ScriptRunConfig

src = ScriptRunConfig(
    source_directory='script_run',
    script='dummy_train.py',
    arguments=[input_data, output],
    compute_target=compute_target,
    environment=myenv
)

提交并运行实验

最后,我们提交实验并等待运行完成:

from azureml.core import Experiment

exp = Experiment(ws, 'ScriptRun_sample')
run = exp.submit(config=src)
run.wait_for_completion(show_output=True)

运行监控与结果查看

运行提交后,我们可以监控运行状态并查看结果。wait_for_completion方法会显示运行进度,完成后我们可以获取运行详情。

总结

通过本教程,我们学习了如何在Azure机器学习服务中使用ScriptRunConfig来:

  1. 配置计算资源
  2. 准备训练脚本
  3. 处理数据输入输出
  4. 配置运行环境
  5. 提交并监控实验运行

这种方法不仅适用于简单的数据处理任务,也可以扩展到更复杂的机器学习工作流中。通过合理配置输入输出,我们可以构建高效、可重复的数据处理管道。

MachineLearningNotebooks Python notebooks with ML and deep learning examples with Azure Machine Learning Python SDK | Microsoft MachineLearningNotebooks 项目地址: https://gitcode.com/gh_mirrors/ma/MachineLearningNotebooks

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

谭妲茹

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

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

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

打赏作者

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

抵扣说明:

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

余额充值