本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
用于训练和部署模型的 Docker 容器
Ama SageMaker zon 广泛使用 Docker 容器来执行构建和运行时任务。 SageMaker 为其内置算法提供预构建的 Docker 镜像,以及用于训练和推理的支持的深度学习框架。使用容器,您可以快速可靠地训练机器学习算法并部署任意规模的模型。此部分中的主题展示了如何根据自己的使用场景部署这些容器。有关如何自带容器用于 Amazon SageMaker Studio Classic 的信息,请参阅带上你自己的 SageMaker 图片。
主题
使用运行脚本、训练算法或部署模型的场景 SageMaker
Amazon 在运行脚本、训练算法和部署模型时 SageMaker 始终使用 Docker 容器。您与容器的互动程度取决于您的使用场景。
以下决策树说明了三种主要场景:使用预构建的 Docker 容器的用例 SageMaker;扩展预构建的 Docker 容器的用例;构建自己的容器的用例。
使用预构建的 Docker 容器的用例 SageMaker
将容器与以下用例一起使用时,请考虑以下用例 SageMaker:
-
预建 SageMaker 算法-使用内置算法附带的图像。有关更多信息,请参阅使用 Amazon SageMaker 内置算法或预训练模型。
-
带有预建 SageMaker容器的自定义模型 — 如果您训练或部署自定义模型,但使用的框架包含包含 TensorFlow 和的预建 SageMaker 容器 PyTorch,请选择以下选项之一:
-
如果您不需要自定义软件包,并且容器已包含所有必需的软件包:请使用与您的框架关联的预构建 Docker 映像。有关更多信息,请参阅 预先构建的 SageMaker Docker 镜像。
-
如果您需要安装到预建容器之一中的自定义软件包:请确认预构建的 Docker 映像允许 requirements.txt 文件,或者根据以下使用场景扩展预构建的容器。
-
扩展预构建 Docker 容器的使用场景
以下是扩展预构建 Docker 容器的使用场景:
-
无法导入依赖项 – 扩展与您的框架关联的预构建 Docker 映像。请参阅扩展预构建容器了解更多信息。
-
无法在预建容器中导入依赖项,并且预构建容器支持 requirements.txt – 在 requirements.txt 中添加所有必需的依赖项。以下框架支持使用 requirements.txt。
自行构建容器的使用场景
如果您构建或训练自定义模型,并且需要没有预构建映像的自定义框架,请构建一个自定义容器。
作为训练和部署 TensorFlow 模型的示例用例,以下指南展示了如何确定前面用例部分中哪个选项适合该案例。
假设您在训练和部署 TensorFlow 模型时有以下要求。
-
TensorFlow 模型是自定义模型。
-
由于要在 TensorFlow 框架中构建 TensorFlow 模型,因此请使用 TensorFlow 预先构建的框架容器来训练和托管模型。
-
如果您需要在入口点
脚本或推理脚本中使用自定义软件包,请扩展预构建容器,或者使用 requirements.txt 文件在运行时安装依赖项 。
确定所需的容器类型后,以下列表提供了有关先前列出的选项的详细信息。
-
使用内置 SageMaker 算法或框架。对于大多数使用场景,您可以使用内置算法和框架而不必为容器费心。你可以通过 SageMaker 控制台、 Amazon Command Line Interface (Amazon CLI)、Python 笔记本或 Amaz SageMaker
on Python 训练和部署这些算法SDK。您可在创建估算器时,通过指定算法或框架版本来做到这一点。可用的内置算法将会分项列出,Amazon 中的内置算法和预训练模型 SageMaker主题中对此进行了介绍。有关可用框架的更多信息,请参阅 ML 框架和语言。有关如何使用在笔记本实例中运行的 Jupyter 笔记本训练和部署内置算法的 SageMaker 示例,请参阅主题。Amazon 入门指南 SageMaker -
使用预先构建的 SageMaker 容器镜像。或者,您可以使用 Docker 容器使用内置算法和框架。 SageMaker 为其内置算法提供了容器,并为一些最常见的机器学习框架(例如 Apache MXNet、、和 Chainer)提供了预构建的 Docker 镜像。 TensorFlow PyTorch有关可用 SageMaker 图像的完整列表,请参阅可用的 Deep Learning Containers 镜像
。它还支持 scikit-learn 和 SparkML 等机器学习库。如果您使用 Amaz SageMaker on Python SDK ,则可以通过将完整的容器传递给相应的 SageMaker SDK Estimator
类URI来部署容器。有关目前支持的深度学习框架的完整列表 SageMaker,请参阅用于深度学习的预构建 SageMaker Docker 镜像。有关 scikit-learn 和 SparkML 预构建容器映像的信息,请参阅访问 Scikit-Learn 和 Spark ML 的 Docker 镜像。有关在 Amaz SageMaker on Python中使用框架的更多信息SDK,请参阅中相应的主题机器学习框架和语言。 -
扩展预先构建的 SageMaker 容器镜像。如果您想扩展预先构建的 SageMaker 算法或建模 Docker 镜像,可以修改 SageMaker 镜像以满足您的需求。有关示例,请参阅扩展我们的 PyTorch 容器
。 -
调整现有的容器镜像:如果您想调整已存在的容器镜像以供使用 SageMaker,则必须修改 Docker 容器以启用 SageMaker 训练或推理工具包。有关说明如何构建您自己的容器来训练和托管算法的示例,请参阅使用自己的 R 算法
。
为您排查故障 Docker 容器和部署
以下是您在使用时可能遇到的常见错误 Docker 带有 SageMaker. 的容器 每个错误的后面都提供了错误的解决方案。
-
错误:丢失 SageMaker 了 Docker 守护程序。
要修复此错误,请使用以下命令重新启动 Docker。
sudo service docker restart
-
错误:你的
/tmp
目录 Docker 容器空间不足。Docker 容器使用
/
和/tmp
分区来存储代码。在本地模式下使用大型代码模块时,这些分区很容易填满。P SageMaker ython SDK 支持为本地模式根目录指定自定义临时目录以避免此问题。要在 Amazon Elastic Block Store 卷存储中指定自定义临时目录,请在以下路径创建一个文件
~/.sagemaker/config.yaml
并添加以下配置。您指定作为container_root
的目录必须已经存在。P SageMaker ython SDK 不会尝试创建它。local: container_root: /home/ec2-user/SageMaker/temp
使用此配置,本地模式使用
/temp
目录而不是默认的/tmp
目录。 -
SageMaker 笔记本实例出现空间不足错误
A Docker 默认情况下,在 SageMaker 笔记本实例上运行的容器使用笔记本实例的 Amazon 根 Amazon EBS 卷。要解决空间不足错误,请在的EBS卷参数中提供附加到笔记本实例的 Amazon 卷的路径 Docker 命令。
docker run -v
EBS-volume-path
:container-path