我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
使用亚马逊 SageMaker JupyterLab 扩展程序在任何 JupyterLab 环境中安排笔记本电脑
Jupyter 笔记本电脑因能够以交互方式处理数据、构建 ML 模型以及通过推断数据来测试这些模型而受到数据科学家的高度青睐。但是,在某些情况下,数据科学家可能更愿意从笔记本电脑上的交互式开发过渡到批处理作业。此类用例的示例包括扩展先前在小型笔记本实例上的小型样本数据集上测试过的功能工程作业,运行夜间报告以深入了解业务指标,以及在新数据可用时按计划重新训练机器学习模型。
从笔记本上的交互式开发迁移到批处理作业需要将代码片段从笔记本复制到脚本中,将脚本及其所有依赖项打包到容器中,然后安排容器运行。要按计划重复运行此作业,您必须设置、配置和监督云基础架构以实现部署自动化,从而将宝贵的时间从核心数据科学开发活动中转移出来。
为了帮助简化从交互式笔记本迁移到批处理作业的流程,2022 年 12 月,
在这篇文章中,我们将向您展示如何在本地 JupyterLab 环境中按计划在 SageMaker 上运行笔记本作业。
解决方案概述
下图显示了在任何 JupyterLab 环境中调度笔记本作业的解决方案架构。SageMaker 扩展程序希望 JupyterLab 环境具有有效的 亚马逊云科技 证书和权限来安排笔记本任务。我们将在本文后面讨论设置证书和
在以下部分中,我们将介绍如何设置架构和安装开源扩展,如何使用默认配置运行笔记本电脑,以及如何使用高级参数运行具有自定义设置的笔记本电脑。
先决条件
在这篇文章中,我们假设使用本地托管的 JupyterLab 环境。对于托管在云中的环境,您也可以遵循相同的安装步骤。
以下步骤假设你已经有一个有效的 Python 3 和 JupyterLab 环境(此扩展程序适用于 JupyterLab v3.0 或更高版本)。
如果您尚未安装
设置 IAM 证书
您需要一个 IAM 用户或一个活跃的 IAM 角色会话才能提交 SageMaker 笔记本任务。要设置您的 IAM 证书,您可以使用您的 IAM 用户的 亚马逊云科技 证书配置 亚马逊云科技 CLI,或者代入 IAM 角色。有关设置证书的说明,请参阅
如果您的笔记本任务需要使用客户管理的
为笔记本作业实例设置 IAM 角色
SageMaker 需要 IAM 角色才能代表用户运行作业,例如运行笔记本作业。此角色应有权访问笔记本完成任务所需的资源,例如访问 Amazon S3 中的数据。
调度器扩展程序会自动在 亚马逊云科技 账户中查找 IAM 角色,使用前缀
SageMakerJupyterS
cheduler 来运行笔记本任务。
要创建 IAM 角色,请使用 AmazonsagemakerFullAccess 策略 为亚马逊 SageMaker
为角色命名
SagemakerJupyterSchedulerDemo
,或者提供一个带有预期前缀的名称。
创建角色后,在 信任关系 选项卡上,选择 编辑信任策略 。用以下内容替换现有的信任策略:
AmazonsagemakerFullAcces
s 政策相当宽松,通常是实验和入门 SageMaker 的首选。我们强烈建议您根据 IAM 中的安全最佳实践,为未来任何工作负载创建最低范围策略。有关笔记本作业所需的最低权限集,请参阅
安装扩展程序
在本地计算机上打开终端并运行以下命令安装扩展:
此命令运行后,你可以通过运行 jupyter 实验室来启动 JupyterLab。
如果你是从 JupyterLab 终端中安装扩展程序,请重新启动 Jupyter 服务器来加载扩展。
你可以从 JupyterLab 的 “
文件
” 菜单 上选择 “
关闭
”,然后通过运行 jupyter 实验室从命令行启动 JupyterLab 来重新启动 JupyterLab。
提交笔记本作业
在您的环境中安装扩展程序后,您可以将任何独立的笔记本作为临时任务运行。让我们提交一个简单的 “Hello world” 笔记本作为计划作业运行。
- 在 “ 文件 ” 菜单上,选择 “ 新建 ” 和 “ 笔记本 ” 。
- 输入以下内容: d ()
成功安装扩展程序后,您将在笔记本电脑上看到笔记本日程安排图标。
-
选择该图标以创建笔记本作业。
或者,你可以在文件资源管理器中右键单击该笔记本,然后选择 创建笔记本作业 。
- 提供作业名称、输入文件、计算类型和其他参数。
-
将其余设置保留为默认值,然后选择
创建。
安排作业后,您将被重定向到 “ 笔记本作业 ” 选项卡,在该选项卡中,您可以查看笔记本作业列表及其状态,并在作业完成后查看笔记本输出和日志。您也可以从启动器访问此笔记本作业窗口,如以下屏幕截图所示。
高级配置
在您的本地计算机上,笔记本电脑会自动在 SageMaker Base Python 映像上运行,该镜像是 Docker Hub 发布的官方 Python 3.8 镜像,包括 Boto3 和 亚马逊云科技 CLI。在现实世界中,数据科学家需要为他们的笔记本安装特定的软件包或框架。有三种方法可以实现可重复的环境:
- 最简单的选择是,你可以将软件包和框架直接安装在笔记本电脑的第一个单元上。
- 您还可以在 其他选项 部分提供初始化脚本,指向本地存储器上的 bash 脚本,该脚本在笔记本启动时由笔记本作业运行。在下一节中,我们将展示使用初始化脚本安装软件包的示例。
-
最后,如果您想在配置运行环境时获得最大的灵活性,可以使用 Python3 内核构建自己的自定义映像,将映像推送到
亚马逊弹性容器注册表 (Amazon ECR),然后在 “其他选项” 下为您的笔记本作业提供 ECR 映像 URI。 ECR 图像应符合自定义 SageMaker 图像规范中列出的对 SageMaker 图像的要求。
此外,您的企业可能会设置防护措施,例如在 Amazon VPC 中以无互联网模式运行作业、为任务使用自定义的最低权限角色以及强制加密。您也可以在 “
其他选项
” 部分为笔记本作业指定此类配置。有关高级配置的详细列表,请参阅
添加初始化脚本
为了展示初始化脚本,我们现在运行
- 在 “ 文件 ” 菜单上,选择 “ 新建 ” 和 “ 文本文件 ” 。
-
在文件中输入以下内容,然后将文件保存
为 init-script.sh: -
从文件资源管理器中选择 s
cheduled-example.ipynb来打开笔记本。 - 选择笔记本作业图标来安排笔记本,然后展开 “ 其他选项 ” 部分。
-
在
初始化脚本位置
中 ,输入脚本的完整路径。
您还可以选择为笔记本作业自定义输入和输出 S3 文件夹。SageMaker 在指定的 S3 位置创建一个输入文件夹来存储输入文件,并创建一个用于存储笔记本输出的输出 S3 文件夹。您可以在此处指定加密、IAM 角色和 VPC 配置。有关自定义镜像
- 现在,只需更新初始化脚本, 为计划选择 “ 立即 运行 ”,然后选择 “ 创建 ” 。
作业完成后,您可以在 “输出 文件 ” 下 查看带有输出的笔记本和输出日志 ,如以下屏幕截图所示。在输出日志中,在运行笔记本之前,您应该能够看到初始化脚本正在运行。
要进一步自定义笔记本作业环境,您可以通过指定自定义图像的 ECR URI 来使用自己的图像。如果你自带镜像,请务必在构建镜像时安装 Python3 内核。有关可以使用 TensorFlow 运行笔记本的示例 Dockerfile,请参阅以下代码:
结论
在这篇文章中,我们向您展示了如何使用 SageMaker Jupyter 调度器扩展程序,在作为 SageMaker 训练作业托管的任何 JupyterLab 环境中运行您的笔记本电脑。
作者简介
Bhadrinath Pani
是亚马逊网络服务的软件开发工程师,负责亚马逊 SageMaker 互动机器学习产品,在汽车、物联网、增强现实/虚拟现实和计算机视觉等领域的软件开发方面拥有超过 12 年的经验。目前,他的主要重点是开发机器学习工具,旨在简化数据科学家的体验。在空闲时间,他喜欢与家人共度时光,探索太平洋西北地区的美景。
杜尔加·苏里
是亚马逊 SageMaker Service SA 团队的机器学习解决方案架构师。她热衷于让每个人都能使用机器学习。在 亚马逊云科技 工作的 4 年中,她帮助企业客户建立了 AI/ML 平台。当她不工作时,她喜欢骑摩托车、神秘小说,还喜欢和她5岁的哈士奇一起长途跋涉。
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。