本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
SageMaker 训练和推理工具包
SageMaker Training
-
用于存储代码和其他资源的位置。
-
包含要在容器启动时运行的代码的入口点。您的 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 提供的容器都可以向
Stdout和Stderr文件发送消息。SageMaker AI 将这些消息发送到您 AWS 账户中的 Amazon CloudWatch 日志。
有关如何创建 SageMaker AI 容器以及脚本如何在容器内执行的更多信息,请参阅 GitHub 上的 SageMaker AI Training Toolkit