Press "Enter" to skip to content

使用AWS SageMaker Data Wrangler中的新功能优化数据准备

数据准备是任何数据驱动项目中的关键步骤,拥有合适的工具可以极大地提高运营效率。Amazon SageMaker Data Wrangler 可以将从周到分钟的时间将表格和图像数据聚合和准备为机器学习(ML)提供支持。借助 SageMaker Data Wrangler,您可以简化数据准备和特征工程的过程,并从单个可视化界面完成数据准备工作流程的每个步骤,包括数据选择、清洗、探索和可视化。

在本文中,我们将探讨 SageMaker Data Wrangler 的最新功能,这些功能专门设计用于改进操作体验。我们将深入讨论 Simple Storage Service(Amazon S3)清单文件的支持、交互式数据流中的推理工件以及与 JSON(JavaScript 对象表示法)格式的推理的无缝集成,突出显示这些增强功能如何使数据准备更加简便和高效。

介绍新功能

在本节中,我们讨论 SageMaker Data Wrangler 的新功能,以实现最佳数据准备。

使用 SageMaker Autopilot 进行 ML 推理的 S3 清单文件支持

SageMaker Data Wrangler 可以仅需几次点击,实现与 Amazon SageMaker Autopilot 的统一数据准备和模型训练体验。您可以使用 SageMaker Autopilot 自动对在数据流中转换的数据进行训练、调优和部署模型。

现在,S3 清单文件的支持进一步简化了这一体验。S3 清单文件是一个列出存储在 S3 存储桶中的对象(文件)的文本文件。如果在 SageMaker Data Wrangler 中导出的数据集非常大,并且在 Amazon S3 中分为多个部分的数据文件,现在 SageMaker Data Wrangler 会自动创建一个在 S3 中表示所有这些数据文件的清单文件。这个生成的清单文件现在可以与 SageMaker Data Wrangler 中的 SageMaker Autopilot UI 一起使用,以获取所有分区数据进行训练。

在此功能推出之前,在使用 SageMaker Autopilot 对 SageMaker Data Wrangler 中准备的数据进行训练的模型时,您只能选择一个数据文件,这可能无法代表整个数据集,尤其是当数据集非常大时。有了这个新的清单文件体验,您不再受限于数据集的子集。您可以使用清单文件构建一个代表所有数据的 ML 模型,并将其用于 ML 推理和生产部署。此功能通过简化使用 SageMaker Autopilot 训练 ML 模型和优化数据处理工作流程,提高了操作效率。

对生成的工件中推理流的支持

客户希望将应用于模型训练数据的数据转换(例如一位有效编码、主成分分析和填充丢失值)应用于实时推理或批量推理。为此,您必须拥有一个 SageMaker Data Wrangler 推理工件,该工件由 SageMaker 模型使用。

以前,推理工件只能在导出到 SageMaker Autopilot 训练或导出推理流程笔记本时从 UI 生成。如果您想将 SageMaker Data Wrangler 流应用到 Amazon SageMaker Studio 环境之外,这并不提供灵活性。现在,您可以通过 SageMaker Data Wrangler 处理作业为任何兼容的流文件生成推理工件。这使得 SageMaker Data Wrangler 流程可以以编程方式实现端到端 MLOps,适用于以代码为先的 MLOps 个人,同时也提供了一种直观的无代码路径,通过从 UI 创建作业以获取推理工件。

简化数据准备

JSON 已成为现代数据生态系统中广泛采用的数据交换格式。SageMaker Data Wrangler 与 JSON 格式的集成允许您无缝地处理 JSON 数据以进行转换和清洗。通过为 JSON 提供原生支持,SageMaker Data Wrangler 简化了处理结构化和半结构化数据的过程,使您能够提取有价值的见解并高效地准备数据。SageMaker Data Wrangler 现在支持 JSON 格式用于批量和实时推理端点部署。

解决方案概述

对于我们的用例,我们使用示例亚马逊客户评价数据集来展示 SageMaker Data Wrangler 如何简化使用 SageMaker Autopilot 构建新的 ML 模型的操作。亚马逊客户评价数据集包含来自亚马逊的产品评价和元数据,包括从 1996 年 5 月到 2014 年 7 月的 1.428 亿条评价。

在较高层面上,我们使用 SageMaker Data Wrangler 来管理这个大型数据集,并执行以下操作:

  1. 使用SageMaker Autopilot在整个数据集上开发一个ML模型,而不仅仅是一个样本。
  2. 使用SageMaker Data Wrangler生成的推断工件构建实时推断管道,并使用JSON格式进行输入和输出。

SageMaker Autopilot支持S3清单文件

在使用SageMaker Data Wrangler创建SageMaker Autopilot实验时,您以前只能指定单个CSV或Parquet文件。现在,您还可以使用S3清单文件,使您能够在SageMaker Autopilot实验中使用大量数据。SageMaker Data Wrangler将自动将输入数据文件分成几个较小的文件,并生成一个清单,该清单可用于从交互会话中提取所有数据,而不仅仅是一个小样本。

完成以下步骤:

  1. 将亚马逊客户评论数据从CSV文件导入SageMaker Data Wrangler。在导入数据时,请确保禁用抽样。
  2. 指定规范化数据的转换。对于此示例,使用SageMaker Data Wrangler的内置转换删除符号并将所有内容转换为小写。
  3. 选择训练模型开始训练。

使用AWS SageMaker Data Wrangler中的新功能优化数据准备 四海 第1张

要使用SageMaker Autopilot训练模型,SageMaker会自动将数据导出到S3存储桶。对于像这样的大型数据集,它将自动将文件分割成较小的文件,并生成包含较小文件位置的清单。

使用AWS SageMaker Data Wrangler中的新功能优化数据准备 四海 第2张

  1. 首先选择您的输入数据。

以前,SageMaker Data Wrangler没有生成与SageMaker Autopilot一起使用的清单文件的选项。现在,随着清单文件支持的发布,SageMaker Data Wrangler将自动将一个清单文件导出到Amazon S3,并预先填充SageMaker Autopilot训练的S3位置与清单文件的S3位置,并将清单文件选项切换为。无需生成或使用清单文件。

使用AWS SageMaker Data Wrangler中的新功能优化数据准备 四海 第3张

  1. 通过选择模型要预测的目标来配置您的实验。
  2. 接下来,选择训练方法。在这种情况下,我们选择自动,让SageMaker Autopilot根据数据集大小决定最佳的训练方法。

使用AWS SageMaker Data Wrangler中的新功能优化数据准备 四海 第4张

  1. 指定部署设置。
  2. 最后,查看作业配置并提交SageMaker Autopilot实验进行训练。当SageMaker Autopilot完成实验后,您可以查看训练结果并探索最佳模型。

使用AWS SageMaker Data Wrangler中的新功能优化数据准备 四海 第5张

由于支持清单文件,您可以使用整个数据集进行SageMaker Autopilot实验,而不仅仅是数据的子集。

有关使用SageMaker Data Wrangler和Amazon SageMaker Autopilot进行统一数据准备和模型训练的更多信息,请参阅Unified data preparation and model training with Amazon SageMaker Data Wrangler and Amazon SageMaker Autopilot。

从SageMaker Processing作业生成推断工件

现在,让我们看看如何通过SageMaker Data Wrangler UI和SageMaker Data Wrangler笔记本生成推理工件。

SageMaker Data Wrangler UI

对于我们的用例,我们希望通过UI处理数据,然后使用生成的数据通过SageMaker控制台训练和部署模型。完成以下步骤:

  1. 打开在前面部分创建的数据流。
  2. 选择最后一个转换旁边的加号,选择添加目标,然后选择Amazon S3。这将是存储处理后数据的位置。使用AWS SageMaker Data Wrangler中的新功能优化数据准备 四海 第6张
  3. 选择创建作业使用AWS SageMaker Data Wrangler中的新功能优化数据准备 四海 第7张
  4. 在推理参数部分选择生成推理工件以生成推理工件。
  5. 对于推理工件名称,输入推理工件的名称(文件扩展名为.tar.gz)。
  6. 对于推理输出节点,输入与应用于训练数据的转换对应的目标节点。
  7. 选择配置作业使用AWS SageMaker Data Wrangler中的新功能优化数据准备 四海 第8张
  8. 作业配置下,为Flow文件S3位置输入路径。将在此位置下创建一个名为data_wrangler_flows的文件夹,并将推理工件上传到该文件夹中。要更改上传位置,请设置不同的S3位置。
  9. 对于所有其他选项,保留默认值,并选择创建以创建处理作业。使用AWS SageMaker Data Wrangler中的新功能优化数据准备 四海 第9张处理作业将创建一个包含修改后的数据流文件的tarball (.tar.gz),其中包含一个新添加的推理部分,允许您在推理中使用它。在部署推理解决方案时,您需要S3统一资源标识符(URI)来提供推理工件给SageMaker模型。URI的格式将为{Flow文件S3位置}/data_wrangler_flows/{推理工件名称}.tar.gz
  10. 如果您之前没有记下这些值,可以选择处理作业的链接以获取相关详细信息。在我们的示例中,URI为s3://sagemaker-us-east-1-43257985977/data_wrangler_flows/example-2023-05-30T12-20-18.tar.gz.使用AWS SageMaker Data Wrangler中的新功能优化数据准备 四海 第10张
  11. 复制处理图像的值;我们在创建模型时也需要这个URI。使用AWS SageMaker Data Wrangler中的新功能优化数据准备 四海 第11张
  12. 现在我们可以使用这个URI在SageMaker控制台上创建一个SageMaker模型,稍后可以将其部署到端点或批量转换作业中。使用AWS SageMaker Data Wrangler中的新功能优化数据准备 四海 第12张
  13. 模型设置下,输入模型名称并指定您的IAM角色。
  14. 对于容器输入选项,选择提供模型工件和推理图像位置使用AWS SageMaker Data Wrangler中的新功能优化数据准备 四海 第13张
  15. 对于推理代码图像位置,输入处理图像URI。
  16. 对于模型工件位置,输入推理工件URI。
  17. 此外,如果您的数据具有将由训练的ML模型预测的目标列,请在环境变量下指定该列的名称,将INFERENCE_TARGET_COLUMN_NAME作为Key,列名作为Value使用AWS SageMaker Data Wrangler中的新功能优化数据准备 四海 第14张
  18. 通过选择创建模型完成创建模型。使用AWS SageMaker Data Wrangler中的新功能优化数据准备 四海 第15张

我们现在有一个可以部署到端点或批量转换作业的模型。

SageMaker数据整理器笔记本

对于从处理作业生成推理工件的代码优先方法,我们可以通过选择节点菜单上的导出至,然后选择Amazon S3SageMaker流水线SageMaker推理流水线来查找示例代码。在本例中,我们选择SageMaker推理流水线

使用AWS SageMaker Data Wrangler中的新功能优化数据准备 四海 第16张

在这个笔记本中,有一个名为创建处理器的部分(在SageMaker流水线笔记本中也是相同的,但在Amazon S3笔记本中,等效代码将在作业配置部分下)。在这个部分的底部,有一个名为inference_params的推理工件的配置。它包含了我们在UI中看到的相同信息,即推理工件名称和推理输出节点。这些值将被预填充,但可以进行修改。还有一个名为use_inference_params的参数,需要设置为True以在处理作业中使用这个配置。

使用AWS SageMaker Data Wrangler中的新功能优化数据准备 四海 第17张

更下面是一个名为定义流水线步骤的部分,其中将inference_params配置附加到作业参数列表中,并传递给SageMaker数据整理器处理步骤的定义。在Amazon S3笔记本中,job_arguments是在作业配置部分之后立即定义的。

使用AWS SageMaker Data Wrangler中的新功能优化数据准备 四海 第18张

通过这些简单的配置,由这个笔记本创建的处理作业将在与我们的流文件相同的S3位置生成一个推理工件。我们可以以编程方式确定这个S3位置,并使用这个工件使用SageMaker Python SDK创建一个SageMaker模型,这在SageMaker推理流水线笔记本中有所示。

相同的方法也可以应用于创建SageMaker数据整理器处理作业的任何Python代码。

推理过程中输入和输出的JSON文件格式支持

网站和应用程序通常使用JSON作为API的请求/响应格式,以便信息易于被不同的编程语言解析。

以前,在你有一个训练好的模型之后,你只能通过CSV作为SageMaker数据整理器推理流水线中的输入格式与之交互。今天,你可以使用JSON作为输入和输出格式,在与SageMaker数据整理器推理容器交互时提供更大的灵活性。

要开始在推理流水线笔记本中使用JSON进行输入和输出,完成以下步骤:

  1. 定义一个有效载荷。

对于每个有效载荷,模型期望一个名为instances的键。该值是一个对象列表,每个对象都是自己的数据点。这些对象需要一个名为features的键,值应该是一个单个数据点的特征,这些特征打算提交给模型。多个数据点可以在一个请求中提交,每个请求的总大小最多为6 MB。

参见以下代码:

sample_record_payload = json.dumps
(
    {
        "instances":[
            {"features":["这是最好的", "如果我能的话,我每天都会使用这个产品两次。它是最好的"]
            }
            ]
    }
)
  1. ContentType指定为application/json
  2. 提供数据给模型,并以JSON格式接收推理结果。 使用AWS SageMaker Data Wrangler中的新功能优化数据准备 四海 第19张

请参考”推理的常见数据格式”以获取示例输入和输出的JSON示例。

清理

当您完成使用SageMaker Data Wrangler后,我们建议您关闭它运行的实例,以避免产生额外的费用。有关如何关闭SageMaker Data Wrangler应用程序和关联实例的说明,请参阅关闭 Data Wrangler。

结论

SageMaker Data Wrangler的新功能,包括对S3清单文件、推理能力和JSON格式集成的支持,改变了数据准备的操作体验。这些增强功能简化了数据导入、自动化数据转换和简化了与JSON数据的工作。通过这些功能,您可以提高运营效率,减少手动工作,并轻松地从数据中提取有价值的见解。拥抱SageMaker Data Wrangler的新功能,释放数据准备工作流的全部潜力。

要开始使用SageMaker Data Wrangler,请查看SageMaker Data Wrangler产品页面上的最新信息。

Leave a Reply

Your email address will not be published. Required fields are marked *