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