通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。

通过参数化数据集和计划作业更好地控制您的 Amazon SageMaker Data Wrangler 工作负载

数据正在改变每个领域和每个企业。 然而,随着数据增长速度超过大多数公司的追踪速度,收集数据并从数据中获取价值是一件具有挑战性的事情。 一个 现代数据战略 可以帮助您利用数据创造更好的业务成果。 AWS 为以下领域提供最完整的服务集 端到端数据之旅 详细以帮助您 从您的数据中释放价值 并将其转化为洞察力。

数据科学家可能会花费多达 80% 的时间为机器学习 (ML) 项目准备数据。 这个准备过程在很大程度上是无差别和繁琐的工作,并且可能涉及多个编程 API 和自定义库。 亚马逊SageMaker数据牧马人 通过可视化界面帮助数据科学家和数据工程师简化和加速表格和时间序列数据准备和特征工程。 您可以从多个数据源导入数据,例如 亚马逊简单存储服务 (Amazon S3), 亚马逊雅典娜, 亚马逊Redshift,甚至第三方解决方案,如 雪花 or 数据砖,并使用 300 多种内置数据转换和代码片段库处理您的数据,因此您无需编写任何代码即可快速规范化、转换和组合功能。 您还可以在 PySpark、SQL 或 Pandas 中使用您的自定义转换。

这篇文章演示了如何安排数据准备作业自动运行。 我们还探索了参数化数据集的新 Data Wrangler 功能,它允许您通过参数化 URI 指定要包含在数据流中的文件。

解决方案概述

Data Wrangler 现在支持使用参数化 URI 导入数据。 这允许进一步的灵活性,因为您现在可以导入与指定参数匹配的所有数据集,这些参数可以是 URI 中的字符串、数字、日期时间和模式类型。 此外,您现在可以按计划触发 Data Wrangler 转换作业。

在本文中,我们使用 Titanic 数据集创建了一个示例流,以展示您如何开始试验这两个新的 Data Wrangler 功能。 要下载数据集,请参阅 泰坦尼克号——灾难中的机器学习.

先决条件

要获得本文中描述的所有功能,您需要运行最新内核版本的 Data Wrangler。 有关详细信息,请参阅 更新数据牧马人. 此外,您需要运行 亚马逊SageMaker Studio JupyterLab 3. 查看当前版本并更新,参考 JupyterLab 版本控制.

档案结构

对于此演示,我们遵循一个简单的文件结构,您必须复制该文件结构才能重现本文中概述的步骤。

  1. 在工作室, 创建一个新笔记本.
  2. 运行以下代码片段以创建我们使用的文件夹结构(确保您位于文件树中所需的文件夹中):
    !mkdir titanic_dataset
    !mkdir titanic_dataset/datetime_data
    !mkdir titanic_dataset/datetime_data/2021
    !mkdir titanic_dataset/datetime_data/2022
    
    !mkdir titanic_dataset/datetime_data/2021/01 titanic_dataset/datetime_data/2021/02 titanic_dataset/datetime_data/2021/03 
    !mkdir titanic_dataset/datetime_data/2021/04 titanic_dataset/datetime_data/2021/05 titanic_dataset/datetime_data/2021/06
    !mkdir titanic_dataset/datetime_data/2022/01 titanic_dataset/datetime_data/2022/02 titanic_dataset/datetime_data/2022/03 
    !mkdir titanic_dataset/datetime_data/2022/04 titanic_dataset/datetime_data/2022/05 titanic_dataset/datetime_data/2022/06
    
    !mkdir titanic_dataset/datetime_data/2021/01/01 titanic_dataset/datetime_data/2021/02/01 titanic_dataset/datetime_data/2021/03/01 
    !mkdir titanic_dataset/datetime_data/2021/04/01 titanic_dataset/datetime_data/2021/05/01 titanic_dataset/datetime_data/2021/06/01
    !mkdir titanic_dataset/datetime_data/2022/01/01 titanic_dataset/datetime_data/2022/02/01 titanic_dataset/datetime_data/2022/03/01 
    !mkdir titanic_dataset/datetime_data/2022/04/01 titanic_dataset/datetime_data/2022/05/01 titanic_dataset/datetime_data/2022/06/01
    
    !mkdir titanic_dataset/train_1 titanic_dataset/train_2 titanic_dataset/train_3 titanic_dataset/train_4 titanic_dataset/train_5
    !mkdir titanic_dataset/train titanic_dataset/test

  3. 复制 train.csvtest.csv 文件从原始泰坦尼克号数据集到文件夹 titanic_dataset/traintitanic_dataset/test
  4. 运行以下代码片段以使用必要的文件填充文件夹:
    import os
    import math
    import pandas as pd
    batch_size = 100
    
    #Get a list of all the leaf nodes in the folder structure
    leaf_nodes = []
    
    for root, dirs, files in os.walk('titanic_dataset'):
        if not dirs:
            if root != "titanic_dataset/test" and root != "titanic_dataset/train":
                leaf_nodes.append(root)
                
    titanic_df = pd.read_csv('titanic_dataset/train/train.csv')
    
    #Create the mini batch files
    for i in range(math.ceil(titanic_df.shape[0]/batch_size)):
        batch_df = titanic_df[i*batch_size:(i+1)*batch_size]
        
        #Place a copy of each mini batch in each one of the leaf folders
        for node in leaf_nodes:
            batch_df.to_csv(node+'/part_{}.csv'.format(i), index=False)

我们分开了 train.csv 泰坦尼克号数据集的文件分成九个不同的文件,命名为 part_x,其中 x 是部件的编号。 第 0 部分有前 100 条记录,第 1 部分有下 100 条记录,依此类推,直到第 8 部分。文件树的每个节点文件夹都包含训练数据的九个部分的副本,除了 traintest 文件夹,其中包含 train.csvtest.csv.

参数化数据集

Data Wrangler 用户现在可以为从 Amazon S3 导入的数据集指定参数。 数据集参数在资源的 URI 中指定,其值可以动态更改,从而可以更灵活地选择我们要导入的文件。 参数可以是四种数据类型:

  • 联系电话 – 可以取任何整数的值
  • – 可以取任何文本字符串的值
  • 模式 – 可以取任何正则表达式的值
  • 日期时间 – 可以采用任何支持的日期/时间格式的值

在本节中,我们提供了此新功能的演练。 这仅在您将数据集导入当前流后才可用,并且仅适用于从 Amazon S3 导入的数据集。

  1. 从您的数据流中,选择导入步骤旁边的加号 (+),然后选择 编辑数据集.
  2. 创建新参数的首选(也是最简单)方法是突出显示 URI 的一部分并选择 创建自定义参数 在下拉菜单上。 您需要为要创建的每个参数指定四项内容:
    1. 名字
    2. Type
    3. 默认值
    4. 产品描述

    通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。
    这里我们创建了一个 String 类型的参数,叫做 filename_param 默认值为 train.csv. 现在您可以看到包含在双括号中的参数名称,替换了我们之前突出显示的 URI 部分。 因为这个参数的定义值是 train.csv,我们现在看到文件 train.csv 列在进口表上。
    通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。

  3. 当我们尝试创建转换作业时,在 配置作业 步骤,我们现在看到一个 参数 部分,我们可以在其中看到所有已定义参数的列表。
  4. 选择参数让我们可以选择更改参数的值,在这种情况下,根据定义的流程更改要转换的输入数据集。
    假设我们改变的价值 filename_paramtrain.csvpart_0.csv, 转换工作现在需要 part_0.csv (前提是名称为 part_0.csv 存在于同一文件夹下)作为其新输入数据。
    通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。
  5. 此外,如果您尝试将流导出到 Amazon S3 目标(通过 Jupyter 笔记本),您现在会看到一个包含您定义的参数的新单元格。
    请注意,该参数采用默认值,但您可以通过在 parameter_overrides 字典(同时保留字典的键不变)。
    通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。
    此外,您可以从 参数 UI。
  6. 通过选择参数图标({{}}) 位于旁边 Go 选项; 它们都位于 URI 路径值旁边。
    通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。打开一个表,其中包含流文件中当前存在的所有参数 (filename_param 此时)。
  7. 您可以通过选择为流程创建新参数 创建参数.
    通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。
    将打开一个弹出窗口,让您创建新的自定义参数。
  8. 在这里,我们创建了一个新的 example_parameter 作为默认值为 0 的数字类型。这个新创建的参数现在列在 参数 桌子。 将鼠标悬停在参数上会显示选项 编辑, 删除插页.通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。
  9. 从内部 参数 UI,您可以通过选择所需的参数并选择将您的参数之一插入到 URI 插页.
    这会将参数添加到 URI 的末尾。 您需要将其移动到您的 URI 中的所需部分。
    通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。
  10. 更改参数的默认值,应用更改(从模态),选择 Go, 然后选择刷新图标以根据新定义的参数值使用所选数据集更新预览列表。通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。现在让我们探索其他参数类型。 假设我们现在有一个数据集被分成多个部分,其中每个文件都有一个部分编号。
  11. 如果我们想动态更改文件编号,我们可以定义一个 Number 参数,如下面的屏幕截图所示。通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。请注意,所选文件是与参数中指定的编号相匹配的文件。
    通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。现在让我们演示如何使用 Pattern 参数。 假设我们要导入所有 part_1.csv 下所有文件夹中的文件 titanic-dataset/ 文件夹。 模式参数可以采用任何有效的正则表达式; 有一些正则表达式模式作为示例显示。
  12. 创建一个名为 any_pattern 匹配下的任何文件夹或文件 titanic-dataset/ 具有默认值的文件夹 .*.注意通配符不是单个*(星号),而是还有一个点。
  13. 突出显示 titanic-dataset/ 路径的一部分并创建自定义参数。 这次我们选择 模式 类型。通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。此模式选择所有名为 part-1.csv 从下面的任何文件夹 titanic-dataset/.
    通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。一个参数可以在一个路径中多次使用。 在下面的例子中,我们使用我们新创建的参数 any_pattern 在我们的 URI 中两次以匹配下面任何文件夹中的任何零件文件 titanic-dataset/.
    通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。最后,让我们创建一个 Datetime 参数。 当我们处理按日期和时间分区的路径时,日期时间参数很有用,例如由 亚马逊 Kinesis 数据流水线 (见 Kinesis Data Firehose 中的动态分区). 对于此演示,我们使用 datetime-data 文件夹下的数据。
  14. 选择路径中日期/时间部分并创建自定义参数。 选择 日期时间 参数类型。
    选择 Datetime 数据类型时,您需要填写更多详细信息。
  15. 首先,您必须提供日期格式。 您可以选择任何预定义的日期/时间格式或创建自定义格式。
    对于预定义的日期/时间格式,图例提供了与所选格式匹配的日期示例。 对于此演示,我们选择格式 年年/月/日.通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。
  16. 接下来,为日期/时间值指定时区。
    例如,当前日期在一个时区可能是1年2022月2日,但在另一个时区可能是2022年XNUMX月XNUMX日。
  17. 最后,您可以选择时间范围,这样您就可以选择要包含在数据流中的文件范围。
    您可以以小时、天、周、月或年为单位指定时间范围。 对于这个例子,我们想要获取去年的所有文件。
  18. 提供参数说明并选择 创建.
    如果您使用具有不同时区的多个数据集,时间不会自动转换; 您需要预处理每个文件或源以将其转换为一个时区。通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。所选文件为去年数据对应的文件夹下的所有文件。通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。
  19. 现在,如果我们创建一个数据转换作业,我们可以看到所有定义参数的列表,我们可以覆盖它们的默认值,以便我们的转换作业选择指定的文件。通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。
    通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。

安排处理作业

您现在可以安排处理作业以自动运行数据转换作业并将转换后的数据导出到 Amazon S3 或 Amazon SageMaker功能商店. 您可以根据需要安排作业的时间和周期。

计划处理作业使用 亚马逊EventBridge 定位、竞价/采购和分析/优化数字媒体采购,但算法只不过是解决问题的操作和规则。 安排作业的运行。 因此,作为先决条件,您必须确保 AWS身份和访问管理 Data Wrangler 使用的 (IAM) 角色,即 亚马逊SageMaker 执行角色 Studio 实例的权限,有权创建 EventBridge 规则。

配置 IAM

对与运行 Data Wrangler 流的 Studio 实例对应的 IAM SageMaker 执行角色进行以下更新:

  1. 附上 AmazonEventBridgeFullAccess 托管政策。
  2. 附加策略以授予创建处理作业的权限:
    {
    	"Version": "2012-10-17",
    	"Statement": [
    		{
    			"Effect": "Allow",
    			"Action": "sagemaker:StartPipelineExecution",
    			"Resource": "arn:aws:sagemaker:Region:AWS-account-id:pipeline/data-wrangler-*"
    		}
    	]
    }

  3. 通过添加以下信任策略授予 EventBridge 承担角色的权限:
    {
    	"Effect": "Allow",
    	"Principal": {
    		"Service": "events.amazonaws.com"
    	},
    	"Action": "sts:AssumeRole"
    }

或者,如果您使用不同的角色来运行处理作业,请将步骤 2 和 3 中概述的策略应用于该角色。 有关 IAM 配置的详细信息,请参阅 创建计划以自动处理新数据.

创建时间表

要创建计划,请在 Data Wrangler 流编辑器中打开您的流。

  1. 点击 数据流 标签,选择 建立工作.
  2. 配置必填字段并选择 接下来,2.配置作业.
    通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。
  3. 扩大 关联时间表.
  4. 创建新时间表.
    通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。
    创建新时间表 对话框打开,您可以在其中定义处理作业计划的详细信息。
    该对话框提供了极大的灵活性来帮助您定义计划。 例如,您可以让处理作业在一周中的特定几天的特定时间或每 X 小时运行一次。通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。
    周期性可以细化到分钟级别。通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。
  5. 定义计划名称和周期,然后选择 创建 保存计划。
  6. 您可以选择立即开始处理作业以及计划,这会处理未来的运行,或者让作业仅根据计划运行。
  7. 您还可以为同一处理作业定义额外的计划。
    通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。
  8. 要完成处理作业的计划,请选择 创建.
    您会看到“作业计划成功”消息。 此外,如果您选择让作业仅根据计划运行,您会看到指向您刚刚创建的 EventBridge 规则的链接。通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。

如果您选择计划链接,浏览器中会打开一个新选项卡,显示 EventBridge 规则。 在此页面上,您可以对规则进行进一步修改并跟踪其调用历史记录。 要停止运行计划的处理作业,请删除包含计划名称的事件规则。

通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。

EventBridge 规则将 SageMaker 管道显示为其目标,该管道根据定义的计划触发,并且处理作业作为管道的一部分调用。

通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。

要跟踪 SageMaker 管道的运行,您可以返回 Studio,选择 SageMaker资源 图标,选择 管道, 然后选择要跟踪的管道名称。 您现在可以看到一个表格,其中包含该管道的所有当前和过去运行以及状态。

通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。

您可以通过双击特定条目来查看更多详细信息。

通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。

清理

当您不使用 Data Wrangler 时,建议关闭运行它的实例以避免产生额外费用。

为避免丢失工作,请在关闭 Data Wrangler 之前保存您的数据流。

  1. 要将数据流保存在 Studio 中,请选择 文件,然后选择 保存数据牧马人流程. Data Wrangler 每 60 秒自动保存一次您的数据流。
  2. 要关闭 Data Wrangler 实例,请在 Studio 中选择 运行实例和内核.
  3. 运行应用程序, 选择旁边的关机图标 sagemaker-data-wrangler-1.0 应用程序。通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。
  4. 全部关闭 进行确认。通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。

Data Wrangler 在 ml.m5.4xlarge 实例上运行。 此实例从 运行实例 当您关闭 Data Wrangler 应用程序时。

关闭 Data Wrangler 应用程序后,它必须在您下次打开 Data Wrangler 流文件时重新启动。 这可能需要几分钟。

结论

在本文中,我们演示了如何使用参数通过 Data Wrangler 流导入数据集并在其上创建数据转换作业。 参数化数据集允许您使用的数据集具有更大的灵活性,并允许您重用流。 我们还演示了如何设置计划作业,以在适合您需要的时间和周期内直接从 Data Wrangler 的用户界面中自动执行数据转换并导出到 Amazon S3 或 Feature Store。

要了解有关通过 Data Wrangler 使用数据流的更多信息,请参阅 创建和使用数据管理员流Amazon SageMaker定价. 要开始使用 Data Wrangler,请参阅 使用 Amazon SageMaker Data Wrangler 准备 ML 数据.


关于作者

通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。大卫·拉雷多 是 Amazon Web Services 原型设计和云工程团队的原型设计架构师,他帮助为 AWS 客户开发了多个机器学习原型。 在过去的 6 年里,他一直从事机器学习工作,训练和微调 ML 模型并实施端到端管道以生产这些模型。 他感兴趣的领域是 NLP、ML 应用程序和端到端 ML。

通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。吉瓦尼尔多·阿尔维斯 是 Amazon Web Services 原型设计和云工程团队的原型设计架构师,通过在 AWS 上展示可能的艺术来帮助客户创新和加速,已经围绕人工智能实施了多个原型。 他在软件工程领域拥有很长的职业生涯,之前曾在 Amazon.com.br 担任软件开发工程师。

通过参数化数据集和计划作业 PlatoBlockchain 数据智能,更好地控制您的 Amazon SageMaker Data Wrangler 工作负载。 垂直搜索。 人工智能。阿德里安·富恩特斯 是 Amazon Web Services 原型设计和云工程团队的项目经理,为机器学习、物联网和区块链领域的客户进行创新。 他拥有超过 15 年的项目管理和实施经验以及 1 年的 AWS 任期。

时间戳记:

更多来自 AWS机器学习