亚马逊SageMaker Studio 为数据科学家提供完全托管的解决方案,以交互方式构建、训练和部署机器学习 (ML) 模型。 除了交互式 ML 体验之外,数据工作者还寻求将笔记本作为临时作业运行的解决方案,而无需将代码重构为 Python 模块或学习 DevOps 工具和最佳实践来自动化其部署基础设施。 这样做的一些常见用例包括:
- 定期运行模型推理以生成报告
- 在 Studio 中针对小型实例上的数据子集进行测试后,扩大特征工程步骤
- 以某种节奏重新训练和部署模型
- 分析你的团队 亚马逊SageMaker 定期使用
以前,当数据科学家想要获取他们在笔记本上交互式构建的代码并将它们作为批处理作业运行时,他们面临着陡峭的学习曲线 Amazon SageMaker管道, AWS Lambda, 亚马逊EventBridge或 其他解决方案 难以设置、使用和管理。
SageMaker 笔记本作业,您现在只需从 SageMaker Studio 或 SageMaker 工作室实验室 界面。 您可以按计划或立即运行这些笔记本。 最终用户无需修改他们现有的笔记本代码。 作业完成后,您可以查看填充的笔记本单元格,包括任何可视化!
在本文中,我们将分享如何将您的 SageMaker Studio 笔记本作为计划的笔记本作业进行操作。
解决方案概述
下图说明了我们的解决方案架构。 我们利用预安装的 SageMaker 扩展程序立即或按计划运行笔记本。
在以下部分中,我们将逐步介绍创建笔记本、参数化单元格、自定义其他选项和安排作业的步骤。 我们还包括一个示例用例。
先决条件
要使用 SageMaker notebook 作业,您需要在 Studio 中运行 JupyterLab 3 JupyterServer 应用程序。 有关如何升级到 JupyterLab 3 的更多信息,请参阅 从控制台查看和更新应用程序的 JupyterLab 版本。 务必 关闭并更新 SageMaker Studio 为了获得最新的更新。
要定义按计划运行笔记本的作业定义,您可能需要向 SageMaker 执行角色添加额外的权限。
首先,向您的 SageMaker 执行角色添加信任关系,允许 events.amazonaws.com
承担你的角色:
此外,您可能需要创建一个内联策略并将其附加到您的执行角色。 以下政策是对非常宽松政策的补充 AmazonSageMakerFullAccess
政策。 有关完整的最小权限集,请参阅 安装策略和权限.
创建笔记本作业
要将您的笔记本作为 SageMaker 笔记本作业运行,请选择 创建笔记本作业 图标。
或者,您可以在文件系统上选择(右键单击)您的笔记本,然后选择 创建笔记本作业.
在 建立工作 部分,只需根据您的工作负载为您的计划作业选择正确的实例类型:标准实例、计算优化实例或包含 GPU 的加速计算实例。 您可以选择任何可用于 SageMaker 训练作业的实例。 有关可用实例的完整列表,请参阅 Amazon SageMaker定价.
作业完成后,您可以查看输出笔记本文件及其填充的单元格,以及作业运行的基础日志。
参数化单元格
将笔记本移动到生产工作流程时,能够重复使用具有不同参数集的同一笔记本以实现模块化非常重要。 例如,您可能希望对数据集位置或模型的超参数进行参数化,以便您可以将同一个笔记本重复用于许多不同的模型训练。 SageMaker 笔记本作业通过单元标签支持这一点。 只需选择右侧窗格中的双齿轮图标,然后选择 添加标签. 然后将标记标记为参数。
默认情况下,笔记本作业运行使用笔记本中指定的参数值,但您也可以将这些修改为笔记本作业的配置。
配置其他选项
创建笔记本作业时,您可以展开 其他选项 部分以自定义您的工作定义。 Studio 将自动检测您在笔记本中使用的图像或内核,并为您预先选择。 确保您已验证此选择。
您还可以指定环境变量或启动脚本来自定义您的笔记本运行环境。 有关配置的完整列表,请参阅 其他选项.
安排你的工作
要安排您的工作,请选择 按计划运行 并设置合适的间隔和时间。 然后你可以选择 笔记本工作 选择主页图标后可见的选项卡。 加载笔记本后,选择 笔记本作业定义 选项卡暂停或删除您的日程安排。
示例用例
对于我们的示例,我们展示了一个端到端的 ML 工作流,该工作流从地面实况源准备数据,训练该时间段的更新模型,然后对最新数据运行推理以生成可操作的见解。 实际上,您可能会运行一个完整的端到端工作流,或者只是操作您的工作流的一个步骤。 您可以安排一个 AWS胶水 互动环节 用于日常数据准备,或运行批量推理作业,直接在输出笔记本中生成图形结果。
这个例子的完整笔记本可以在我们的 SageMaker 示例 GitHub 存储库。 该用例假设我们是一家电信公司,希望安排一个笔记本,该笔记本根据使用我们可用的最新数据训练的模型预测可能的客户流失。
首先,我们收集最近可用的客户数据并对其进行一些预处理:
我们在这个更新的训练数据上训练我们更新的模型,以便对 todays_data
:
因为我们打算将此笔记本安排为每日报告,所以我们希望捕获更新后的模型在验证集上的表现如何,以便我们对其未来的预测充满信心。 以下屏幕截图中的结果来自我们预定的推理报告。
最后,您希望将今天数据的预测结果捕获到数据库中,以便可以根据该模型的结果采取行动。
理解笔记本后,可以使用 现在跑步 前面描述的选项或测试计划功能。
清理
如果您按照我们的示例进行操作,请务必暂停或删除笔记本作业的计划以避免产生持续费用。
结论
使用 SageMaker 笔记本作业将笔记本投入生产,极大地简化了数据工作者所需的无差别繁重工作。 无论您是要安排端到端 ML 工作流还是拼图,我们都鼓励您使用 SageMaker Studio 或 SageMaker Studio Lab 将一些笔记本投入生产! 要了解更多信息,请参阅 基于笔记本的工作流程.
关于作者
肖恩·摩根(Sean Morgan) 是 AWS 的高级 ML 解决方案架构师。 他在半导体和学术研究领域拥有丰富的经验,并利用自己的经验帮助客户在 AWS 上实现目标。 在空闲时间,Sean 是一名活跃的开源贡献者/维护者,并且是 TensorFlow Addons 的特殊兴趣小组负责人。
苏梅达斯瓦米 是 Amazon Web Services 的首席产品经理。 他带领 SageMaker Studio 团队将其构建为交互式数据科学和数据工程工作流的首选 IDE。 在过去的 15 年中,他一直在使用机器学习构建客户痴迷的消费者和企业产品。 在空闲时间,他喜欢拍摄美国西南部令人惊叹的地质情况。
孙爱德 是 Amazon Web Services 的 SageMaker Studio 的一名高级 SDE。 他专注于构建交互式 ML 解决方案并简化客户体验,以将 SageMaker Studio 与数据工程和 ML 生态系统中的流行技术相集成。 在业余时间,Edward 非常喜欢露营、远足和钓鱼,并喜欢与家人共度时光。