直接从亚马逊 SageMaker Pipelines 中启动亚马逊 SageMaker Autopilot 实验,轻松实现 mLOP 工作流程的自动化

亚马逊 SageMaker A utopilot 是一项低代码机器学习 (ML) 服务,可根据表格数据自动构建、训练和调整最佳机器学习模型,现已与第一款专为机器学习构建的持续集成和持续交付 (CI/CD) 服务亚马逊 SageMaker Pip elines 集成。这使得使用 Autopilot 构建机器学习模型并将模型集成到后续的 CI/CD 步骤中的端到端流程实现自动化。

到目前为止,要在管道中启动自动驾驶实验,你必须通过使用流水线 Lambd a 或处理步骤编写自定义集成代码来构建模型构建工作流程。 有关更多信息,请参阅使用 亚马逊 SageMaker Pipelines 将亚马逊 SageMaker Autopilot 机器学习模型从实验 转移到生产

由于在 Pipelines 中支持将自动驾驶作为原生步骤,您现在可以在管道中添加自动训练步骤 (A utomlStep ),并使用 Ensembl ing 训练模式调用自动驾驶仪实验。 例如,如果您正在使用 Pipelines 为欺诈检测用例构建训练和评估机器学习工作流程,则现在可以使用 AutoML 步骤启动 Autopilot 实验,该步骤会自动运行多次试验,在给定的输入数据集上找到最佳模型。使用 “模型” 步骤创建最佳 模型 后 ,可以使用 Pipelines 中自定义评估脚本的 “ 转换” 步骤 和 处理步骤 ,根据测试数据评估其性能。最终,可以将模型步骤与 条件 步骤结合使用 SageMaker 模型注册到 SageMaker 模型 注册表 中。

在这篇文章中,我们将介绍如何使用流水线中新推出的AutoML步骤创建端到端的机器学习工作流程来训练和评估SageMaker生成的机器学习模型,并将其注册到SageMaker模型注册表中。性能最佳的机器学习模型可以部署到 SageMaker 端点。

数据集概述

我们使用公开的 UCI 1994年成人人口普查收入数据集 来预测一个人的年收入是否超过50,000美元。这是一个二元分类问题;收入目标变量的选项要么是<=50K,要么是>50K。

该数据集包含 32,561 行用于训练和验证,16,281 行用于测试,每行 15 列。这包括有关个人和 阶级的人口统计信息 ,以此作为指示收入阶层的目标列。

Column Name Description
age Continuous
workclass Private, Self-emp-not-inc, Self-emp-inc, Federal-gov, Local-gov, State-gov, Without-pay, Never-worked
fnlwgt Continuous
education Bachelors, Some-college, 11th, HS-grad, Prof-school, Assoc-acdm, Assoc-voc, 9th, 7th-8th, 12th, Masters, 1st-4th, 10th, Doctorate, 5th-6th, Preschool
education-num Continuous
marital-status Married-civ-spouse, Divorced, Never-married, Separated, Widowed, Married-spouse-absent, Married-AF-spouse
occupation Tech-support, Craft-repair, Other-service, Sales, Exec-managerial, Prof-specialty, Handlers-cleaners, Machine-op-inspct, Adm-clerical, Farming-fishing, Transport-moving, Priv-house-serv, Protective-serv, Armed-Forces
relationship Wife, Own-child, Husband, Not-in-family, Other-relative, Unmarried
race White, Asian-Pac-Islander, Amer-Indian-Eskimo, Other, Black
sex Female, Male
capital-gain Continuous
capital-loss Continuous
hours-per-week Continuous
native-country United-States, Cambodia, England, Puerto-Rico, Canada, Germany, Outlying-US(Guam-USVI-etc), India, Japan, Greece, South, China, Cuba, Iran, Honduras, Philippines, Italy, Poland, Jamaica, Vietnam, Mexico, Portugal, Ireland, France, Dominican-Republic, Laos, Ecuador, Taiwan, Haiti, Columbia, Hungary, Guatemala, Nicaragua, Scotland, Thailand, Yugoslavia, El-Salvador, Trinadad&Tobago, Peru, Hong, Holand-Netherlands
class Income class, either <=50K or >50K

解决方案概述

我们使用流水线来协调训练自动驾驶 模型 所需的不同 流水线步骤 。如本教程所述,我们创建并运行自动 驾驶实验 作为 AutoML 步骤的一部分。

此端到端自动驾驶训练过程需要执行以下步骤:

  • 使用 AutomlStep 创建和监控自动驾驶训练作业。
  • 使用 ModelStep 创建 SageMaker 模型。 此步骤获取最佳模型的元数据和上一步中由自动驾驶仪渲染的伪像。
  • 使用 TransformStep 在测试数据集上评估经过训练的自动驾驶仪模型。
  • 使用 P roces singStep 将之前运行的 Tr ansfor mStep 的输出与实际目标标签进行比较。
  • 如果先前获得的评估指标超过 ConditionStep 中的预定义阈值 ,则 使用 ModelStep 将机器学习模型 注册到 SageMaker 模型注册表。
  • 将机器学习模型作为 SageMaker 端点进行部署以用于测试目的。

架构

下面的架构图说明了将所有步骤打包成可重现、自动化和可扩展的 SageMaker Autopilot 训练管道所需的不同工作流步骤。从 S3 存储桶读取数据文件,并按顺序调用管道步骤。

草率排练

这篇文章详细解释了管道步骤。我们将审查代码并讨论每个步骤的组成部分。要部署解决方案,请参阅 示例笔记本 ,其中提供了使用管道实现 Autopilot mLops 工作流程的分步说明。

先决条件

完成以下先决条件:

  • 设置一个 亚马逊云科技 账户
  • 创建 亚马逊 Sage Maker Stu dio 环境。
  • 创建 A WS 身份和访问管理 (IAM) 角色。有关说明,请参阅 创建向 IAM 用户委派权限的角色 。具体而言,您需要创建一个 SageMaker 执行角色 。 你可以将 AmazonsagemakerFullAcces s 托管 IAM 政策附加到其中,用于演示。但是,为了提高安全性,应进一步缩小范围。
  • 导航到 Studio 并从 GitHub 上的 笔记本示例目录 中上传文件 。
  • 打开 SageMaker 笔记本电脑 sagemaker_autopilot_pipelines_native_auto_ml_ste p.ipynb 然后按顺序运行单元格。按照有关如何初始化笔记本并获取示例数据集的说明进行操作。

当数据集准备就绪可供使用时,我们需要设置流水线以建立可重复的流程,使用自动驾驶仪自动构建和训练机器学习模型。我们使用 SageMaker SDK 以编程方式定义、运行和跟踪端到端的机器学习训练管道。

管道步骤

在以下部分中,我们将介绍 SageMaker 管道中的不同步骤,包括 AutoML 训练、模型创建、批量推断、评估和最佳模型的条件注册。下图说明了整个管道流程。

AutoML 训练步骤

AutoML 对象 用于定义 Autopilot 训练作业运行,可以使用 A utoMLStep 类将其添加到 SageMaker 管道中,如以下代码所示。需要指定组合训练模式,但可以根据需要调整其他参数。例如,与其让 AutoML 作业自动推断机器学习 问题类型 目标指标 ,不如通过指定传递给 Auto ML 对象的问题类型 和目标指标对它们进行硬编码

automl = AutoML(
    role=execution_role,
    target_attribute_name=target_attribute_name,
    sagemaker_session=pipeline_session,
    total_job_runtime_in_seconds=max_automl_runtime,
    mode="ENSEMBLING",
)
train_args = automl.fit(
    inputs=[
        AutoMLInput(
            inputs=s3_train_val,
            target_attribute_name=target_attribute_name,
            channel_type="training",
        )
    ]
)
step_auto_ml_training = AutoMLStep(
    name="AutoMLTrainingStep",
    step_args=train_args,
)

模型创建步骤

AutoML 步骤负责生成各种 ML 候选模型,将它们组合起来,并获得最佳的 ML 模型。模型工件和元数据会自动存储,可以通过在 AutoML 训练步骤中调用 get_best_auto_ml_mol_model () 方法来获取。 然后,它们可用于创建 SageMaker 模型,这是 “模型” 步骤的一部分:

best_auto_ml_model = step_auto_ml_training.get_best_auto_ml_model(
    execution_role, sagemaker_session=pipeline_session
)
step_args_create_model = best_auto_ml_model.create(instance_type=instance_type)
step_create_model = ModelStep(name="ModelCreationStep", step_args=step_args_create_model)

批量转换和评估步骤

我们使用 Tr ansformer 对象 对测试数据集进行 批量推断 ,然后可以将其用于评估目的。使用 Scikit-Learn 指标函数将输出预测与实际或基本真值标签进行比较。我们根据 F1 分数 评估结果 。性能指标保存到 JSON 文件中,在后续步骤中注册模型时会引用该文件。

有条件的注册步骤

在此步骤中,如果新的 Autopilot 模型超过预定义的评估指标阈值,我们会将其注册到 SageMaker 模型注册表中。

创建并运行管道

定义步骤后,我们将它们合并为一个 SageMaker 管道:

pipeline = Pipeline(
    name="AutoMLTrainingPipeline",
    parameters=[
        instance_count,
        instance_type,
        max_automl_runtime,
        model_approval_status,
        model_package_group_name,
        model_registration_metric_threshold,
        s3_bucket,
        target_attribute_name,
    ],
    steps=[
        step_auto_ml_training,
        step_create_model,
        step_batch_transform,
        step_evaluation,
        step_conditional_registration,
    ],
    sagemaker_session=pipeline_session,
)

这些步骤按顺序运行。该管道使用自动驾驶仪和流水线运行 AutoML 作业的所有步骤,以进行训练、模型评估和模型注册。

你可以通过导航到 Studio 控制台上的模型注册表并打开 A utoml ModelPackageGroup 来查看新模型。选择任意版本的训练作业以在 模型质量 选项卡上查看目标指标。

您可以在 “可解释性 ” 选项卡上查看可 解释性报告,以了解模型的预测。

要查看在 AutoM LStep 中创建的所有模型的基础自动驾驶实验 ,请导航到 A utoML 页面并选择作业名称。

部署模型

在我们手动查看机器学习模型的性能之后,我们可以将新创建的模型部署到 SageMaker 端点。为此,我们可以使用保存在SageMaker模型注册表中的模型配置运行笔记本中创建模型端点的单元。

请注意,共享此脚本是出于演示目的,但建议遵循更强大的 CI/CD 管道进行机器学习推理的生产部署。有关更多信息,请参阅 使用亚马逊 SageMaker Pipelines 构建、自动化、管理和扩展机器学习工作流程

摘要

这篇文章介绍了一种易于使用的机器学习流水线方法,该方法使用自动驾驶仪、流水线和 Studio 自动训练表格机器学习模型 (AutoML)。AutoML 提高了机器学习从业者的效率,无需大量的机器学习专业知识即可加快从机器学习实验到生产的路径。我们概述了创建、评估和注册机器学习模型所需的相应管道步骤。首先尝试使用 示例笔记本 来训练和部署自己的自定义 AutoML 模型。

有关自动驾驶仪和管道的更多信息,请参阅 使用亚马逊 SageMaker Autopilot 和亚马逊 SageMaker Pipelines 自动 开发模型

特别感谢所有为发布会做出贡献的人 :岳胜华、何健、郭奥、涂新路、秦天、胡燕达、陆占奎和齐德文。


作者简介

Janisha An and 是 SageMaker Low/No Code ML 团队的高级产品经理,该团队包括 SageMaker Autopilot。她喜欢喝咖啡、保持活跃以及与家人共度时光。

Marcelo Aberle 是 亚马逊云科技 AI 的机器学习工程师。他帮助 亚马逊机器学习解决方案实验室 的 客户构建可扩展的机器学习(-Ops)系统和框架。业余时间,他喜欢在旧金山湾区远足和骑自行车。

Geremy Cohen 是 亚马逊云科技 的解决方案架构师,他帮助客户构建基于云的尖端解决方案。在业余时间,他喜欢在海滩上短暂散步,与家人一起探索海湾地区,修理房子周围的东西,打破房子周围的东西,以及烧烤。

岳胜华 是亚马逊 SageMaker 的软件开发工程师。她专注于为客户开发机器学习工具和产品。工作之余,她喜欢户外活动、瑜伽和徒步旅行。