亚马逊SageMaker Python SDK 是一个开源库,用于训练和部署机器学习 (ML) 模型 亚马逊SageMaker. 医疗保健和金融等受到严格控制的行业的企业客户设置了安全防护栏,以确保他们的数据被加密并且流量不会遍历互联网。 为确保 ML 模型的 SageMaker 训练和部署遵循这些护栏,通常的做法是在帐户或 AWS组织 通过服务控制策略和水平 AWS身份和访问管理 (IAM) 强制使用特定 IAM 角色的政策, 亚马逊虚拟私有云 (亚马逊 VPC)配置,以及 AWS密钥管理服务 (AWS KMS) 密钥。 在这种情况下,数据科学家必须通过记下子网、安全组和 KMS 密钥,手动将这些参数提供给他们的 ML 模型训练和部署代码。 这让数据科学家有责任记住指定这些配置,以成功运行他们的作业,并避免出现拒绝访问错误。
从 SageMaker Python SDK 版本 2.148.0 开始,您现在可以为 IAM 角色、VPC 和 KMS 密钥等参数配置默认值。 管理员和最终用户可以使用 YAML 格式的配置文件中指定的默认值来初始化 AWS 基础设施原语。 配置后,Python SDK 会自动继承这些值并将它们传播到底层 SageMaker API 调用,例如 CreateProcessingJob()
, CreateTrainingJob()
及 CreateEndpointConfig()
,无需额外操作。 SDK 还支持多个配置文件,允许管理员为所有用户设置一个配置文件,用户可以通过存储在中的用户级配置覆盖它 亚马逊简单存储服务 (Amazon S3), 亚马逊弹性文件系统 (亚马逊 EFS) 亚马逊SageMaker Studio,或用户的本地文件系统。
在本文中,我们向您展示如何在 Studio 中创建和存储默认配置文件,以及如何使用 SDK 默认功能创建您的 SageMaker 资源。
解决方案概述
我们用端到端的方式演示了这个新功能 AWS CloudFormation 创建所需基础设施的模板,并在已部署的 VPC 中创建 Studio 域。 此外,我们创建 KMS 密钥来加密训练和处理作业中使用的卷。 步骤如下:
- 在您的帐户中启动 CloudFormation 堆栈。 或者,如果您想在现有 SageMaker 域或笔记本上探索此功能,请跳过此步骤。
- 填充
config.yaml
文件并将文件保存在默认位置。 - 运行带有端到端 ML 用例的示例笔记本,包括数据处理、模型训练和推理。
- 覆盖默认配置值。
先决条件
在开始之前,请确保您拥有一个 AWS 账户和一个具有管理员权限的 IAM 用户或角色。 如果您是一名数据科学家,目前正在将基础设施参数传递给笔记本中的资源,则可以跳过设置环境的下一步并开始创建配置文件。
要使用此功能,请确保通过运行来升级您的 SageMaker SDK 版本 pip install --upgrade sagemaker
.
搭建环境
要部署包括网络和 Studio 域在内的完整基础架构,请完成以下步骤:
- 克隆 GitHub存储库.
- 登录您的 AWS 账户并打开 AWS CloudFormation 控制台。
- 要部署网络资源,请选择 创建堆栈.
- 上传模板下
setup/vpc_mode/01_networking.yaml
. - 为堆栈提供名称(例如,
networking-stack
),并完成其余步骤以创建堆栈。 - 要部署 Studio 域,请选择 创建堆栈 一次。
- 上传模板下
setup/vpc_mode/02_sagemaker_studio.yaml
. - 为堆栈提供名称(例如,
sagemaker-stack
), 并在提示输入时提供网络堆栈的名称CoreNetworkingStackName
参数。 - 继续执行其余步骤,选择 IAM 资源的确认,然后创建堆栈。
当两个堆栈的状态都更新为 创建完成,进行下一步。
创建配置文件
要使用 SageMaker Python 开发工具包的默认配置,您需要以开发工具包期望的格式创建一个 config.yaml 文件。 config.yaml文件的格式请参考 配置文件结构. 根据您的工作环境,例如 Studio 笔记本、SageMaker 笔记本实例或您的本地 IDE,您可以将配置文件保存在默认位置或通过传递配置文件位置覆盖默认值。 有关其他环境的默认位置,请参阅 配置文件位置. 以下步骤展示了 Studio 笔记本环境的设置。
轻松创建 config.yaml
文件,在您的 Studio 系统终端中运行以下单元格,将占位符替换为上一步中的 CloudFormation 堆栈名称:
此脚本自动填充 YAML 文件,将占位符替换为基础架构默认值,并将文件保存在主文件夹中。 然后它将文件复制到 Studio 笔记本的默认位置。 生成的配置文件应类似于以下格式:
如果您已设置现有域和网络配置,请创建 config.yaml
所需格式的文件,并将其保存在 Studio 笔记本的默认位置。
请注意,这些默认值只是自动填充适当 SageMaker SDK 调用的配置值,并不强制用户使用任何特定的 VPC、子网或角色。 作为管理员,如果您希望您的用户使用特定的配置或角色,请使用 IAM 条件键 强制执行默认值。
此外,每个 API 调用都可以有自己的配置。 例如,在前面的配置文件示例中,您可以指定 vpc-a
和 subnet-a
用于培训工作,并指定 vpc-b
和 subnet-c
, subnet-d
用于处理作业。
运行示例笔记本
现在您已经设置了配置文件,您可以像往常一样开始运行您的模型构建和训练笔记本,而无需为大多数 SDK 功能显式设置网络和加密参数。 看 支持的 API 和参数 有关支持的 API 调用和参数的完整列表。
在 Studio 中,选择导航窗格中的文件资源管理器图标并打开 03_feature_engineering/03_feature_engineering.ipynb
,如以下屏幕截图所示。
一个接一个地运行笔记本单元,注意您没有指定任何额外的配置。 创建处理器对象时,您将看到如下例所示的单元格输出。
正如您在输出中看到的那样,默认配置会自动应用于处理作业,无需用户进行任何额外输入。
当您运行下一个单元以运行处理器时,您还可以通过在 SageMaker 控制台上查看作业来验证是否设置了默认值。 选择 处理作业 下 处理中 在导航窗格中,如以下屏幕截图所示。
选择带有前缀的处理作业 end-to-end-ml-sm-proc
,您应该能够查看已配置的网络和加密。
您可以继续运行剩余的笔记本来训练和部署模型,您会注意到基础架构默认值会自动应用于训练作业和模型。
覆盖默认配置文件
在某些情况下,用户可能需要覆盖默认配置,例如,试验公共互联网访问,或者在子网用完 IP 地址时更新网络配置。 在这种情况下,Python SDK 还允许您为配置文件提供自定义位置,可以在本地存储上,也可以指向 Amazon S3 中的某个位置。 在本节中,我们将探讨一个示例。
打开 user-configs.yaml
您的主目录上的文件并更新 EnableNetworkIsolation
价值 True
,在 TrainingJob
部分。
现在,打开同一个笔记本,并将以下单元格添加到笔记本的开头:
使用此单元格,您可以将配置文件的位置指向 SDK。 现在,当您创建处理器对象时,您会注意到默认配置已被覆盖以启用网络隔离,并且处理作业将在网络隔离模式下失败。
如果您使用本地环境(例如 VSCode),则可以使用相同的覆盖环境变量来设置配置文件的位置。
调试和检索默认值
如果您在从笔记本运行 API 调用时遇到任何错误,为了快速排除故障,单元格输出会显示应用的默认配置,如上一节所示。 要查看为查看从默认配置文件传递的属性值而创建的确切 Boto3 调用,您可以通过打开 Boto3 日志记录进行调试。 要打开日志记录,请在笔记本顶部运行以下单元格:
任何后续的 Boto3 调用都将与完整的请求一起记录,在日志的正文部分下可见。
您还可以使用 session.sagemaker_config
值如下例所示。
最后,如果您使用 Boto3 创建 SageMaker 资源,则可以使用 sagemaker_config
多变的。 例如,运行处理作业 03_feature_engineering.ipynb
使用 Boto3,您可以在同一个笔记本中输入以下单元格的内容并运行该单元格:
自动创建配置文件
对于管理员来说,必须创建配置文件并将文件保存到每个 SageMaker 笔记本实例或 Studio 用户配置文件可能是一项艰巨的任务。 尽管您可以建议用户使用存储在默认 S3 位置中的通用文件,但这会给数据科学家带来指定覆盖的额外开销。
要自动执行此操作,管理员可以使用 SageMaker 生命周期配置 (LCC)。 对于 Studio 用户配置文件或笔记本实例,您可以附加以下示例 LCC 脚本作为用户默认 Jupyter Server 应用程序的默认 LCC:
我们 使用 Amazon SageMaker Studio 的生命周期配置 or 自定义笔记本实例 有关创建和设置默认生命周期脚本的说明。
清理
当您完成此功能的试验后,请清理您的资源以避免支付额外费用。 如果您已按照本文中的说明配置了新资源,请完成以下步骤以清理您的资源:
- 为用户配置文件关闭您的 Studio 应用程序。 看 关闭和更新 SageMaker Studio 和 Studio 应用程序 获取说明。 确保在删除堆栈之前删除所有应用程序。
- 删除为 Studio 域创建的 EFS 卷。 您可以使用 描述域 API调用。
- 删除 Studio 域堆栈。
- 删除为 Studio 域创建的安全组。 您可以在 亚马逊弹性计算云 (Amazon EC2) 控制台,名称为 security-group-for-inbound-nfs-d-xxx 和 security-group-for-outbound-nfs-d-xxx
- 删除网络堆栈。
结论
在本文中,我们讨论了使用 SageMaker Python SDK 配置和使用关键基础设施参数的默认值。 这允许管理员为数据科学家设置默认配置,从而为用户和管理员节省时间,消除重复指定参数的负担,并产生更精简和更易于管理的代码。 有关支持的参数和 API 的完整列表,请参阅 使用 SageMaker Python 开发工具包配置和使用默认值. 如有任何问题和讨论,请加入 机器学习和人工智能社区.
作者简介
朱塞佩·安杰洛·波切利 是 Amazon Web Services 的首席机器学习专家解决方案架构师。 凭借多年的软件工程和机器学习背景,他与各种规模的客户合作,深入了解他们的业务和技术需求,并设计能够充分利用 AWS 云和亚马逊机器学习堆栈的人工智能和机器学习解决方案。 他参与过不同领域的项目,包括 MLOps、计算机视觉、NLP,并涉及广泛的 AWS 服务。 在空闲时间,朱塞佩喜欢踢足球。
布鲁诺·皮斯通 是位于米兰的 AWS 的 AI/ML 专家解决方案架构师。 他与各种规模的客户合作,帮助他们深入了解他们的技术需求,并设计人工智能和机器学习解决方案,以充分利用 AWS 云和亚马逊机器学习堆栈。 他的专业领域是端到端机器学习、机器学习产业化和 MLOps。 他喜欢与朋友共度时光,探索新的地方,以及到新的目的地旅行。
杜尔加苏里 是 Amazon SageMaker Service SA 团队的 ML 解决方案架构师。 她热衷于让每个人都能接触到机器学习。 在 AWS 的 4 年中,她帮助为企业客户建立了 AI/ML 平台。 工作之余,她喜欢骑摩托车、看悬疑小说,以及带着她 5 岁的哈士奇犬长距离散步。
- SEO 支持的内容和 PR 分发。 今天得到放大。
- 柏拉图爱流。 Web3 数据智能。 知识放大。 访问这里。
- 与 Adryenn Ashley 一起铸造未来。 访问这里。
- 使用 PREIPO® 买卖 PRE-IPO 公司的股票。 访问这里。
- Sumber: https://aws.amazon.com/blogs/machine-learning/configure-and-use-defaults-for-amazon-sagemaker-resources-with-the-sagemaker-python-sdk/
- :具有
- :是
- :不是
- :在哪里
- $UP
- 1
- 10
- 100
- 20
- 30
- 60
- 7
- 9
- a
- Able
- 关于
- ACCESS
- 无障碍
- 账号管理
- 行动
- 加
- 增加
- 额外
- 地址
- 管理员
- 再次
- AI
- AI / ML
- 所有类型
- 允许
- 允许
- 已经
- 还
- 尽管
- Amazon
- Amazon EC2
- 亚马逊机器学习
- 亚马逊SageMaker
- 亚马逊网络服务
- an
- 和
- 任何
- API
- APIs
- 应用
- 应用的
- 适当
- 应用
- 保健
- AS
- At
- 连接
- 自动化
- 自动
- 避免
- AWS
- AWS CloudFormation
- 背景
- 基于
- BE
- 很
- before
- 开始
- 最佳
- 身体
- 都
- 广阔
- 建筑物
- 负担
- 商业
- by
- 呼叫
- 呼叫
- CAN
- 案件
- 例
- CD
- 细胞
- 客户
- 云端技术
- 码
- 采集
- 相当常见
- 完成
- 计算
- 一台
- 计算机视觉
- 流程条件
- 配置
- 安慰
- Contents
- 继续
- 控制
- 受控
- 成本
- 可以
- 创建信息图
- 创建
- 创建
- 创造
- 目前
- 习俗
- 合作伙伴
- data
- 数据处理
- 数据科学家
- 默认
- 默认
- 演示
- 根据
- 部署
- 部署
- 部署
- 部署
- 设计
- 旅游目的地
- 不同
- 讨论
- 讨论
- 显示器
- 不会
- 域
- 域名
- 完成
- 别
- 向下
- 每
- 容易
- 回音
- 或
- 消除
- enable
- 加密
- 加密
- 结束
- 端至端
- 端点
- 执行
- 工程师
- 确保
- 输入
- 企业
- 环境
- 环境中
- 故障
- 每个人
- 例子
- 现有
- 预计
- 实验
- 专门知识
- 探索
- 探险家
- 探索
- 失败
- false
- 专栏
- 部分
- 文件
- 档
- 金融
- 找到最适合您的地方
- 遵循
- 以下
- 如下
- 足球
- 针对
- 格式
- 自由的
- 朋友
- 止
- ,
- 功能
- 得到
- 越来越
- 混帐
- 组的
- 有
- 有
- he
- 医疗保健
- 帮助
- 帮助
- 这里
- 他的
- 主页
- 创新中心
- How To
- HTML
- HTTP
- HTTPS
- ICON
- 身分
- if
- 进口
- in
- 包含
- 行业
- 基础设施
- 输入
- 安装
- 例
- 说明
- 接口
- 网络
- 互联网接入
- 成
- 涉及
- IP
- IP地址
- 隔离
- IT
- 它的
- 工作
- 工作机会
- 加入
- JPG
- 键
- 键
- 大
- 学习
- Level
- 自学资料库
- 生命周期
- 喜欢
- 清单
- 本地
- 圖書分館的位置
- 地点
- 日志
- 记录
- 记录
- 长
- 看
- 爱
- 机
- 机器学习
- 使
- 制作
- 颠覆性技术
- 手动
- 米兰
- ML
- 多播
- 时尚
- 模型
- 模型
- 更多
- 最先进的
- 摩托车
- 多
- 神秘
- 姓名
- 名称
- 旅游导航
- 需求
- 打印车票
- 需要
- 需要
- 网络
- 工业网络
- 全新
- 下页
- NLP
- 没有
- 笔记本
- 注意..
- 注意
- 现在
- 对象
- of
- on
- 一旦
- 一
- 打开
- 开放源码
- or
- OS
- 其他名称
- 输出
- 产量
- 覆盖
- 己
- 面包
- 参数
- 参数
- 通过
- 通过
- 多情
- 付款
- 地方
- 平台
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 播放
- 点
- 政策
- 帖子
- 在练习上
- 以前
- 校长
- 私立
- 权限
- 处理
- 处理器
- 本人简介
- 简介
- 项目
- 提供
- 国家
- 认沽期权
- 蟒蛇
- 有疑问吗?
- 快速
- 建议
- 其余
- 纪念
- 请求
- 必须
- 资源
- 响应
- 限制
- 导致
- 角色
- 角色
- 运行
- 运行
- s
- SA
- sagemaker
- 同
- 保存
- 保存
- 科学家
- 科学家
- SDK
- 部分
- 保安
- 看到
- 服务
- 特色服务
- 会议
- 集
- 设置
- 格局
- 几个
- 她
- 应该
- 显示
- 展示
- 如图
- 类似
- 简易
- 只是
- 尺寸
- 软件
- 软件工程
- 解决方案
- 东西
- 专家
- 具体的
- 指定
- 花费
- 堆
- 堆栈
- 开始
- 开始
- Status
- 步
- 步骤
- 存储
- 商店
- 存储
- 工作室
- 子网
- 子网
- 随后
- 顺利
- 这样
- 支持
- 支持
- 系统
- 任务
- 团队
- 文案
- 模板
- 终端
- 这
- 其
- 他们
- 然后
- 从而
- 博曼
- Free Introduction
- 通过
- 紧紧
- 次
- 至
- 最佳
- 交通
- 培训
- 产品培训
- 转
- 谈到
- 下
- 相关
- 理解
- 更新
- 升级
- 用法
- 使用
- 用例
- 用过的
- 用户
- 用户
- 运用
- 折扣值
- 价值观
- 确认
- 版本
- 通过
- 查看
- 查看
- 在线会议
- 可见
- 愿景
- 体积
- 卷
- 想
- we
- 卷筒纸
- Web服务
- 井
- ,尤其是
- 将
- 也完全不需要
- 工作
- 工作
- 加工
- 合作
- 雅姆
- 年
- 完全
- 您一站式解决方案
- 和风网