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

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

分析数据加载程序

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

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

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

将检索到的分析数据作为 Pandas 帧数据对象传递到使用熊猫数据解析工具访问性能分析数据部分:

pt_analysis = PT_dataloader_analysis(pf)

以下函数适用于pt_analysis对象:

小调试S3SystemMetricsReader类将从指定的 S3 存储桶读取系统指标到s3_trial_path参数。

  • 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()

    绘制开始时间戳和结束时间戳之间的时间轴图表。