

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

# SageMaker 智能筛选的工作原理
<a name="train-smart-sifting-how-it-works"></a>

 SageMaker 智能筛选的目标是在训练过程中筛选您的训练数据，并且只向模型提供信息更丰富的样本。在使用进行典型训练期间 PyTorch，数据会以迭代方式分批发送到训练循环和加速器设备（例如 GPUs 或 Trainium 芯片）。[PyTorch`DataLoader`](https://pytorch.org/docs/stable/data.html) SageMaker 智能筛选是在此数据加载阶段实现的，因此独立于训练管道中的任何上游数据预处理。 SageMaker 智能筛选使用您的模型及其用户指定的损失函数，在加载每个数据样本时对其进行评估性前向传递。返回*低损失*值的样本对模型学习的影响较小，因此被排除在训练之外，因为模型已经*很容易*就能以较高的置信度对这些样本做出正确的预测。同时，模型仍需要学习那些损耗相对较高的样本，因此这些样本会被保留下来用于训练。您可以为 SageMaker 智能筛选设置的关键输入是要排除的数据比例。例如，如果将比例设置为 25%，则损失分布（取自用户指定数量的先前样本）最低四分位数的样本将被排除在训练之外。高损耗样本被累积到改进后的批次数据中。改进后的批次数据被发送到训练循环（前向和后向传递），模型在改进后的批次数据上进行学习和训练。

下图概述了 SageMaker 智能筛选算法的设计方式。

![\[加载数据时 SageMaker 智能筛选在训练期间如何运行的架构图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/smartsifting-arch.png)


简而言之， SageMaker 智能筛选在训练期间会随着数据加载而运行。 SageMaker 智能筛选算法对批次进行损失计算，并在每次迭代向前和向后传递之前筛选出未改善的数据。然后，改进后的批次数据将用于前向和后向传递。

**注意**  
在 SageMaker AI 上智能筛选数据可使用额外的正向传球来分析和筛选训练数据。反过来，由于从训练作业中排除影响力较小的数据，因此后向传递的次数也减少了。因此，使用智能筛选时，后向通过时间长或成本高的模型能获得最大的效率提升。同时，如果您的模型前向传递的时间比后向传递的时间长，开销可能会增加总的训练时间。要测量每次传递所花费的时间，您可以运行试点训练作业并收集记录进程时间的日志。还可以考虑使用提供性能分析工具和用户界面应用程序的 P SageMaker rofiler。要了解更多信息，请参阅[Amazon P SageMaker rofiler](train-use-sagemaker-profiler.md)。

SageMaker 智能筛选适用于具有经典分布式数据并行性的 PyTorch基于训练作业，它可以在每个 GPU 工作器上生成模型副本并执行。`AllReduce`它可与 PyTorch DDP 和 SageMaker AI 分布式数据并行库配合使用。