SageMaker 训练和推理工具包 - 亚马逊 SageMaker AI

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

SageMaker 训练和推理工具包

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

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

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

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

SageMaker AI 工具包容器结构

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

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

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

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

在托管或批量转换容器中,模型文件所在的文件夹是在训练期间要写入同一个文件夹。

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

有关更多信息,请参阅 具有自定义推理代码的容器

单个容器与多个容器

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

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

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

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

  • SageMaker AI 要求 Docker 容器在无特权访问的情况下运行。

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

有关如何创建 SageMaker AI 容器以及脚本如何在容器内执行的更多信息,请参阅 GitHub 上的 SageMaker AI Training ToolkitSageMaker AI Inference Toolkit 存储库。它们还提供重要环境变量以及 SageMaker AI 容器提供的环境变量的列表。