SageMaker Distribution是一个预构建的Docker镜像,包含许多流行的机器学习(ML)、数据科学和数据可视化的软件包。其中包括PyTorch、TensorFlow和Keras等深度学习框架;NumPy、scikit-learn和pandas等常用Python软件包;以及JupyterLab等集成开发环境。除此之外,SageMaker Distribution还支持conda、micromamba和pip作为Python包管理器。
2023年5月,我们在JupyterCon上启动了SageMaker Distribution作为一个开源项目。这个启动使您能够在本地环境中使用SageMaker Distribution来运行实验。现在,我们将这个镜像原生地提供在Amazon SageMaker Studio中,以便您获得在Amazon SageMaker上运行实验的高性能、计算和安全性的好处。
与之前的开源启动相比,您还有以下额外的功能:
- 开源镜像现在作为SageMaker Studio的第一方镜像可用。现在,您可以在选择图像和内核以用于您的笔记本时,直接从列表中选择开源的SageMaker Distribution,而无需创建自定义镜像。
- SageMaker Python SDK包现在与镜像内置。
在本文中,我们将展示使用SageMaker Distribution镜像的特点和优势。
在SageMaker Studio中使用SageMaker Distribution
如果您可以访问现有的Studio域,您可以启动SageMaker Studio。要创建一个Studio域,请按照Onboard to Amazon SageMaker Domain中的说明进行操作。
- 在SageMaker Studio的用户界面中,选择菜单栏中的文件,选择新建,然后选择笔记本。
- 在提示选择图像和实例时,选择SageMaker Distribution v0 CPU或SageMaker Distribution v0 GPU图像。
- 选择您的内核,然后选择选择。
现在,您可以开始运行命令,而无需安装常用的ML软件包和框架!您还可以运行在支持的框架(如PyTorch和TensorFlow)上运行的笔记本,而无需切换活动内核。
使用SageMaker Distribution远程运行代码
在公测的公告中,我们讨论了将笔记本从本地计算环境升级到SageMaker Studio,并使用笔记本作业将笔记本运行。
此外,您只需将@remote
装饰器添加到您的函数中,即可将本地笔记本代码直接作为SageMaker训练作业运行。
让我们试一个例子。将以下代码添加到在SageMaker Distribution镜像上运行的Studio笔记本中:
from sagemaker.remote_function import remote
@remote(instance_type="ml.m5.xlarge", dependencies='./requirements.txt')
def divide(x, y):
return x / y
divide(2, 3.0)
当您运行该单元格时,该函数将作为远程SageMaker训练作业在ml.m5.xlarge笔记本上运行,SDK会自动选择SageMaker Distribution镜像作为Amazon Elastic Container Registry(Amazon ECR)中的训练镜像。对于深度学习工作负载,您还可以在多个并行实例上运行脚本。
在其他地方重现SageMaker Distribution的Conda环境
SageMaker Distribution作为一个公共Docker镜像可用。然而,对于更熟悉Conda环境而不是Docker的数据科学家,GitHub存储库还提供了每个镜像构建的环境文件,以便您可以为CPU和GPU版本构建Conda环境。
每个版本的构建文件存储在sagemaker-distribution/build_artifacts目录下。要创建与任何可用的SageMaker Distribution版本相同的环境,请运行以下命令,将--file
参数替换为正确的环境文件:
conda create --name conda-sagemaker-distribution \
--file sagemaker-distribution/build_artifacts/v0/v0.2/v0.2.1/cpu.env.out
# 激活环境
conda activate conda-sagemaker-distribution
自定义开源SageMaker Distribution镜像
开源SageMaker Distribution镜像包含了数据科学和机器学习中最常用的软件包。然而,数据科学家可能需要访问额外的软件包,企业客户可能拥有提供额外功能的专有软件包。在这种情况下,有多种选项可以创建一个包含所需软件包的运行时环境。按照复杂程度的递增顺序,它们列举如下:
- 您可以直接在笔记本上安装软件包。我们推荐使用Conda和micromamba,但pip也可以使用。
- 熟悉Conda软件包管理的数据科学家可以在其他地方复制SageMaker Distribution的Conda环境,并在该环境中安装和管理额外的软件包。
- 如果管理员想要为用户创建可重复和受控的运行时环境,他们可以扩展SageMaker Distribution的Docker镜像并维护自己的镜像。请参阅“自定义SageMaker镜像”以获取有关在Studio中创建和使用自定义镜像的详细说明。
清理
如果您在SageMaker Studio中进行了实验,请关闭所有Studio应用程序以避免支付未使用的计算资源。请参阅“关闭和更新Studio应用程序”获取说明。
结论
今天,我们宣布在SageMaker Studio中推出了开源SageMaker Distribution镜像。我们向您展示了如何在SageMaker Studio中使用该镜像作为可用的第一方镜像,如何使用SageMaker Python SDK的@remote装饰器将脚本运行操作化,如何在SageMaker Distribution之外的地方复制Conda环境,并如何自定义镜像。我们鼓励您尝试使用SageMaker Distribution,并通过GitHub分享您的反馈!
附加参考资料
- SageMaker-distribution文档
- AWS在2023年JupyterCon上的贡献
- 在SageMaker Studio上入门