本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
步骤 3:定义管道
在此步骤中,定义了管道将执行的操作顺序和逻辑。这包括离散步骤及其逻辑输入和输出。例如,管道开始时的数据处于什么状态? 它是来自不同精细程度的多个文件还是来自单个平面文件? 如果数据来自多个文件,则需要对所有文件执行一个步骤还是需要对每个文件执行单独的步骤来定义预处理逻辑? 决定取决于数据源的复杂性及其预处理程度。
在我们的参考实施方案中,我们使用 AWS Step Functions
使用 Step Functions SDK
为了定义机器学习管道,我们首先使用 AWS Step Functions 数据科学 SDK(Step Functions SDK)提供的高级 Python API 来定义管道的两个关键组件:步骤和数据。如果您将管道视为有向无环图 (DAG),则步骤表示图形上的节点,数据显示为连接一个节点(步骤)和下一个节点(步骤)的有向边。机器学习步骤的典型示例包括预处理、训练和评估。Step Functions SDK 提供了许多你可以使用的内置步骤(例如 TrainingStep
机器学习管道还需要配置参数来对每个机器学习步骤的行为进行精细控制。这些特殊的数据占位符被称为参数占位符。在定义管道时,它们的许多值都是未知的。参数占位符的示例包括您在流水线设计期间定义的与基础设施相关的参数(例如, AWS 区域 或容器镜像 URL),以及您在运行管道时定义的与机器学习建模相关的参数(例如超参数)。
扩展 Step Functions SDK
在我们的参考实施方案中,一项要求是使用特定的参数设置将机器学习管道定义与具体的机器学习管道创建和部署分开。但是,Step Functions SDK 中的一些内置步骤不允许我们传入所有这些占位符参数。相反,参数值应在管道设计期间通过 SageMaker AI 配置 API 调用直接获得。如果 SageMaker AI 设计时环境与 A SageMaker I 运行时环境相同,则可以正常工作,但在现实环境中这种情况很少见。管道设计时间和运行时间之间的紧密耦合,以及机器学习平台基础设施将保持不变的假设,严重阻碍了设计管道的适用性。实际上,即使是底层部署平台发生最轻微的变化,机器学习管道也会立即中断。
为了克服这一挑战并生成强大的机器学习管道(我们想设计一次然后在任何地方运行),我们通过扩展一些内置步骤来实现自己的自定义步骤,包括TrainingStepModelStep、和TransformerStep。这些扩展功能在 ML Max 项目