开始使用开源亚马逊 SageMaker 发行版

数据科学家需要一个一致且可重复的环境来处理机器学习 (ML) 和数据科学工作负载,以支持管理依赖关系且安全。 亚马逊云科技 深度学习容器 已经提供了预先构建的 Docker 镜像,用于在 TensorFlow、PyTorch 和 MXNet 等常见框架中训练和提供模型。为了改善这种体验,我们在2023年JupyterCon上宣布了SageMaker开源发行版的公开测试版。这为不同专业水平的机器学习开发人员提供了统一的端到端机器学习体验。开发人员不再需要在不同的框架容器之间切换以进行实验,也无需在从本地 JupyterLab 环境和 SageMaker 笔记本电脑迁移到 SageMaker 上的生产任务时切换。开源 SageMaker 发行版支持最常见的数据科学、机器学习和可视化软件包和库,例如 TensorFlow、PyTorch、Scikit-Learn、Pandas 和 Matplotlib。从今天开始,您可以从 Amazon ECR 公共画廊 开始使用容器。

在这篇文章中,我们将向您展示如何使用 SageMaker 开源发行版在本地环境中快速进行试验,并轻松地将其提升到 SageMaker 上的工作岗位。

解决方案概述

在我们的示例中,我们展示了使用 PyTorch 训练图像分类模型。我们使用在 PyTorch 上公开提供的 KMNIST 数据集。我们训练神经网络模型,测试模型的性能,最后打印训练和测试损失。此示例的完整笔记本可在 SageMaker Studio Lab 示例 库中找到。 我们开始使用开源发行版在本地笔记本电脑上进行实验,将其移至 Amazon S ageMaker Studio 以使用更大的实例,然后将该笔记本安排为笔记本作业。

先决条件

您需要满足以下先决条件:

  • 安装了 Docker
  • 具有管理员权限的有效 亚马逊云科技 账户。
  • 安装了 亚马逊云科技 命令行接口 (亚马逊云科技 CLI) 和 Docker 的环境。
  • 现有的 SageMaker 域名。要创建域名,请参阅 加入亚马逊 SageMa ker 域名。

设置您的本地环境

你可以直接在本地笔记本电脑上开始使用开源发行版。要启动 JupyterLab,请在终端上运行以下命令:

export ECR_IMAGE_ID='public.ecr.aws/sagemaker/sagemaker-distribution:latest-cpu'
docker run -it \
    -p 8888:8888 \
    --user `id -u`:`id -g` \
    -v `pwd`/sample-notebooks:/home/sagemaker-user/sample-notebooks \
    $ECR_IMAGE_ID jupyter-lab --no-browser --ip=0.0.0.0

您可以将 ECR_IMAGE_ID 替换为 亚马逊 ECR 公共图库 中可用的任何图像标签 ,或者如果您使用支持 GPU 的计算机,则选择 最新的 GPU 标签。

这个命令将启动 JupyterLab 并在终端上提供一个网址,比如 http://127.0.0.1:8888/lab? 代币= 。复制该链接并将其输入您的首选浏览器以启动 JupyterLab。

设置工作室

Studio 是适用于 ML 的端到端集成开发环境 (IDE),允许开发人员和数据科学家大规模构建、训练、部署和监控机器学习模型。Studio 提供了大量的第一方镜像列表,其中包含常见的框架和软件包,例如数据科学、TensorFlow、PyTorch 和 Spark。这些图像使数据科学家只需选择他们选择的计算框架和实例类型即可轻松地开始使用机器学习。

现在,你可以使用 Studio 的 自 带 图像功能在 Studio 上使用 SageMaker 开源发行版。 要将开源发行版添加到您的 SageMaker 域中,请完成以下步骤:

  1. 在终端上运行以下命令,将开源发行版添加到您账户的 亚马逊弹性容器注册表 (Amazon ECR) 存储库中:
    
    # 根据您的要求使用最新的 CPU 或最新的 GPU 标签导出 ecr_galler_image_id='sagemaker_domain_id='sagemaker_domain_id='sagemaker_domain_idistribution' ='d-xxxx' 导出 SAGEMAKER_STUDIO_IAM_ROLE_ARN=' docker pull public.ecr.aws/Sagemaker/$ecr_GALLERY_IMAGE_ID 导出 ecr_Private_repository_name='sm-Distribution'导出 ecr_image_tag='sagemaker-Distribution-CPU '导出 AWS_ECR_REGION} ecr create-region 存储库--repository-name $ECR_PRIVATE_REPOSITORY_NAME aws--region $ {AWS_ECR_REPOSTORY_REGION} ecr 获取登录密码 | docker 登录--用户名 AWS--password-stdin $ {AWS_ACCOUNT_ID} .dkr.ecr。$ {AWS_ECR_REPOSITORY_REGION} .amazonaws.com 导出 ecr_image_uri=$aws_account_id.dkr.ecr。$aws_ecr_repository_region.amazonaws.com/$ECR_Private_repository_Name: $ECR_IMAGE_TAG # 标签 docker 标签 public.ecr.aws/Sagemaker/$ecr_Gallery_Image_URI 
     
    
  2. 创建 SageMaker 映像并将图像附加到 Studio 域:
    
    # 创建 SageMaker 映像 aws sagemaker create-image-image-name\--role-arn $SAGEMAKER_STUDIO_IAM_ROLE_ARN # 创建 SageMaker 映像版本。aws sagemaker 创建图像版本\--image-name $SAGEMAKER_IMAGE_IMAGE_IMAGE_IMAGE_NAME _NAME\--base-image $ECR_IMAGE_URI #(可选)描述图像版本以确保其成功创建为 sagemaker describe-image-version\--image-name $SAGEMAKER_IMAGE_NAME\--version-number 1 # 创建应用程序映像配置文件 cat > /tmp/app-config.json << EOF {“Appimage-configname”:“app-image-config-$sagemaker_image_name”,“kernelGatewayImageConfig”:{“defaultGID”:100,“mountPath”:“/home/sagemaker-user”},“KernelSpecs”:[{“displayName”:“Python 3(ipykernel)”,“名称”:“python3"}]} EOF # 创建亚马逊 Sagemaker 应用程序映像配置。aws sagemaker create-app-image-config-config\--cli-input-json 文件:///tmp/app-config.json # 创建一个默认用户设置文件 # 使用现有文件更新该文件如果你还有其他自定义镜像 cat > /tmp/default-user-settings.json << EOF {“defaultUserSettings”: {“kernelGatewayAppSettings”: {“CustomImageName”: “$sagemaker_image_Name”,“app-Image-config-$sagemaker_image_Name”,“imageversionNumber”:1}]}} EOF # 使用新的默认用户设置更新亚马逊 SageMaker 域名。aws sagemaker 更新域\--domain-id $SAGEMAKER_STUDIO_DOMAIN_ID\--cli-input-json 文件:///tmp/defa
    ult-user-settings.json
  3. 在 SageMaker 控制台上,选择您的域名和现有用户个人资料启动 Studio。
  4. (可选)按照 关闭和更新 SageMaker Studio 中的步骤重启 Studio。

下载笔记本

GitHub 存储库 本地下载示例笔记本。

在你选择的 IDE 中打开笔记本电脑,然后在笔记本的开头添加一个单元格来安装 torch summary。t orchsum mary 包不是发行版的一部分,将其安装在笔记本电脑上将确保笔记本端到端运行。我们建议使用 conda micromamba 来管理环境和依赖关系。将以下单元格添加到笔记本并保存笔记本:

%pip install torchsummary

在本地笔记本上进行实验

选择上传图标,将笔记本上传到您启动的 JupyterLab 用户界面,如以下屏幕截图所示。

uploading-file

上传后,启动 cv-km nist.ipynb 笔记本电脑。你可以立即开始运行单元,而不必安装任何依赖项,例如 torch、matplotlib 或 ipywidgets。

如果您执行了上述步骤,则可以看到可以在笔记本电脑上本地使用该发行版。在下一步中,我们将在 Studio 上使用相同的发行版来利用 Studio 的功能。

将实验移至 Studio(可选)

或者,让我们把实验推广到 Studio。Studio 的优势之一是底层计算资源具有完全的弹性,因此您可以轻松地向上或向下调动可用资源,并且更改会在后台自动进行,而不会中断您的工作。如果您想在更大的数据集和计算实例上运行之前的相同笔记本,则可以迁移到 Studio。

导航到您之前启动的 Studio 用户界面,然后选择上传图标来上传笔记本。

upload-file-studio

启动笔记本后,系统将提示您选择映像和实例类型。 在内核启动器上,选择 sagemaker-distribut ion 作为图像和 ml.t3.m edium 实例,然后选择选择。

现在,您可以端到端运行笔记本电脑,而无需在笔记本上进行任何更改,从本地开发环境到 Studio 笔记本电脑!

将笔记本安排为作业

实验完成后,SageMaker 会提供多种选项来生产您的笔记本,例如训练作业和 SageMaker 流水线。其中一个选项是使用 SageMaker 笔记本作业将笔记本本身作为非交互式、定时笔记本作业直接运行。 例如,您可能希望定期重新训练模型,或者定期对传入的数据进行推断并生成报告供利益相关者使用。

在 Studio 中,选择笔记本作业图标以启动笔记本作业。如果您已在笔记本电脑上本地安装了笔记本作业扩展程序,则也可以直接从笔记本电脑上安排笔记本电脑。请参阅 《 安装指南》 ,在本地设置笔记本作业扩展。

schedule-notebook-job-icon

笔记本作业自动使用开源发行版的 ECR 图像 URI,因此您可以直接安排笔记本作业。

选择 “ 按计划 运行 ” ,选择时间表(例如每周星期六),然后选择 “ 创建”。 如果您想 立即查看结果,也可以选择 “立即 运行 ”。

submit-nb-job

第一个笔记本作业完成后,您可以直接从 Studio 用户界面查看笔记本输出,方法是在 “ 输出文件 ” 下选择 “ 笔记本 ” 。

view-job-output

其他注意事项

除了将公开的 ECR 映像直接用于机器学习工作负载外,开源发行版还具有以下优势:

  • 用于构建镜像的 Dockerfile 已公开供开发人员浏览和构建自己的镜像。您也可以将此映像继承为基础映像,并安装自定义库以获得可复制的环境。
  • 如果你不习惯 Docker,更喜欢在你的 JupyterLab 环境中使用 Conda 环境,我们会为每个已发布的版本提供一个 env. out 文件。您可以使用文件中的说明创建自己的 Conda 环境,该环境将模仿同一个环境。例如,请参阅 CPU 环境文件 cpu .env.out。
  • 您可以使用图像的 GPU 版本来运行与 GPU 兼容的工作负载,例如深度学习和图像处理。

清理

完成以下步骤来清理您的资源:

  1. 如果您已安排笔记本按计划运行,请在 “ 笔记本作业定义 ” 选项卡上暂停或删除该计划,以避免为将来的作业付费。
    pause-nb-job-schedule
  2. 关闭所有 Studio 应用程序以避免为未使用的计算使用量付费。有关说明,请参阅 关闭和更新 Studio 应用程序
  3. 或者,如果您创建了 Studio 域,请将其删除。

结论

在机器学习生命周期的不同阶段维护可重复的环境是数据科学家和开发人员面临的最大挑战之一。通过 SageMaker 开源发行版,我们提供了一个包含最常见机器学习框架和包相互兼容版本的映像。该发行版也是开源的,它使开发人员可以透明地了解软件包和构建流程,从而更轻松地自定义自己的发行版。

在这篇文章中,我们向您展示了如何在本地环境、Studio 上使用发行版以及作为训练任务的容器。此功能目前处于公开测试阶段。我们鼓励您尝试一下,并在 公共 GitHub 存储库 上分享您的反馈和问题 !


作者简介

杜尔加·苏里 是亚马逊 SageMaker Service SA 团队的机器学习解决方案架构师。她热衷于让每个人都能使用机器学习。在 亚马逊云科技 工作的 4 年中,她帮助企业客户建立了 AI/ML 平台。当她不工作时,她喜欢骑摩托车、神秘小说,还喜欢和她5岁的哈士奇一起长途跋涉。

Ketan Vijayvargiya 是亚马逊网络服务 (亚马逊云科技) 的高级软件开发工程师。他的重点领域是机器学习、分布式系统和开源。工作之余,他喜欢把时间花在自我托管和享受大自然上。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。