用于训练和部署模型的 Docker 容器 - 亚马逊 SageMaker AI
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

用于训练和部署模型的 Docker 容器

Amazon SageMaker AI 广泛使用 Docker 容器来执行构建和运行时任务。 SageMaker AI 为其内置算法以及用于训练和推理的支持的深度学习框架提供了预构建的 Docker 镜像。使用容器,您可以快速可靠地训练机器学习算法并部署任意规模的模型。此部分中的主题展示了如何根据自己的使用场景部署这些容器。有关如何自带容器用于 Amazon SageMaker Studio Classic 的信息,请参阅带上你自己的 SageMaker 图片

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

Amazon SageMaker AI 在运行脚本、训练算法和部署模型时始终使用 Docker 容器。您与容器的互动程度取决于您的使用场景。

以下决策树说明了三种主要场景:使用带有 SageMaker AI 的预建 Docker 容器的用例;扩展预构建的 Docker 容器的用例;构建自己的容器的用例

容器使用场景的决策树。

使用带有 AI 的预构建 Docker 容器的用例 SageMaker

使用带有 SageMaker AI 的容器时,请考虑以下用例:

  • 预建的 SageMaker AI 算法 — 使用内置算法附带的图像。有关更多信息,请参阅使用 SageMaker Amazon AI 内置算法或预训练模型

  • 带有预构建 SageMaker AI 容器的自定义模型 — 如果您训练或部署自定义模型,但使用的框架包含预先构建的 SageMaker AI 容器(包括 TensorFlow 和) PyTorch,请选择以下选项之一:

    • 如果您不需要自定义软件包,并且容器已包含所有必需的软件包:请使用与您的框架关联的预构建 Docker 映像。有关更多信息,请参阅 预先构建的 SageMaker AI Docker 镜像

    • 如果您需要安装到预建容器之一中的自定义软件包:请确认预构建的 Docker 映像允许 requirements.txt 文件,或者根据以下使用场景扩展预构建的容器。

扩展预构建 Docker 容器的使用场景

以下是扩展预构建 Docker 容器的使用场景:

  • 无法导入依赖项 – 扩展与您的框架关联的预构建 Docker 映像。请参阅扩展预构建容器了解更多信息。

  • 无法在预建容器中导入依赖项,并且预构建容器支持 requirements.txt – 在 requirements.txt 中添加所有必需的依赖项。以下框架支持使用 requirements.txt。

自行构建容器的使用场景

如果您构建或训练自定义模型,并且需要没有预构建映像的自定义框架,请构建一个自定义容器。

作为训练和部署 TensorFlow 模型的示例用例,以下指南展示了如何确定前面用例部分中哪个选项适合该案例

假设您在训练和部署 TensorFlow 模型时有以下要求。

确定所需的容器类型后,以下列表提供了之前列出选项的详细信息。

  • 使用内置的 A SageMaker I 算法或框架。对于大多数使用场景,您可以使用内置算法和框架而不必为容器费心。你可以通过 SageMaker AI 控制台、 Amazon Command Line Interface (Amazon CLI)、Python 笔记本或 A mazon Pyth SageMaker on SDK 训练和部署这些算法。您可在创建估算器时,通过指定算法或框架版本来做到这一点。可用的内置算法将会分项列出,Amazon 中的内置算法和预训练模型 SageMaker主题中对此进行了介绍。有关可用框架的更多信息,请参阅 ML 框架和语言。有关如何使用在笔记本实例中运行的 Jupyter 笔记本训练和部署内置算法的 SageMaker 示例,请参阅主题。亚马逊 A SageMaker I 入门指南

  • 使用预构建的 SageMaker AI 容器镜像。或者,您可以使用 Docker 容器使用内置算法和框架。 SageMaker AI 为其内置算法提供了容器,并为一些最常见的机器学习框架(例如 Apache MXNet、、和 Chainer)提供了预构建的 Docker 镜像。 TensorFlow PyTorch有关可用 SageMaker 图像的完整列表,请参阅可用的 Deep Learning Containers 镜像。它还支持 scikit-learn 和 SparkML 等机器学习库。如果您使用 Amaz SageMaker on Python 软件开发工具包,则可以通过将完整的容器 URI 传递给相应的 SageMaker 软件开发工具包Estimator类来部署容器。有关 A SageMaker I 目前支持的深度学习框架的完整列表,请参阅用于深度学习的预构建 SageMaker AI Docker 镜像。有关 scikit-learn 和 SparkML 预构建容器映像的信息,请参阅访问 Scikit-learn 和 Spark ML 的预构建 Docker 映像。有关在 Amaz SageMaker on Python 软件开发工具包中使用框架的更多信息,请参阅中相应的主题机器学习框架和语言

  • 扩展预构建的 SageMaker AI 容器镜像。如果您想扩展预先构建的 SageMaker AI 算法或建模 Docker 镜像,可以修改 SageMaker 镜像以满足您的需求。有关示例,请参阅扩展我们的 PyTorch 容器

  • 调整现有的容器镜像:如果您想调整先前存在的容器镜像以使用 SageMaker AI,则必须修改 Docker 容器以启用 SageMaker 训练或推理工具包。有关说明如何构建您自己的容器来训练和托管算法的示例,请参阅使用自己的 R 算法

为您排查故障 Docker 容器和部署

以下是您在使用时可能遇到的常见错误 Docker 带有 SageMaker AI 的容器。每个错误的后面都提供了错误的解决方案。

  • 错误: SageMaker AI 丢失了 Docker 守护程序。

    要修复此错误,请使用以下命令重新启动 Docker。

    sudo service docker restart
  • 错误:你的/tmp目录 Docker 容器空间不足。

    Docker 容器使用//tmp分区来存储代码。在本地模式下使用大型代码模块时,这些分区很容易填满。 SageMaker AI Python SDK 支持为本地模式根目录指定自定义临时目录以避免此问题。

    要在 Amazon Elastic Block Store 卷存储中指定自定义临时目录,请在路径 ~/.sagemaker/config.yaml 中创建文件,然后添加以下配置。您指定作为 container_root 的目录必须已经存在。A SageMaker I Python 软件开发工具包不会尝试创建它。

    local: container_root: /home/ec2-user/SageMaker/temp

    使用此配置,本地模式使用 /temp 目录而不是默认的 /tmp 目录。

  • SageMaker 笔记本实例出现空间不足错误

    A Docker 默认情况下,在 SageMaker 笔记本实例上运行的容器使用笔记本实例的 Amazon EBS 根 Amazon EBS 卷。要解决空间不足错误,请在的卷参数中提供附加到笔记本实例的 Amazon EBS 卷的路径 Docker 命令。

    docker run -v EBS-volume-path:container-path