分析数据加载器 - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

分析数据加载器

在 中PyTorch,数据加载程序迭代器(如 SingleProcessingDataLoaderIterMultiProcessingDataLoaderIter)在每次对数据集进行迭代开始时启动。在初始化阶段, 会根据配置的工作线程数PyTorch打开工作线程进程,建立数据队列以提取数据和pin_memory线程。

要使用PyTorch数据加载器分析分析工具,请导入以下PT_dataloader_analysis类:

from smdebug.profiler.analysis.utils.pytorch_dataloader_analysis import PT_dataloader_analysis

使用 Pandas 数据解析工具访问分析数据 部分中将分析数据作为 Pandas 帧数据对象传递:

pt_analysis = PT_dataloader_analysis(pf)

以下函数可用于 pt_analysis 对象:

SMDebug S3SystemMetricsReader 类从为 s3_trial_path 参数指定的 S3 存储桶读取系统指标。

  • pt_analysis.analyze_dataloaderIter_initialization()

    分析输出这些初始化的中值和最大持续时间。如果存在异常值(即持续时间大于 2 * 中间值),则 函数将打印这些持续时间的开始和结束时间。这些可用于在这些时间间隔内检查系统指标。

    以下列表显示了此类方法提供的分析:

    • 初始化了哪种类型的数据加载程序迭代器。

    • 每个迭代器的工作线程数。

    • 检查迭代器是否已使用或不使用 pin_memory 进行初始化。

    • 迭代器在训练期间初始化的次数。

  • pt_analysis.analyze_dataloaderWorkers()

    以下列表显示了此类方法提供的分析:

    • 在整个训练期间展开的工作线程进程数。

    • 工作线程进程的中时长和最长持续时间。

    • 作为异常值的 工作线程进程的开始和结束时间。

  • pt_analysis.analyze_dataloader_getnext()

    以下列表显示了此类方法提供的分析:

    • 训练期间进行的GetNext调用数。

    • 呼叫的中值和最大持续时间(以微秒为单位GetNext)。

    • 异常值GetNext呼叫持续时间的开始时间、结束时间、持续时间和工作线程 ID。

  • pt_analysis.analyze_batchtime(start_timestamp, end_timestamp, select_events=[".*"], select_dimensions=[".*"])

    调试程序 收集所有GetNext调用的开始时间和结束时间。您可以查找训练脚本在一批数据上花费的时间。在指定时间窗口内,您可以识别未直接参与训练的调用。这些调用可能来自以下操作:计算精度,出于调试或日志记录目的增加损失,以及打印调试信息。像这样的操作可能计算密集型或耗时。我们可以通过关联 Python 分析器、系统指标和框架指标来识别此类操作。

    以下列表显示了此类方法提供的分析:

    • BatchTime_in_seconds通过查找当前调用和后续GetNext调用的开始时间之间的差值,分析在每个数据批处理 上花费的时间。

    • 在 中查找异常值BatchTime_in_seconds,并找出这些异常值的开始时间和结束时间。

    • 在这些BatchTime_in_seconds时间戳期间获取系统和框架指标。这指示了耗费时间的位置。

  • pt_analysis.plot_the_window()

    在开始时间戳和结束时间戳之间绘制时间线图。