本文介绍:
- 什么是 Azure 机器学习管道中的重复使用
- 重用的工作原理
- 调试重用问题的分步指南
什么是 Azure 机器学习管道中的重复使用?
使用 Azure 机器学习管道生成模型是一个迭代过程。 作为数据科学家,你可以从基本管道开始,然后试验不同的机器学习算法或执行超参数优化来改进模型。 在此过程中,你将提交许多管道作业,与上一个作业相比,这些作业可能只有较小的更改。 借助重用功能,管道可以在满足特定条件的情况下自动使用上一作业的输出,而无需再次运行组件。 这可以在开发管道时节省时间和金钱。
在图中,数据科学家首先提交了 job_1
,然后将 Component_D
添加到管道并提交 job_2
。 执行管道 job_2
时,管道服务会检测 Component_A
、Component_B
、Component_C
的输出,这些输出保持不变。 因此,它不会再次运行前三个组件。 而是重复使用 job_1
的输出,并且仅在 job_2
中运行 Component_D
。
重用的工作原理是什么?
Azure 机器学习管道具有用于计算某个组件输出是否可以重复使用的整体逻辑。 下图说明了重用条件。
重用条件:
- 组件定义
is_deterministic
= true - 管道运行时设置
ForceReRun
= false - 组件代码、环境定义、输入和参数、输出设置和运行设置都是相同的。
如果组件满足重用条件,则管道服务将跳过组件的执行,复制原始组件的状态,显示已重用组件的原始组件的输出/日志/指标。 在管道 UI 中,重用的组件会显示一个小的回收图标,表示此组件已重用。
调试管道重用问题的步骤
如果重用在管道中未按预期工作,请尝试以下步骤进行调试。
步骤 1:检查管道设置 ForceRerun=True 是否正确
如果管道设置 ForceRerun
设为 True
,管道的所有子作业会重新运行。
注意
强制重新运行管道的所有子作业不能被其他作业重用。 因此,请确保检查希望重用的作业和要从中重用的原始作业的 ForceRerun 值。
若要在管道 UI 中检查 ForceRerun
设置,请转到管道作业概述选项卡。
步骤 2:检查组件定义 is_deterministic = True 是否正确
右键单击某个组件,然后选择“查看定义”。
is_deterministic = True
表示此组件为相同的输入数据生成相同的输出。 如果它设置为 False
,则组件将始终重新运行。
步骤 3:通过比较“ContentSnapshotId”检查是否有任何代码更改
如果有两个作业,则预期第二个作业会重用第一个作业,但它未重用。 可以比较这两个作业中的组件快照。 如果快照 ID 更改了,则意味着存在一些组件代码内容更改,这会导致重新运行。
- 双击组件以打开其右侧面板
- 在“概述”选项卡下打开原始 JSON
- 在原始 JSON 中搜索快照 ID
步骤 4:检查是否有任何环境更改
如果使用内联环境,请比较组件 YAML 中的环境定义。 组件 YAML 可能不会上传到“代码”选项卡。在这种情况下,需要转到组件源代码以检查组件的环境定义。
如果使用命名环境,请转到“环境”选项卡比较环境名称和定义。
可以复制粘贴这两个作业的 env 定义,然后使用本地编辑器(如 VS Code 或 Notepad++)对其进行比较。
还可以在图形比较功能中比较环境。 我们将在下一步中介绍图形比较。
步骤 5:如果输入、参数、输出设置、运行设置有任何其他更改,请使用图形比较进行检查
可以使用比较功能来比较两个管道作业或组件的输入数据、参数、输出设置和运行设置。 若要了解详细信息,请参阅如何启用和使用图形比较功能
若要确定两个管道之间在管道拓扑、管道输入/输出或管道设置中的任何更改,请在将两个管道作业添加到比较列表后选择“比较图形”。
此外,可以比较两个组件,观察组件输入/输出、组件设置或源代码中是否有任何更改。 为此,请在将两个组件添加到比较列表后选择“比较详细信息”。
步骤 6:与 Azure 联系以获得支持
如果按照上述所有步骤操作,但仍找不到意外重新运行的根本原因,则可以向 Azure 提交支持案例票证以获取帮助。