

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

# SageMaker 训练和推理工具包
<a name="amazon-sagemaker-toolkits"></a>

[SageMaker 训练](https://github.com/aws/sagemaker-training-toolkit)和 [SageMaker AI 推理](https://github.com/aws/sagemaker-inference-toolkit)工具包实现了调整容器以在 AI 上 SageMaker 运行脚本、训练算法和部署模型所需的功能。安装后，此库会为用户定义以下内容：
+ 用于存储代码和其他资源的位置。
+ 包含要在容器启动时运行的代码的入口点。您的 Dockerfile 必须将需要运行的代码复制到与 SageMaker AI 兼容的容器所期望的位置。
+ 容器管理部署以进行训练和推理所需的其他信息。

## SageMaker AI 工具包容器结构
<a name="sagemaker-toolkits-structure"></a>

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

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

运行模型*训练*作业时， SageMaker AI 容器使用`/opt/ml/input/`目录，该目录包含配置算法超参数的 JSON 文件以及用于分布式训练的网络布局。该`/opt/ml/input/`目录还包含指定 SageMaker 人工智能访问数据的渠道的文件，这些数据存储在亚马逊简单存储服务 (Amazon S3) Service 中。A SageMaker I 容器库将容器将要运行的脚本放在`/opt/ml/code/`目录中。您的脚本应该将算法生成的模型写入 `/opt/ml/model/` 目录。有关更多信息，请参阅 [带有自定义训练算法的容器](your-algorithms-training-algo.md)。

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

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

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

有关更多信息，请参阅 [具有自定义推理代码的容器](your-algorithms-inference-main.md)。

## 单个容器与多个容器
<a name="sagemaker-toolkits-separate-images"></a>

您可以向训练算法和推理代码提供单独的 Docker 映像，也可以为它们使用相同的 Docker 映像。在创建用于 SageMaker AI 的 Docker 镜像时，请考虑以下几点：
+ 提供两个 Docker 镜像可能会增加存储要求和成本，因为常见的库可能会重复。
+ 通常对于训练和托管而言，容器越小，启动速度越快。模型训练速度更快，并且托管服务可通过更快速地自动扩展对流量增加做出反应。
+ 您或许可以编写一个远小于训练容器的推理容器。当你使用 GPUs训练时，这种情况尤其常见，但你的推理代码已经过优化。 CPUs
+ SageMaker AI 要求 Docker 容器在没有特权访问权限的情况下运行。
+ 您构建的 Docker 容器和 SageMaker AI 提供的容器都可以向`Stdout`和`Stderr`文件发送消息。 SageMaker AI 会将这些消息发送到您 Amazon 账户中的 Amazon CloudWatch 日志。

有关如何创建 SageMaker AI 容器以及如何在其中执行脚本的更多信息，请参阅上 GitHub的 [SageMaker AI 训练工具包](https://github.com/aws/sagemaker-training-toolkit)和 [SageMaker AI 推理工具包](https://github.com/aws/sagemaker-inference-toolkit)存储库。它们还提供了重要的环境变量列表和 SageMaker 人工智能容器提供的环境变量。