将您自己的算法或模型与 SageMaker 结合使用 - 亚马逊 SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

将您自己的算法或模型与 SageMaker 结合使用

SageMaker 广泛地将 Docker 容器用于各种构建和运行时任务。将您自己的算法或模型与 SageMaker 结合使用之前,您需要了解 SageMaker 如何管理并运行它们。SageMaker 为其内置算法提供了预构建的 Docker 映像,并且提供了支持的深度学习框架以用于训练和推理。使用容器,您可以在任意规模快速可靠地训练机器学习算法并部署模型。Docker 是一个程序,该程序执行操作系统级虚拟化,以便安装、分发和管理软件。它将应用程序及其依赖项打包到虚拟容器中,后者提供了隔离、可移植性和安全性。

您可以将您的机器学习模型的脚本、算法和推理代码放入容器中。该容器包含训练您的算法或部署您的模型所需的运行时、系统工具、系统库以及其他代码。这样,您可以灵活地将几乎任何脚本或算法代码与 SageMaker 结合使用,而不管运行时或实施语言如何。在容器中运行的代码可以与其周边环境有效地隔离开,确保一致的运行时,而无论容器的部署位置如何。在将您的训练代码和/或推理代码打包到 Docker 容器中后,可以创建算法资源和模型程序包资源,以便在 SageMaker 使用或在 AWS Marketplace 上发布。通过使用 Docker,您可以更快地发布代码、实现应用程序操作的标准化、无缝地迁移代码,并通过改进资源利用率来实现经济效益。

您可以从以下位置创建Docker容器 图像 保存在 存储库. 您可以从 Dockerfile 中提供的脚本化指令构建映像。要使用 SageMaker 中的 Docker 容器,您使用的脚本必须满足特定的要求。有关各种要求的更多信息,请参阅使用您自己的训练算法使用您自己的推理代码

使用 SageMaker 运行脚本、训练算法或部署模型的场景

在运行脚本、训练算法或部署模型时,SageMaker 始终使用 Docker 容器。但是,您与容器的交互程度取决于您使用的是 SageMaker 提供的内置算法,还是您自己开发的脚本或模型。如果您使用的是自己的代码,它还取决于开发所用的语言和框架或环境,以及运行该代码所需的任何其他依赖项。尤其是,这取决于您是否使用 Amazon SageMaker Python SDK 或AWSSDKforPython(Boto3)或一些其他SDK。 SageMaker 为其内置算法提供容器,并为一些最常见的机器学习框架提供预构建的Docker镜像。您可以使用提供的容器和映像,或者扩展这些容器和映像以涵盖更复杂的使用案例。您还可以创建自己的容器映像,以管理 SageMaker 提供的容器无法解决的更高级使用案例。

SageMaker 环境中的运行脚本、算法和模型有四个主要场景。最后三个描述了此处介绍的场景:使用容器的方式 自带 脚本, 算法或模型.

  • 使用内置算法。当您使用其中一种 SageMaker 内置算法,但不直接处理它们时,在后台使用容器。您可以从 SageMaker 控制台、AWS Command Line Interface (AWS CLI)、Python 笔记本或 Amazon SageMaker Python SDK训练和部署这些算法。可用的内置算法将会分项列出,并且在使用 SageMaker 内置算法主题中进行了介绍。有关如何使用在 SageMaker 笔记本实例中运行的 Jupyter 笔记本训练和部署内置算法的示例,请参阅Amazon SageMaker 入门主题。

  • 使用预置容器镜像.SageMaker 提供预构建容器以支持深度学习框架,如Apache MXNet, TensorFlow, PyTorch和Chainer。它还支持机器学习库,如scikit学习和 SparkML 提供预构建Docker镜像。如果您使用 Amazon SageMaker Python SDK,它们会使用相应的 SageMaker 开发工具包 Estimator 类进行部署。在这种情况下,您可以提供实施算法的 Python 代码,并配置预构建的映像作为入口点来访问代码。有关 SageMaker 当前支持的深度学习框架以及用于演示如何使用这些框架的预构建容器映像的示例,请参阅已预构建 SageMaker 的Docker镜像 TensorFlow, MXNet、Chiner和 PyTorch。有关scikit-learn和 SparkML 预置容器镜像,请参阅 Scikit-learn 和 Spark ML 的预构建 SageMaker Docker 映像 . 有关将框架与 Amazon SageMaker Python SDK结合使用的更多信息,请参阅将机器学习框架 Python 和 R 与 SageMaker 一起使用中相应的主题。

  • 扩展预构建容器映像。如果您有其他功能要求,需要使用在预构建的 SageMaker Docker 镜像不支持的框架中开发的算法或模型,则可以修改 SageMaker 映像来满足您的需求。有关示例,请参阅 延长我们的 PyTorch 容器.

  • 构建您自己的自定义容器镜像: 如果没有预先构建的 SageMaker 容器镜像,您可以为 高级场景,您可以打包自己的脚本或算法,以与一起使用 SageMaker.您可以使用任何编程语言或框架来开发容器。有关说明如何构建您自己的容器来训练和托管算法的示例,请参阅使用自己的 R 算法

下一个主题简要介绍了 Docker 容器。SageMaker 有一定的合同要求,容器必须满足这些要求才能与它一起使用。以下主题描述了可用于创建 SageMaker 兼容容器的 SageMaker 容器库,包括它定义和可能需要的环境变量的列表。接下来,有一个教程介绍了如何开始使用 SageMaker 容器训练 Python 脚本。在完成教程后,有一些主题:

  • 介绍 SageMaker 为深度学习框架和其他库提供的预构建 Docker 容器。

  • 提供有关如何针对各种场景部署容器的示例。

后续部分更详细地描述了使用 Docker 和 SageMaker 来训练自定义算法和部署推理代码以进行预测的合同要求。在部署模型时,有两种方法可以进行预测。首先,要做出单独的实时预测,您可以使用托管服务进行推理。其次,要获取整个数据集的预测,可以使用批量转换。最后的部分将介绍如何创建算法和模型包资源,以便在Amazon中使用 SageMaker 帐户或发布到AWSMarketplace。