加速机器学习工作流程:Amazon SageMaker Studio Local Mode 与 Docker 支持
文章重点:Key Takeaways
Amazon SageMaker Studio 现在支援 Local Mode 和 Docker,使机器学习开发更加高效。Local Mode 允许开发者在本地环境中进行训练和测试,缩短迭代周期。Docker 支持使得建立和使用容器变得简单,提供一致的开发环境。本篇文章将指导你如何设置 Local Mode 和运行示例训练作业。我们很高兴宣布,在 Amazon SageMaker Studio 中推出了 Local Mode 和 Docker 支持两项新功能,旨在加速机器学习ML开发者的迭代开发。经典的 ML 模型开发通常涉及较慢的迭代周期,因为开发人员需要在编码、训练和部署之间切换。每一步都需要等待远程计算资源启动,这会延迟验证实现和获取对更改的反馈。
使用 Local Mode,开发者现在可以直接在 SageMaker Studio 笔记本实例上训练和测试模型、调试代码以及验证端到端流水线,而无需启动远程计算资源。这将迭代周期从几分钟缩短到几秒,大幅提升开发者的生产力。此外,SageMaker Studio 笔记本中的 Docker 支持使开发者能够轻松构建 Docker 容器并访问预构建的容器,提供一致的团队开发环境,消除耗时的设置和依赖管理。
Local Mode 和 Docker 支持为验证代码更改和使用 SageMaker Studio 笔记本中的本地容器原型模型提供了简化的工作流程。在这篇文章中,我们将指导您如何在 SageMaker Studio 中设置 Local Mode,运行示例训练作业,以及从 SageMaker Studio 笔记本在 Amazon SageMaker 上部署模型。
SageMaker Studio Local Mode
SageMaker Studio 引入了 Local Mode,让您可以在 JupyterLab、代码编辑器或 SageMaker Studio Classic 笔记本实例上直接运行 SageMaker 训练、推理、批次转换和处理任务,而无需远程计算资源。使用 Local Mode 的好处包括:
好处描述即时验证和测试在集成开发环境IDEs内部直接进行工作流程的验证和测试。更快的迭代通过本地运行小规模作业来加快检查输出和早期识别问题的速度。提高开发和调试效率消除了等待远程训练作业的时间,提升了开发和调试的效率。立即反馈在运行完整云端作业之前,提供对代码更改的即时反馈。要使用 Local Mode,在运行 SageMaker Python SDK 作业如训练和推理时,设置 instancetype=local。这样做将使它们在您的 SageMaker Studio IDE 上运行,而不是摊派云端资源。虽然某些功能如分布式训练仅在云端中可用,但 Local Mode 使您无需切换上下文即可快速迭代。当您准备好利用 SageMaker 的全部功能和规模时,可以无缝地在云端运行您的工作流程。
SageMaker Studio 的 Docker 支持
SageMaker Studio 现在还支持在 SageMaker Studio 笔记本实例上本地构建和运行 Docker 容器。这一新功能允许您在使用它们进行 SageMaker 训练和推理之前,先在 SageMaker Studio 中构建和验证 Docker 映像。
通过 SageMaker Studio 的 Docker 支持,您可以:
功能描述在 SageMaker Studio 中构建 Docker 容器直接整合模型和依赖来构建 Docker 容器。简化图像创建消除了需要外部 Docker 构建过程的需要。本地运行容器以验证功能在将模型部署到生产阶段之前,先在本地运行容器以验证功能。重用本地容器在部署到 SageMaker 进行训练和托管时重用本地容器。虽然某些高级 Docker 功能如多容器和自定义网络在本文撰写时尚不支持,但核心构建和运行功能现已可用,以加速用于自家容器BYOC工作流程的容器开发。
使用 Local Mode 的前置要求
要在 SageMaker Studio 应用中使用 Local Mode,您需要完成以下前置条件:
要从 Amazon Elastic Container Registry (Amazon ECR) 拉取映像,承载 ECR 映像的帐户必须向用户的 身份和访问管理 (IAM) 角色提供访问权限。该域的角色还必须允许 Amazon ECR 访问。为了启用 Local Mode 和 Docker 功能,您必须使用 AWS 命令行界面 (AWS CLI) 将域的 DockerSettings 参数 EnableDockerAccess 设置为 true。这允许该域中的用户使用 Local Mode 和 Docker 功能。默认情况下,Local Mode 和 Docker 在 SageMaker Studio 中是禁用的。任何现有的 SageMaker Studio 应用需要重新启动以使 Docker 服务更新生效。以下是用于更新 SageMaker Studio 域的 AWS CLI 命令示例:sh aws sagemaker region ltREGIONgt updatedomain domainid ltDOMAINIDgt domainsettingsforupdate {DockerSettings {EnableDockerAccess ENABLED}}
您需要更新 SageMaker IAM 角色,以便能够 推送 Docker 映像 到 Amazon ECR:json { Version 20121017 Statement [ { Effect Allow Action [ ecrCompleteLayerUpload ecrUploadLayerPart ecrInitiateLayerUpload ecrBatchCheckLayerAvailability ecrPutImage ] Resource arnawsecruseast2123456789012repository/ltrepositorynamegt } { Effect Allow Action ecrGetAuthorizationToken Resource } ] }
在 SageMaker Studio 空间中运行 Python 文件,使用 Local Mode
SageMaker Studio JupyterLab 和基于 CodeOSS Visual Studio Code 开源 的代码编辑器扩展了 SageMaker Studio,使您可以使用流行的轻量级 IDE 写入、测试、调试和运行分析和 ML 代码。要开始使用 SageMaker Studio IDE,请参考 Boost productivity on Amazon SageMaker Studio Introducing JupyterLab Spaces and generative AI tools 和 New Code Editor based on CodeOSS VS Code Open Source now available in Amazon SageMaker Studio。请完成以下步骤:
创建一个名为 mysmcodeeditorspace 或 mysmjupyterlabspace 的新代码编辑器或 JupyterLab 空间。选择 创建空间。选择 mlm5large 实例,并将存储设置为 32 GB。选择 运行空间。打开 JupyterLab 或代码编辑器空间并克隆 GitHub 仓库。克隆 GitHub 仓库,以 /home/sagemakeruser/ 作为目标文件夹。创建一个新的终端。根据以下 GitHub 仓库 的指示安装 Docker CLI 和 Docker Compose 插件。如果链接命令失败,请逐个运行命令。必须将 SageMaker SDK 更新到最新版本。
shpip install sagemaker Uq
针对代码编辑器,您还需要设置 Python 环境以在当前终端中运行。在代码编辑器中,选择 文件菜单,然后选择 首选项 和 设置。搜索并选择 Terminal Execute in File Dir。在代码编辑器或 JupyterLab 中,打开 scikitlearnscriptmodelocaltrainingandserving 文件夹并运行 scikitlearnscriptmodelocaltrainingandservingpy 文件。您可以选择代码编辑器中的 运行 或在 JupyterLab 终端中使用 CLI 运行该脚本。您将能够看到模型是如何在本地训练的。然后,您将该模型本地部署到 SageMaker 端点,并计算均方根误差RMSE。
在 SageMaker Studio Classic 中使用 Local Mode 模拟训练和推理
您还可以使用 SageMaker Studio Classic 中的笔记本来运行名为 CIFAR10 的小规模训练作业,并在本地部署模型并进行推理。
设置您的笔记本
要设置笔记本,请完成以下步骤:
打开 SageMaker Studio Classic 并克隆以下 GitHub 仓库。打开 pytorchlocalmodecifar10ipynb 笔记本。对于 映像,选择 PyTorch 210 Python 310 CPU Optimized。确认您的笔记本显示正确的实例和内核选择。通过选择 启动终端 在当前 SageMaker 映像中打开终端。根据以下 GitHub 仓库 的指示安装 Docker CLI 和 Docker Compose 插件。由于您是从 SageMaker Studio Classic 使用 Docker,因此在运行命令时请删除 sudo,因为终端已经在超级用户下运行。安装命令取决于 SageMaker Studio 应用图像的操作系统。例如,基于 DLC 的框架映像是基于 Ubuntu 的,以下指示将有效。然而,对于像数据科学图像这样的基于 Debian 的映像,您必须遵循以下 GitHub 仓库 中的指示。如果链接命令失败,请逐个运行命令。您应该看到显示的 Docker 版本。
保持终端窗口打开,回到笔记本,并开始逐个运行它。确保您运行的单元包含 pip install U sagemaker 以使用最新版本的 SageMaker Python SDK。
本地训练
当您开始运行本地 SageMaker 训练作业时,您会看到以下日志行:
plaintextINFOsagemakerlocalimageDocker Compose found using Docker CLIINFOsagemakerlocallocalsessionStarting training job
这表明训练正在使用 Docker 在本地运行。
请耐心等待,pytorchtraining21cpupy310 Docker 映像正在拉取。由于其大小为 52 GB,可能需要几分钟。
Docker 映像将存储在 SageMaker Studio 应用实例的根卷中,最终用户无法访问。用户只能使用暴露的 Docker API 操作来访问和互动 Docker 映像。
当训练完成时,您将能够看到以下成功日志行:
plaintext8zlz1zbftasagemakerlocal exited with code 0Aborting on container exitContainer 8zlz1zbftasagemakerlocal StoppingContainer 8zlz1zbftasagemakerlocal StoppedINFOsagemakerlocalimage===== Job Complete =====
本地推理
完成以下步骤:
使用 SageMaker Local Mode 部署 SageMaker 端点。请耐心等待,pytorchinference21cpupy310 Docker 映像正在拉取。由于其大小为 432 GB,可能需要几分钟。
使用测试图像调用本地部署的 SageMaker 端点。您将能够看到预测的类别:青蛙、船、车和飞机。
plaintextPredicted frog ship car plane
闪连vp n下载安卓版由于 SageMaker 本地端点仍然在运行,请返回到打开的终端窗口并列出正在运行的容器:bashdocker ps
您将能够看到支援 SageMaker 端点的正在运行的 pytorchinference21cpupy310 容器。
要关闭 SageMaker 本地端点并停止运行的容器,因为您只能一次运行一个本地端点,请运行清理代码。要确保 Docker 容器已关闭,您可以导航到打开的终端窗口,运行 docker ps 并确保没有正在运行的容器。如果您看到一个容器正在运行,请运行 docker stop ltCONTAINERIDgt 来停止它。使用 SageMaker Local Mode 的提示
如果您首次使用 SageMaker,请参考 训练机器学习模型。要了解有关使用 SageMaker 进行推理部署模型的更多信息,请参考 为推理部署模型。
请记住以下建议:
打印输入和输出文件夹以了解数据集和模型加载。使用 12 轮次和小型数据集进行快速测试。在 Dockerfile 中预先安装依赖项以优化环境设置。隔离端点中的序列化代码以进行调试。将 Docker 安装配置为生命周期配置
您可以将 Docker 安装过程定义为生命周期配置 (LCC) 脚本,以简化每次新 SageMaker Studio 空间启动时的设置。LCC 是 SageMaker 在创建空间等事件期间运行的脚本。请参考 JupyterLab、代码编辑器 或 SageMaker Studio Classic LCC 设置 (使用 docker install cli 作为参考) 以了解更多信息。
在 SageMaker Studio 空间中构建和测试自定义 Docker 映像
在此步骤中,您在 JupyterLab (或代码编辑器) 应