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

训练机器学习模型

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

SageMaker 中最简单的训练工作流

如果您是第一次使用 SageMaker,希望找到一种快速的机器学习解决方案在数据集中训练模型,那么可以考虑使用无代码或低代码的解决方案,例如 SageMaker CanvasSageMaker Studio 中的 SageMaker JumpStartSageMaker Autopilot

如果希望获得中等程度编码体验,可以考虑使用 SageMaker Studio 笔记本SageMaker 笔记本实例。要开始使用,请按照 SageMaker 入门指南的步骤 4:训练模型中的说明操作。对于使用机器学习框架创建自己的模型和训练脚本的使用案例,我们建议这样做。

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

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

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

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


                在训练之前,您必须准备数据、选择算法或框架、管理数据存储以及设置对训练数据的访问权限。或者,可以使用增强清单文件引入数据,并分析是否存在偏见。在训练期间,必须设置基础设施并评估模型。您可以选择设置分布式训练来运行并行作业,并使用 SageMaker Experiments 管理机器学习试验。完成模型评估后,可以使用 SageMaker 自动模型调优功能来优化模型性能。对于深度学习作业,您可以考虑使用 Amazon SageMaker Debugger 和 SageMaker Training Compiler 来优化作业。训练结束后,必须先获取基线模型。接下来,可以分析模型发出的指标,并使用 CloudWatch Metrics 设置警报。获得模型预测后,您还可以使用 Amazon SageMaker Clarify 分析模型和数据的可解释性以及是否存在偏见。

以下各部分将引导您了解上个流程图中显示的每个训练阶段,以及 SageMaker 在机器学习训练的三个子阶段中提供的有用的功能。

训练前

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


                    显示训练前的任务及相关 SageMaker 功能的流程图
  • 准备数据:在训练之前,必须在数据准备阶段完成数据清理和特征工程。SageMaker 有多种标注和特征工程工具可以帮助您。有关更多信息,请参阅标注数据准备和分析数据集、处理数据以及创建、存储和共享特征

  • 选择算法或框架:根据您所需的自定义程度,有多种不同的算法和框架可供选择。

  • 管理数据存储:了解数据存储(如 Amazon S3、Amazon EFS 或 Amazon FSx)与 Amazon EC2 计算实例中所运行的训练容器之间的映射。SageMaker 可帮助映射训练容器中的存储路径和本地路径。您也可以手动指定。映射完成后,可以考虑使用以下数据传输模式中的一种:File、Pipe 和 FastFile 模式。要了解 SageMaker 是如何映射存储路径的,请参阅训练存储文件夹

  • 设置训练数据访问权限:使用 Amazon SageMaker 域名、域用户配置文件、IAM、Amazon VPC 和 Amazon KMS,可满足大多数安全敏感型组织的要求。

  • 流式传输输入数据:SageMaker 提供了三种数据输入模式:FilePipeFastFile。默认输入模式为 File 模式,此模式在训练作业初始化期间加载整个数据集。要了解将数据从数据存储流式传输到训练容器的一般最佳实践,请参阅访问训练数据

    Pipe 模式下,您也可以考虑使用增强清单文件,直接从 Amazon Simple Storage Service (Amazon S3) 流式传输数据并训练模型。使用 Pipe 模式可以减少磁盘空间,因为 Amazon Elastic Block Store 只需要存储最终模型构件,而无需存储完整的训练数据集。有关更多信息,请参阅通过增强清单文件将数据集元数据提供给训练作业

  • 分析数据是否存在偏见:在训练之前,您可以分析数据集和模型中是否存在针对不受欢迎群体的偏见,这样您可以使用 SageMaker Clarify 检查模型是否学习了无偏见的数据集。

  • 选择要使用的 SageMaker SDK:可通过两种方法在 SageMaker 中启动训练作业:使用高级 SageMaker Python SDK,或使用适用于 SDK for Python (Boto3) 的低级 SageMaker API 或 Amazon CLI。SageMaker Python SDK 抽象了低级 SageMaker API,以提供便捷的工具。如前面的SageMaker 中最简单的训练工作流中所述,您还可以使用 SageMaker CanvasSageMaker Studio 中的 SageMaker JumpStartSageMaker Autopilot,寻求无代码或最少代码选项。

训练期间

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


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

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

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

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

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

  • 分布式训练:如果训练作业进入稳定阶段,不会因训练基础设施配置错误或内存不足问题而中断,您可能希望找到更多选项以扩展作业,并在数天甚至数月的较长时间内运行作业。如果您已准备好纵向扩展,可考虑分布式训练。SageMaker 为分布式计算提供了各种选项,从较轻的机器学习工作负载到繁重的深度学习工作负载。

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

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

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

训练后

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


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

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

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

  • 您可以将模型训练注册为 SageMaker 管道的一个步骤,或 SageMaker 提供的其他工作流功能的一部分,以便编排整个机器学习生命周期。