Azure机器学习实验运行管理实战指南
概述
在机器学习项目开发过程中,实验运行(Experiment Runs)的管理是确保模型可追溯性和可重复性的关键环节。本文将深入探讨如何使用Azure机器学习服务有效管理训练运行,包括运行的生命周期管理、属性标记、子运行管理以及运行重现等技术要点。
实验运行基础概念
实验运行是机器学习工作流中的基本执行单元,通常用于训练模型,也可用于数据加载和转换等任务。Azure机器学习服务会自动跟踪所有运行,并支持记录指标和工件。
运行状态生命周期
一个运行通常会经历以下状态变化:
- 排队中(Queued)
- 准备中(Preparing)
- 运行中(Running)
- 已完成(Completed)
- 失败(Failed)
- 已取消(Canceled)
环境准备
在开始管理运行之前,需要确保环境配置正确:
import azureml.core
from azureml.core import Workspace, Experiment, Run
from azureml.core import ScriptRunConfig
# 检查SDK版本
print(azureml.core.VERSION)
# 连接工作区
ws = Workspace.from_config()
# 创建实验
exp = Experiment(workspace=ws, name="explore-runs")
运行生命周期管理
启动和监控运行
最简单的启动运行方式是使用start_logging
方法:
# 启动运行并记录指标
with exp.start_logging() as notebook_run:
notebook_run.log(name="message", value="Hello from run!")
print("运行状态:", notebook_run.get_status())
提交脚本运行
更常见的场景是提交Python脚本作为独立进程运行:
# 创建运行配置
run_config = ScriptRunConfig(source_directory='.', script='hello.py')
# 提交运行
local_script_run = exp.submit(run_config)
# 等待运行完成
local_script_run.wait_for_completion(show_output=True)
运行状态检查
可以通过多种方式获取运行状态和详细信息:
# 获取基本状态
print(local_script_run.get_status())
# 获取详细信息和日志
details = local_script_run.get_details_with_logs()
# 在门户中查看运行
local_script_run
运行属性与标记管理
属性(Properties)与标记(Tags)的区别
- 属性:不可变的元数据,适合记录审计信息
- 标记:可变的键值对,适合灵活分类
添加属性
local_script_run.add_properties({"author":"azureml-user"})
print(local_script_run.get_properties())
添加和更新标记
# 添加标记
local_script_run.tag("quality", "great run")
# 更新标记
local_script_run.tag("quality", "fantastic run")
# 添加简单标记
local_script_run.tag("worth another look")
运行查询技术
基础查询
# 按属性和标记查询
list(exp.get_runs(properties={"author":"azureml-user"}, tags={"quality":"fantastic run"}))
高级查询模式
可以组合多个条件进行复杂查询,例如查找特定作者的所有"值得再看"的运行。
子运行管理
创建子运行
子运行适合组织相关运行,如超参数调优:
with exp.start_logging() as parent_run:
for i in range(5):
with parent_run.child_run() as child:
child.log(name="Iteration", value=i)
查询子运行
children = list(parent_run.get_children())
print(f"找到 {len(children)} 个子运行")
运行控制技术
取消运行
run_config = ScriptRunConfig(source_directory='.', script='long_running.py')
run = exp.submit(run_config)
run.cancel()
标记失败运行
if error_condition:
run.fail()
运行重现技术
获取运行快照
# 恢复运行快照
local_script_run.restore_snapshot(path="snapshots")
重现运行环境
快照包含运行时的完整代码状态,可用于精确复现实验条件。
最佳实践建议
- 属性标记策略:建立统一的属性命名规范,如使用"purpose"、"model-type"等
- 运行分类:合理使用子运行组织相关实验
- 状态监控:对长时间运行设置超时和自动取消机制
- 快照管理:定期清理不必要的快照以节省存储空间
总结
通过Azure机器学习服务的运行管理功能,数据科学家可以有效地跟踪、组织和重现机器学习实验。本文介绍的技术可以帮助团队建立规范的实验管理流程,提高模型开发的可追溯性和协作效率。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考