使用 SageMaker 训练和推理工具包 - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

使用 SageMaker 训练和推理工具包

训练和 SageMaker 推理工具包实现调整容器以运行脚本、训练算法以及在 上部署模型所需的功能。SageMakerSageMaker安装后,此库会为用户定义以下内容:

  • 用于存储代码和其他资源的位置。

  • 包含要在容器启动时运行的代码的入口点。您的 Dockerfile 必须将需要运行的代码复制到与 SageMaker 兼容的容器预期的位置。

  • 容器管理部署以进行训练和推理所需的其他信息。

SageMaker Toolkits Containers 结构

当 SageMaker 训练模型时,它会在容器的 /opt/ml 目录中创建以下文件夹结构。

/opt/ml ├── input │ ├── config │ │ ├── hyperparameters.json │ │ └── resourceConfig.json │ └── data │ └── <channel_name> │ └── <input data> ├── model │ ├── code │ ├── output │ └── failure

当您运行模型训练 作业时,SageMaker 容器使用包含 JSON 文件的 /opt/ml/input/ 目录,这些文件可以配置算法超参数以及用于分布式训练的网络布局。/opt/ml/input/ 目录还包含一些用于指定通道的文件,SageMaker 通过这些通道访问存储在 Amazon Simple Storage Service (Amazon S3) 中的数据。容器库将容器将运行的脚本放在 SageMaker 目录中。/opt/ml/code/您的脚本应该将算法生成的模型写入 /opt/ml/model/ 目录。有关更多信息,请参阅使用您自己的训练算法

当您在 托管SageMaker 训练后的模型以进行推理时,您可以将模型部署到 HTTP 终端节点。作为对推理请求的响应,该模型进行实时预测。容器必须包含服务堆栈以处理这些请求。

在托管或批量转换容器中,模型文件位于在训练期间将这些文件写入到的同一文件夹中。

/opt/ml/model │ └── <model files>

有关更多信息,请参阅使用您自己的推理代码

单个容器与多个容器

您可以为训练算法和推理代码提供单独的 Docker 映像,也可以为两者使用单个 Docker 映像。在创建与 SageMaker 结合使用的 Docker 映像时,请考虑以下事项:

  • 提供两个 Docker 镜像可能会增加存储要求和成本,因为常见的库可能会重复。

  • 通常对于训练和托管而言,容器越小,启动速度越快。模型训练速度更快,并且托管服务可通过更快速地自动扩展对流量增加做出反应。

  • 您或许可以编写一个远小于训练容器的推理容器。这在使用 GPUs 进行训练时尤其常见,但您的推理代码已针对 CPUs 进行优化。

  • SageMaker 要求 Docker 容器在没有特权访问权限的情况下运行。

  • 您构建的 Docker 容器和 SageMaker 提供的容器都可以向 StdoutStderr 文件发送消息。SageMaker 将这些消息发送到您 AWS 账户中的 Amazon CloudWatch 日志。

有关如何创建 SageMaker 容器以及如何在其中执行脚本的更多信息,请参阅 上的 SageMakerTraining ToolkitSageMaker 推理工具包存储库。GitHub 它们还提供了重要的环境变量和 SageMaker 容器提供的环境变量的列表。