随着组织规模的扩大,运行工作负载的复杂性增加,开发和操作流程和工作流的需求变得至关重要。 因此,组织采用了技术最佳实践,包括微服务架构、MLOps、DevOps 等,以缩短交付时间、减少缺陷并提高员工生产力。 这篇文章介绍了在您的内部管理自定义代码的最佳实践 Amazon SageMaker Data Wrangler 工作流程.
Data Wrangler 是一种低代码工具,可促进数据分析、预处理和可视化。 它包含 300 多个内置数据转换步骤,以帮助进行特征工程、规范化和清理,无需编写任何代码即可转换数据。
除了内置转换之外,Data Wrangler 还包含一个自定义代码编辑器,允许您实施用 Python、PySpark 或 SparkSQL 编写的自定义代码。
使用 Data Wrangler 自定义转换步骤来实现自定义函数时,您需要实施有关在 Data Wrangler 流中开发和部署代码的最佳实践。
这篇文章展示了如何使用存储在 AWS 代码提交 在 Data Wrangler 自定义转换步骤中。 这为您提供了额外的好处,包括:
- 提高人员和团队之间的生产力和协作
- 对您的自定义代码进行版本控制
- 无需登录即可修改您的 Data Wrangler 自定义转换步骤 亚马逊SageMaker Studio 使用数据牧马人
- 在自定义转换步骤中引用参数文件
- 在 CodeCommit 中使用扫描代码 亚马逊CodeGuru 或任何 第三方应用程序 用于 Data Wrangler flowsagemake 之前的安全漏洞
解决方案概述
这篇文章演示了如何使用自定义转换步骤构建 Data Wrangler 流文件。 您无需将自定义函数硬编码到您的自定义转换步骤中,而是从 CodeCommit 中提取包含该函数的脚本,加载它,然后在您的自定义转换步骤中调用加载的函数。
对于这篇文章,我们使用 bank-full.csv
来自的数据 加州大学欧文机器学习库 来演示这些功能。 数据与银行机构的直接营销活动有关。 通常,需要与同一客户有多个联系人来评估产品(银行定期存款)是否会被认购(yes
) 或未订阅 (no
).
下图说明了此解决方案。
工作流程如下:
- 创建 Data Wrangler 流文件并从中导入数据集 亚马逊简单存储服务(Amazon S3).
- 创建一系列 Data Wrangler 转换步骤:
- 用于实施存储在 CodeCommit 中的自定义代码的自定义转换步骤。
- 两个内置的转换步骤。
我们将转换步骤保持在最低限度,以免偏离本文的目标,即关注自定义转换步骤。 有关可用转换步骤和实施的更多信息,请参阅 转换资料 和 数据牧马人博客.
- 在自定义转换步骤中,编写代码以从 CodeCommit 拉取脚本和配置文件,将脚本作为 Python 模块加载,并调用脚本中的函数。 该函数将配置文件作为参数。
- 运行 Data Wrangler 作业并将 Amazon S3 设置为目标。
目的地选项还包括 Amazon SageMaker功能商店.
先决条件
作为先决条件,我们设置了 CodeCommit 存储库、Data Wrangler 流程和 CodeCommit 权限。
创建 CodeCommit 存储库
在这篇文章中,我们使用 AWS CloudFormation 模板以设置 CodeCommit 存储库并将所需文件复制到此存储库中。 完成以下步骤:
- 启动堆栈:
- 选择要在其中创建 CodeCommit 存储库的区域。
- 输入名称 堆栈名称.
- 输入要为其创建的存储库的名称 回购名称.
- 创建堆栈.
AWS CloudFormation 需要几秒钟的时间来预置您的 CodeCommit 存储库。 之后 CREATE_COMPLETE
status 出现,导航到 CodeCommit 控制台以查看您新创建的存储库。
设置数据管理员
下载 bank.zip
来自的数据集 加州大学欧文机器学习库. 然后,提取内容 bank.zip
和 上传 bank-full.csv
到亚马逊 S3。
创建 Data Wrangler 流文件并导入 bank-full.csv
来自 Amazon S3 的数据集,完成以下步骤:
- 使用快速入门加入 SageMaker Studio 适用于 Studio 新用户。
- 选择您的 SageMaker 域和用户配置文件,然后在 实行 菜单中选择 GOHAT STUDIO.
- 在Studio控制台上, 文件 菜单中选择 全新,然后选择 数据牧马人流程.
- Amazon S3 资料来源.
- 导航到包含该文件的 S3 存储桶并上传
bank-full.csv
文件中。
A 预览错误 将被抛出。
- 更改 分隔符 ,在 更多信息 右边的窗格 分号.
数据集的预览将显示在结果窗口中。
- 在 更多信息 窗格,在 打样 下拉菜单,选择 不包含.
这是一个相对较小的数据集,因此您不需要采样。
- 进口.
配置 CodeCommit 权限
您需要向 Studio 提供访问 CodeCommit 的权限。 我们使用 CloudFormation 模板来配置 AWS 身份和访问管理 (IAM) 政策 那给你的 工作室角色 访问 CodeCommit 的权限。 完成以下步骤:
- 启动堆栈:
- 选择您工作的地区。
- 输入名称 堆栈名称.
- 输入您的 Studio 域 ID SageMaker 域 ID. 域信息在 SageMaker 控制台上可用 域名 页面,如下面的截图所示。
- 输入您的 Studio 域用户个人资料名称 SageMaker用户配置文件名称. 您可以通过导航到您的 Studio 域来查看您的用户个人资料名称。 如果您的 Studio 域中有多个用户配置文件,请输入用于启动 Studio 的用户配置文件的名称。
- 选择确认框。
此 CloudFormation 模板使用的 IAM 资源提供最低权限,以成功创建附加到您的 Studio 角色的 IAM 策略以进行 CodeCommit 访问。
- 创建堆栈.
改造步骤
接下来,我们添加转换来处理数据。
自定义转换步骤
在这篇文章中,我们计算 方差膨胀因子 (VIF) 对于每个数字特征和超过 VIF 阈值的丢弃特征。 我们在自定义转换步骤中执行此操作,因为在撰写本文时 Data Wrangler 没有针对此任务的内置转换。
但是,我们不会硬编码此 VIF 函数。 相反,我们将此函数从 CodeCommit 存储库拉入自定义转换步骤。 然后我们在数据集上运行该函数。
- 在 Data Wrangler 控制台上,导航到您的数据流。
- 选择旁边的加号 资料类型 并选择 添加变换.
- + 添加步骤.
- 自定义变换.
- (可选)在 名字 领域。
- 蟒蛇(PySpark) 在下拉菜单上。
- 针对 您的自定义转换,输入以下代码(提供 CodeCommit 存储库的名称和存储库所在的区域):
该代码使用 适用于Python的AWS开发工具包(Boto3) 访问 CodeCommit API 函数。 我们使用 get_file
用于将文件从 CodeCommit 存储库拉入 Data Wrangler 环境的 API 函数。
- 预览.
在 输出 窗格中,将显示一个表格,显示不同的数值特征及其对应的 VIF 值。 对于本练习,VIF 阈值设置为 1.2。 但是,您可以在 parameter.json
在您的 CodeCommit 存储库中找到的文件。 您会注意到已删除两列(pdays
和 previous
),使总列数达到 15。
- 地址.
编码分类特征
一些特征类型是需要转换成数字形式的分类变量。 使用 one-hot encode 内置转换来实现这种数据转换。 让我们创建代表数据集中每个分类特征的唯一值的数字特征。 完成以下步骤:
- + 添加步骤.
- 选择 分类编码 转变。
- 点击 改造 下拉菜单,选择 一键编码.
- 针对 输入栏,选择所有分类特征,包括
poutcome
,y
,month
,marital
,contact
,default
,education
,housing
,job
及loan
. - 针对 输出样式,选择 列.
- 预览 预览结果。
考虑到特征的数量和每个特征中的唯一值,单热编码可能需要一段时间才能生成结果。
- 地址.
对于使用 one-hot 编码创建的每个数字特征,名称结合了附加下划线的分类特征名称 (_
) 以及该特征中的唯一分类值。
下降柱
y_yes
feature 是本练习的目标列,因此我们删除 y_no
功能。
- + 添加步骤.
- 管理栏.
- 下降柱 下 改造.
-
y_no
下 要删除的列. - 预览,然后选择 地址.
创建 Data Wrangler 作业
现在您已经创建了所有转换步骤,您可以创建一个 Data Wrangler 作业来处理您的输入数据并将输出存储在 Amazon S3 中。 完成以下步骤:
- 数据流 回去了 数据流 页面上发布服务提醒。
- 选择流可视化最后一个图块上的加号。
- 添加目的地 并选择 Amazon S3.
- 输入输出文件的名称 数据集名称.
- 浏览 并选择存储桶目的地 亚马逊 S3 位置.
- 添加目的地.
- 建立工作.
- 更改 工作名称 您认为合适的价值。
- 接下来,2.配置作业.
- 更改 实例数 至 1,因为我们使用相对较小的数据集,以减少产生的成本。
- 创建.
这将启动一个 Amazon SageMaker处理作业 处理您的 Data Wrangler 流文件并将输出存储在指定的 S3 存储桶中。
自动化和干细胞工程
现在您已经创建了 Data Wrangler 流文件,您可以 始你 您的 Data Wrangler 作业在特定时间和频率自动运行。 这是 Data Wrangler 开箱即用的功能,可简化安排 Data Wrangler 作业的过程。 此外,还支持 CRON 表达式,并在安排 Data Wrangler 作业时提供额外的自定义和灵活性。
但是,这篇文章展示了如何在每次对 CodeCommit 存储库中的文件进行修改时自动运行 Data Wrangler 作业。 这种自动化技术可确保对自定义代码函数的任何更改或对 CodeCommit 中配置文件中值的更改会触发 Data Wrangler 作业以立即反映这些更改。
因此,您不必手动启动 Data Wrangler 作业来获取反映您刚刚所做更改的输出数据。 通过这种自动化,您可以提高 Data Wrangler 工作负载的敏捷性和规模。 要自动化您的 Data Wrangler 作业,您需要配置以下内容:
- Amazon SageMaker管道 – 管道可帮助您使用易于使用的 Python SDK 创建机器学习 (ML) 工作流,并且您可以使用 Studio 可视化和管理您的工作流
- 亚马逊EventBridge – EventBridge 促进与 AWS 服务、软件即服务 (SaaS) 应用程序和自定义应用程序的连接,作为事件生产者启动工作流。
创建 SageMaker 管道
首先,您需要为您的 Data Wrangler 作业创建一个 SageMaker 管道。 然后完成以下步骤 导出您的 Data Wrangler 流程 到 SageMaker 管道:
- 选择最后一个变换图块上的加号( 目的地 瓦)。
- 输出到.
- SageMaker 推理管道(通过 Jupyter Notebook).
这将创建一个新的 Jupyter notebook,其中预填充了用于为您的 Data Wrangler 作业创建 SageMaker 管道的代码。 在运行笔记本中的所有单元格之前,您可能需要更改某些变量。
- 添加一个 训练步骤 到你的管道,改变
add_training_step
可变为True
.
请注意,运行训练作业会在您的账户上产生额外费用。
- 指定一个值
target_attribute_name
可变为y_yes
.
- 要更改管道的名称,请更改
pipeline_name
变量。
- 最后,通过选择运行整个笔记本 运行 和 运行所有单元格。
这将创建一个 SageMaker 管道并运行 Data Wrangler 作业。
- 要查看您的管道,请选择导航窗格中的主页图标并选择 管道。
您可以看到创建的新 SageMaker 管道。
- 选择新创建的管道以查看运行列表。
- 请记下 SageMaker 管道的名称,因为您稍后会用到它。
- 选择第一个运行并选择 图表 看到一个 有向无环图(DAG) SageMaker 管道的流程。
如以下屏幕截图所示,我们没有向我们的管道添加训练步骤。 如果您向管道添加了训练步骤,它将显示在您的管道运行中 图表 标签下的 DataWrangler处理步骤.
创建 EventBridge 规则
为 Data Wrangler 作业成功创建 SageMaker 管道后,您可以继续设置 EventBridge 规则。 此规则侦听 CodeCommit 存储库中的活动,并在 CodeCommit 存储库中的任何文件发生修改时触发管道的运行。 我们使用 CloudFormation 模板自动创建这个 EventBridge规则. 完成以下步骤:
- 启动堆栈:
- 选择您工作的地区。
- 输入名称 堆栈名称.
- 输入 EventBridge 规则的名称 事件规则名称.
- 输入您为其创建的管道的名称 管道名称.
- 输入您正在使用的 CodeCommit 存储库的名称 回购名称.
- 选择确认框。
此 CloudFormation 模板使用的 IAM 资源提供了成功创建 EventBridge 规则的最低权限。
- 创建堆栈.
CloudFormation 模板需要几分钟才能成功运行。 当。。。的时候 Status 改变为 创建完成,您可以导航到 EventBridge 控制台以查看创建的规则。
现在您已经创建了此规则,您对 CodeCommit 存储库中的文件所做的任何更改都将触发 SageMaker 管道的运行。
测试管道 编辑 CodeCommit 存储库中的文件,修改您的 VIF 阈值 parameter.json
文件到不同的编号,并转到 SageMaker 管道详细信息页面以 查看管道的新运行 创建。
在这个新的管道运行中,Data Wrangler 会丢弃 VIF 值大于您在 parameter.json
CodeCommit 中的文件。
您已经成功地自动化和分离了您的 Data Wrangler 作业。 此外,您可以向 SageMaker 管道添加更多步骤。 您还可以修改 CodeCommit 中的自定义脚本以在您的 Data Wrangler 流中实现各种功能。
还可以将您的脚本和文件存储在 Amazon S3 中,并将它们下载到您的 Data Wrangler 自定义转换步骤中,作为 CodeCommit 的替代方案。 此外,您使用 Python(脚本) 框架。 但是,您也可以使用 Python(熊猫) 自定义转换步骤的框架,允许您运行自定义 Python 脚本。 您可以通过将自定义转换步骤中的框架更改为 Python(熊猫) 并修改您的自定义转换步骤代码以提取和实施存储在您的 CodeCommit 存储库中的 Python 脚本版本。 但是,与 Python Pandas 选项相比,Data Wrangler 的 PySpark 选项在处理大型数据集时提供了更好的性能。
清理
完成此用例的试验后,清理您创建的资源以避免对您的帐户产生额外费用:
- Stop 停止 用于创建 Data Wrangler 流的基础实例。
- 删除 由各种 CloudFormation 模板创建的资源。
- 如果你看到
DELETE_FAILED
state,删除CloudFormation模板时,再删除一次stack即可成功删除。
总结
这篇博文向您展示了如何通过从 CodeCommit 中提取脚本来分离您的 Data Wrangler 自定义转换步骤。 我们还展示了如何使用 SageMaker Pipelines 和 EventBridge 自动化您的 Data Wrangler 作业。
现在,您可以在不修改 Data Wrangler 流文件的情况下操作和扩展您的 Data Wrangler 作业。 在 Data Wrangler 中实施之前,您还可以使用 CodeGuru 或任何第三方应用程序扫描 CodeCommit 中的自定义代码以查找漏洞。 要了解有关 AWS 上端到端机器学习操作 (MLOps) 的更多信息,请访问 适用于 MLOps 的 Amazon SageMaker.
关于作者
乌钦娜·埃格贝 是 AWS 的助理解决方案架构师。 他利用空闲时间研究草药、茶、超级食品,以及如何将它们纳入日常饮食。
- SEO 支持的内容和 PR 分发。 今天得到放大。
- 柏拉图区块链。 Web3 元宇宙智能。 知识放大。 访问这里。
- Sumber: https://aws.amazon.com/blogs/machine-learning/build-custom-code-libraries-for-your-amazon-sagemaker-data-wrangler-flows-using-aws-code-commit/
- :是
- $UP
- 1
- 100
- 7
- 8
- 9
- a
- 关于
- ACCESS
- 账号管理
- 横过
- 活动
- 无环
- 添加
- 增加
- 额外
- 采用
- 后
- 援助
- 所有类型
- 允许
- 允许
- 替代
- Amazon
- 亚马逊SageMaker
- 亚马逊SageMaker数据牧马人
- 分析
- 和
- API
- 应用领域
- 应用领域
- 架构
- 保健
- 论点
- 围绕
- AS
- 律师
- At
- 自动化
- 自动化
- 自动
- 自动化和干细胞工程
- 可使用
- AWS
- 背部
- 银行
- 银行业
- BE
- 因为
- 成为
- before
- 好处
- 最佳
- 最佳实践
- 更好
- 盒子
- 瞻
- 建立
- 内建的
- by
- 计算
- 加州
- 呼叫
- 活动
- CAN
- 案件
- 细胞
- 一定
- 更改
- 更改
- 改变
- 收费
- 选择
- 客户
- 码
- 合作
- 柱
- 列
- 结合
- 承诺
- 相比
- 完成
- 复杂性
- 配置
- 地都
- 安慰
- CONTACT
- 包含
- Contents
- 相应
- 价格
- 成本
- 创建信息图
- 创建
- 创建
- 创造
- 危急
- 习俗
- 定制
- DAG
- 每天
- data
- 数据分析
- 交货
- 演示
- 演示
- 部署
- 定金
- 目的地
- 详情
- 开发
- 发展
- 饮食
- 不同
- 直接
- 屏 显:
- 不会
- 域
- 别
- 下载
- 下降
- 下降
- 滴
- 每
- 易于使用
- 编辑
- 员工
- 端至端
- 工程师
- 确保
- 输入
- 整个
- 环境
- 活动
- 所有的
- 超过
- 执行
- 锻炼
- 表达式
- 提取
- 功能有助于
- 专栏
- 特征
- 少数
- 部分
- 文件
- 档
- 姓氏:
- 适合
- 高度灵活
- 流
- 流动
- 重点
- 以下
- 如下
- 针对
- 形式
- 发现
- 骨架
- Free
- 频率
- 止
- 功能
- 功能
- 功能
- 此外
- 生成
- 得到
- GIF
- 特定
- 给
- Go
- 图形
- 更大的
- 增长
- 有
- 有
- 帮助
- 举行
- 主页
- 创新中心
- How To
- 但是
- HTML
- HTTPS
- ICON
- ID
- 身分
- 立即
- 实施
- 履行
- 实施
- 进口
- 输入
- 改善
- in
- 包括
- 包含
- 合并
- 增加
- 通货膨胀
- 信息
- 输入
- 例
- 代替
- 机构
- 推出
- IT
- 工作
- 工作机会
- JPG
- JSON
- 保持
- 知道
- 大
- 名:
- 发射
- 学习
- 库
- 清单
- 加载
- 位于
- 机
- 机器学习
- 制成
- 使
- 管理
- 颠覆性技术
- 管理的
- 手动
- 营销
- 内存
- 菜单
- 可能
- 最低限度
- 分钟
- ML
- 多播
- 修改
- 模块
- 更多
- 移动
- 多
- 姓名
- 导航
- 导航
- 旅游导航
- 需求
- 全新
- 下页
- 笔记本
- 数
- 麻木
- of
- on
- 一
- 运营
- 附加选项
- 附加选项
- 组织
- OS
- 产量
- 页
- 大熊猫
- 面包
- 参数
- 径
- 性能
- 允许
- 权限
- 人员
- 管道
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 加
- 政策
- 可能
- 帖子
- 在练习上
- 做法
- 预览
- 过程
- 过程
- 处理
- 生产者
- 产品
- 生产率
- 本人简介
- 简介
- 提供
- 提供
- 规定
- 拉
- 蟒蛇
- 快速
- 减少
- 反映
- 反映
- 地区
- 有关
- 相对
- 知识库
- 代表
- 必须
- 资源
- 响应
- 导致
- 成果
- 角色
- 第
- 运行
- 运行
- SaaS的
- sagemaker
- SageMaker管道
- 同
- 鳞片
- 浏览
- 调度
- 脚本
- SDK
- 秒
- 保安
- 系列
- 服务
- 特色服务
- 集
- 设置
- 如图
- 作品
- 签署
- 简易
- 尺寸
- 小
- So
- 软件
- 软件作为一种服务
- 方案,
- 解决方案
- 具体的
- 指定
- 堆
- 开始
- 州/领地
- Status
- 步
- 步骤
- 存储
- 商店
- 存储
- 工作室
- 顺利
- 支持
- SYS
- 表
- 采取
- 需要
- 目标
- 任务
- 专业技术
- 模板
- test
- 这
- 其
- 他们
- 因此
- 博曼
- 第三方
- 门槛
- 次
- 时
- 至
- 工具
- 合计
- 产品培训
- 改造
- 转型
- 转换
- 转化
- 触发
- 类型
- 下
- 相关
- 独特
- 使用
- 用例
- 用户
- 用户
- 折扣值
- 价值观
- 各个
- 版本
- 通过
- 查看
- 参观
- 可视化
- 漏洞
- W
- 这
- 而
- 维基百科上的数据
- 将
- 中
- 也完全不需要
- 工作
- 工作流程
- 加工
- 将
- 写
- 写代码
- 写作
- 书面
- 完全
- 您一站式解决方案
- 和风网