本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
数据加载程序
在 PyTorch 中,数据加载器迭代器,例如SingleProcessingDataLoaderIter和MultiProcessingDataLoaderIter,在对数据集的每次迭代开始时启动。在初始化阶段,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对象:
smDebugS3SystemMetricsReader类从指定的 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()在开始时间戳和结束时间戳之间绘制时间轴图表。