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

使用 SageMaker 训练和推理工具包

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

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

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

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

SageMaker 工具包容器结构

当 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 镜像可能会增加存储要求和成本,因为常见的库可能会重复。

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

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

  • SageMaker 要求 Docker 容器运行而无需特权访问。

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

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