

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

# SageMaker 训练编译器常见问题
<a name="training-compiler-faq"></a>

**重要**  
Amazon Web Services (AWS) 宣布， SageMaker 训练编译器将没有新版本或新版本。你可以继续通过现有的 Dee AWS p Learning Containers (DLCs) 使用 SageMaker SageMaker 训练编译器进行训练。值得注意的是，根据[AWS 深度学习容器（Deep Learning Containers Framework Support）政策 AWS](https://docs.aws.amazon.com/deep-learning-containers/latest/devguide/support-policy.html)，虽然现有内容 DLCs 仍然可以访问，但它们将不再收到来自的补丁或更新。

使用以下常见问题解答来查找有关 T SageMaker raining Compiler 的常见问题的答案。

**问：我怎么知道 SageMaker 训练编译器正在运行？**

如果您使用 Training Compil SageMaker er 成功启动训练作业，则会收到以下日志消息：
+ 与 `TrainingCompilerConfig(debug=False)`

  ```
  Found configuration for Training Compiler
  Configuring SM Training Compiler...
  ```
+ 与 `TrainingCompilerConfig(debug=True)`

  ```
  Found configuration for Training Compiler
  Configuring SM Training Compiler...
  Training Compiler set to debug mode
  ```

**问： SageMaker 训练编译器可以加速哪些模型？**

SageMaker Training Compiler 支持 Hugging Face 变换器库中最受欢迎的深度学习模型。使用编译器支持的大多数运算符，可以使用 Training Compiler 更快地 SageMaker 训练这些模型。可编译模型包括但不限于以下项目：`bert-base-cased`、`bert-base-chinese`、`bert-base-uncased`、`distilbert-base-uncased`、`distilbert-base-uncased-finetuned-sst-2-english`、`gpt2`、`roberta-base`、`roberta-large`、`t5-base` 以及 `xlm-roberta-base`。编译器可使用大多数深度学习运算符和数据结构，并且可以加速已测试模型之外的许多其他深度学习模型。

**问：如果我使用未经测试的模型启用 T SageMaker raining Compiler 会发生什么？**

对于未经测试的模型，您可能需要先修改训练脚本以使其与 Training Compiler SageMaker 兼容。有关更多信息，请参阅[自带深度学习模型](training-compiler-modify-scripts.md)，然后按照介绍如何准备训练脚本的说明进行操作。

更新训练脚本后，即可启动训练作业。编译器将继续编译模型。但是，对于未经测试的模型，与基准相比，训练速度可能不会加快，甚至可能会减慢。您可能需要重新调整训练参数（例如 `batch_size` 和 `learning_rate`）以获得加速好处。

如果编译未经测试的模型失败，编译器将返回一个错误。请参阅[SageMaker 训练编译器故障排除](training-compiler-troubleshooting.md)，了解有关失败类型和错误消息的详细信息。

**问：使用 Training Compiler 我总能更快地完成 SageMaker 训练作业吗？**

否，不一定。首先，在加速正在进行的 SageMaker 训练过程之前，Training Compiler 会增加一些编译开销。优化的训练作业必须运行足够长的时间才能在训练作业开始时分摊并弥补这种增量编译开销。

此外，与任何模型训练过程一样，使用次优参数进行训练可能会增加训练时间。 SageMaker 例如，Training Compiler 可以通过更改训练作业的内存占用量来更改训练作业的特性。由于存在这些差异，您可能需要重新调整训练作业参数才能加快训练速度。可以在[经过测试的模型](training-compiler-support.md#training-compiler-tested-models)找到一个参考表，其中为具有不同实例类型和模型的训练作业指定了最适合的参数。

最后，训练脚本中的某些代码可能会增加额外开销，或者中断编译的计算图表和缓慢训练。如果使用的是自定义或未经测试的模型，请参阅[将 SageMaker 训练编译器与 PyTorch /XLA 配合使用的最佳实践](training-compiler-pytorch-models.md#training-compiler-pytorch-models-best-practices)中的说明。

**问：我能否在 SageMaker 训练编译器中始终使用更大的批次大小？**

在大多数（而非所有）情况下，批处理大小都会增加。Training Compiler 所 SageMaker 做的优化可能会改变训练作业的特征，例如内存占用。通常，Training Compiler 作业占用的内存比使用本机框架的未编译的训练作业要少，这允许在训练期间使用较大的批处理大小。较大的批处理大小以及对学习率的相应调整可以增加训练吞吐量并减少总训练时间。

但是，在某些情况下，T SageMaker raining Compiler 可能会根据其优化方案实际增加内存占用。编译器使用分析成本模型来预测任何计算密集型运算符的执行成本最低的执行时间表。该模型会找到提高内存使用率的最佳时间表。在这种情况下，您将无法增加批处理大小，但示例吞吐量仍会更高。

**问：Train SageMaker ing Compiler 能否与其他 SageMaker 训练功能配合使用，例如 SageMaker AI 分布式训练库和 SageMaker 调试器？**

SageMaker 训练编译器目前与 SageMaker AI 的分布式训练库不兼容。

SageMaker 训练编译器与 SageMaker 调试器兼容，但调试器可能会增加开销，从而降低计算性能。

**问： SageMaker 训练编译器是否支持自定义容器（自带容器）？**

SageMaker 训练编译器是通过 Dee AWS p Learning Containers 提供的，你可以扩展容器的子集以根据你的用例进行自定义。 SageMaker 训练编译 AWS DLCs 器支持从中扩展的容器。有关更多信息，请参阅[支持的框架](https://docs.aws.amazon.com/sagemaker/latest/dg/training-compiler-support.html#training-compiler-supported-frameworks)和[使用 SageMaker AI Python SDK 和扩展 SageMaker 人工智能框架 Deep Learning Containers](training-compiler-enable-tensorflow.md#training-compiler-enable-tensorflow-sdk-extend-container)。如果您需要更多支持，请通过 Amazon SageMaker AI [AWS 支持](https://console.aws.amazon.com/support/)或[AWS 开发者论坛与 Amazon A SageMaker I](https://forums.aws.amazon.com/forum.jspa?forumID=285) 团队联系。