Amazon SageMaker Training Compiler - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon SageMaker Training Compiler

使用 Amazon SageMaker Training Compiler 在 SageMaker 管理的可扩展 GPU 实例上更快地训练深度学习 (DL) 模型。

什么是 SageMaker Training Compiler?

最先进的深度学习 (DL) 模型由复杂的多层神经网络组成,具有数十亿个参数,训练可能需要数千个 GPU 小时。在训练基础设施上优化此类模型需要一系列广泛的深度学习和系统工程知识;即使对于有限的使用案例来说,这也是具有挑战性的。尽管编译器的开源实施可以优化深度学习训练过程,但它们可能在将深度学习框架与某些硬件(例如 GPU 实例)集成方面缺少灵活性。

SageMaker Training Compiler 是 SageMaker 的一项功能,可以实现这些难以实施的优化以减少 GPU 实例的训练时间。编译器通过更有效地使用 SageMaker 机器学习 (ML) GPU 实例来优化机器学习模型,以加快训练速度。SageMaker Training Compiler 可在 SageMaker 中免费使用,它有助于加快训练速度并减少总计费时间。

SageMaker Training Compiler 已集成到 Amazon 深度学习容器 (DLC) 中。通过使用支持 SageMaker Training Compiler 的 Amazon DLC,您可以在 GPU 实例上编译和优化训练作业,并且只需对代码进行最少量的更改。将您的深度学习模型引入 SageMaker 并使 SageMaker Training Compiler 能够加快您在 SageMaker 机器学习实例上的训练作业速度,以加速计算。

工作方式

SageMaker Training Compiler 将深度学习模型从高级语言表示形式转换为硬件优化的指令。具体来说,SageMaker Training Compiler 应用图表级优化、数据流级优化和后端优化来生成高效使用硬件资源的优化模型。因此,您可以比在不编译的情况下训练模型时更快地训练模型。

为您的训练作业激活 SageMaker Training Compiler 是一个两步过程:

  1. 引入您自己的深度学习脚本,如果需要,可以使用 SageMaker Training Compiler 进行编译和训练。要了解更多信息,请参阅自带深度学习模型

  2. 使用 SageMaker Python SDK 创建带编译器配置参数的 SageMaker 估算器对象。

    1. 通过将 compiler_config=TrainingCompilerConfig() 添加到 SageMaker 估算器类来启用 SageMaker Training Compiler。

    2. 调整超参数 (batch_sizelearning_rate) 以最大限度地发挥 SageMaker Training Compiler 提供的好处。

      通过 SageMaker Training Compiler 进行编译会更改模型的内存占用。最常见的是,这表现为内存利用率的降低,以及随之而来的 GPU 可容纳的最大批处理大小的增加。在某些情况下,编译器会智能地推进缓存,从而减小 GPU 上可容纳的最大批处理大小。请注意,如果要更改批处理大小,则必须适当地调整学习率。

      有关针对常用模型测试的 batch_size 的参考,请参阅经过测试的模型

      在调整批处理大小时,还必须适当地调整 learning_rate。有关调整学习率和批处理大小变化的最佳实践,请参阅SageMaker Training Compiler 最佳实践和注意事项

    3. 通过运行 estimator.fit() 类方法,SageMaker 编译您的模型并启动训练作业。

    有关如何启动训练作业的说明,请参阅启用 SageMaker Training Compiler

SageMaker Training Compiler 不会更改最终的训练模型,同时允许您通过更有效地使用 GPU 内存并在每次迭代中调整更大的批处理大小来加快训练作业。来自编译器加速的训练作业的最终训练模型与来自普通训练作业的最终训练模型相同。

提示

SageMaker Training Compiler 仅编译深度学习模型以便在 SageMaker 管理的支持的 GPU 实例上进行训练。要编译模型以进行推理并将其部署到云中和边缘的任意位置来运行,请使用 SageMaker Neo 编译器