模型训练 - Amazon SageMaker

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

模型训练

整个机器学习 (ML) 生命周期的训练阶段,包括从访问训练数据集到生成最终模型并选择性能最佳的模型进行部署。以下各节概述了可用的 SageMaker 培训功能和资源,并提供了每种功能和资源的深入技术信息。

SageMaker 培训的基本架构

如果您是首次使用 SageMaker ,并且想找到一种快速的机器学习解决方案来在您的数据集中训练模型,请考虑使用无代码或低代码解决方案,例如 SageMaker Studio Classic JumpStart 中的 SageMaker Canvas 或 SageMaker Autopilot。

要获得中级编程体验,可以考虑使用 SageMaker Studio Classic 笔记本SageMaker 笔记本实例。要开始使用,请按照《 SageMaker 入门指南》中的说明进行操作。训练模型对于使用机器学习框架创建自己的模型和训练脚本的使用案例,我们建议这样做。

SageMaker 作业的核心是机器学习工作负载的容器化以及管理计算资源的能力。Training 平台负责为机器学习 SageMaker 培训工作负载设置和管理基础架构相关的繁重工作。借 SageMaker 助 Training,您可以专注于开发、训练和微调模型。

以下架构图显示了如何代表 SageMaker 用户 SageMaker 管理机器学习训练任务和配置 Amazon EC2 实例。作为 SageMaker 用户,您可以自带训练数据集,将其保存到 Amazon S3。您可以从可用的 SageMaker 内置算法中选择机器学习模型训练,也可以使用使用常用机器学习框架构建的模型自带训练脚本。

用户如何提供数据、选择算 SageMaker 法和配置计算基础架构。

SageMaker 培训工作流程和功能的完整视图

机器学习训练的整个过程包括但不限于以下任务:将数据摄取至机器学习模型、在计算实例上训练模型,以及获取模型构件并输出。您需要评估训练前、训练期间和训练后的每个阶段,以确保模型经过良好训练,可达到预期的目标准确性。

以下流程图简要概述了您在机器学习生命周期的整个 SageMaker 训练阶段中的操作(用蓝色方框显示)和可用的培训功能(在浅蓝色方框中)。

机器学习训练工作流程中每个步骤的推荐步骤和功能的流程图。

以下各节将引导您完成上一个流程图中描述的每个训练阶段,以及机器学习培训的三个子 SageMaker 阶段提供的有用功能。

训练前

在训练之前,您需要考虑多种设置数据资源和访问权限的场景。请参阅下图以及每个训练前阶段的详细信息,以了解您需要做出哪些决定。

显示训练前的任务和相关 SageMaker功能的流程图

训练期间

在训练期间,您需要不断提高训练稳定性、训练速度和训练效率,同时扩展计算资源、优化成本,最重要的是提高模型性能。请继续阅读以获取有关训练阶段和相关 SageMaker 训练功能的更多信息。

显示训练期间的任务和相关 SageMaker功能的流程图
  • 设置基础设施:为使用案例选择正确的实例类型和基础设施管理工具。可以从小实例开始,然后根据工作负载纵向扩展。要在表格数据集中训练模型,请从 C4 或 C5 CPU 实例系列的最小实例开始。要训练计算机视觉或自然语言处理的大型模型,请从 P2、P3、g4dN 或 G5 GPU 实例系列的最小实例开始。您还可以在集群中混合不同的实例类型,或者使用提供的以下实例管理工具将实例保留在温池中 SageMaker。您还可以使用持久缓存来减少迭代训练作业的延迟和计费时间,而不是仅通过暖池减少延迟。要了解更多信息,请参阅以下主题。

    必须有足够的限额才能运行训练作业。如果在限额不足的实例上运行训练作业,则会收到 ResourceLimitExceeded 错误。要查看您账户中当前可用的限额,可使用服务限额控制台。要了解如何请求增加限额,请参阅支持的区域和限额。此外,要根据查找定价信息和可用实例类型 AWS 区域,请查看 Amazon SageMaker Pricing 页面中的表格。

  • 使用本地代码@@ 运行训练作业:您可以使用远程装饰器对本地代码进行注释,以便在 Amazon SageMaker Studio Classic、Amazon SageMaker 笔记本或本地集成开发环境中将代码作为 SageMaker 训练作业运行。有关更多信息,请参阅 将你的本地代码当作 SageMaker 训练作业来运行

  • 跟踪训练作业:使用 SageMaker 实验、 SageMaker 调试器或 Amazon CloudWatch 监控和跟踪您的训练作业。您可以观察模型在准确性和收敛性方面的性能,并使用 SageMaker实验对多个训练作业之间的指标进行比较分析。您可以使用 D SageMaker ebugger 的分析工具或 Amazon CloudWatch 来查看计算资源利用率。要了解更多信息,请参阅以下主题。

    此外,对于深度学习任务,可以使用 Amazon SageMaker Debugger 模型调试工具内置规则来识别模型收敛和权重更新过程中更复杂的问题。

  • 分布式训练:如果您的训练工作已进入稳定阶段,而不会因为培训基础设施配置错误或 out-of-memory问题而中断,那么您可能需要找到更多选项来扩展您的作业,并延长几天甚至数月的时间。当你准备好扩大规模时,可以考虑分布式训练。 SageMaker 为分布式计算提供了各种选项,从轻型 ML 工作负载到繁重的深度学习工作负载。

    对于涉及在非常大的数据集中训练超大型模型的深度学习任务,可以考虑使用SageMaker 分布式训练策略之一来扩大规模,实现数据并行性、模型并行性或两者的组合。您还可以使用SageMaker 训练编译器来编译和优化GPU实例上的模型图。这些 SageMaker 功能支持深度学习框架,例如 PyTorch TensorFlow、和 Hugging Face Transformers。

  • 模型超参数调整:使用自动模型调整调整模型超参数。 SageMaker SageMaker 提供网格搜索和贝叶斯搜索等超参数调整方法,启动具有提前停止功能的并行超参数调整作业,用于非改进的超参数调整作业。

  • 竞价型实例的检查点功能及成本节约:如果训练时间不是大问题,那么可以考虑使用托管的竞价型实例,优化模型训练成本。请注意,必须激活竞价型训练的检查点功能,才能继续从因竞价型实例替换而导致的间歇性作业暂停中恢复。您还可以使用检查点功能备份模型,以防训练作业意外终止。要了解更多信息,请参阅以下主题。

训练后

训练结束后,您将获得最终的模型构件,以用于模型部署和推理。训练后阶段还涉及其他操作,如下图所示。

显示训练后的任务和相关 SageMaker功能的流程图
  • 获取基线模型:获得模型构件后,您可以将其设置为基线模型。在将模型部署到生产环境之前,请考虑以下训练后操作和使用 SageMaker 功能。

  • 检查模型性能并检查是否存在偏差:使用 Amazon M CloudWatch etrics 和 SageMaker Clarify 查找训练后的偏差,以检测传入数据中的任何偏差,并根据基线进行建模。您需要定期或实时评估新的数据,并根据新数据评估模型预测。通过使用这些功能,您可以收到有关数据和模型中任何剧烈变化或异常,以及逐渐变化或漂移的警报。

  • 您还可以使用的 “增量训练” 功能,使用扩展的数据集加载和更新模型(或微调)。 SageMaker

  • 您可以将模型训练注册为流SageMaker水线中的一个步骤或由 SageMaker 提供的其他工作流程功能的一部分,以便协调整个 ML 生命周期。