合并多个配置文件跟踪文件的时间轴 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

合并多个配置文件跟踪文件的时间轴

SMDebug 客户端库提供了用于分析的分析工具和可视化工具,以便合并 Debugger 收集的系统指标、框架指标和 Python 分析数据的时间轴。

提示

在继续之前,您需要设置一个 TrainingJob 对象,该对象将在本页面的所有示例中使用。有关设置 TrainingJob 对象的更多信息,请参阅访问分析数据

MergedTimeline 类提供了工具,用于在单个时间轴中集成和关联不同的分析信息。Debugger 从训练作业的不同阶段捕获分析数据和注释之后,跟踪事件的 JSON 文件默认保存在 tracefolder 目录中。

  • 对于 Python 层中的注释,跟踪文件保存在 *pythontimeline.json

  • 对于 TensorFlow C++ 层中的注释,跟踪文件保存在 *model_timeline.json

  • TensorFlow 探查器将事件保存在 *trace.json.gz 文件中。

提示

如果要列出所有 JSON 跟踪文件,请使用以下 Amazon CLI 命令:

! aws s3 ls {tj.profiler_s3_output_path} --recursive | grep '\.json$'

如以下屏幕截图动画所示,将从不同分析源捕获的跟踪事件放在一个图中并对齐,可以概要了解在训练作业的不同阶段发生的整个事件。


                合并时间轴的示例
提示

要使用键盘在跟踪应用程序上与合并的时间轴进行交互,请使用 W 键来放大,使用 A 键来向左移动,使用 S 键来缩小,使用 D 键来向右移动。

使用 smdebug.profiler.analysis.utils.merge_timelines 模块中的以下 MergedTimeline API 操作和类方法,可以将多个事件跟踪 JSON 文件合并为一个跟踪事件 JSON 文件。

from smdebug.profiler.analysis.utils.merge_timelines import MergedTimeline combined_timeline = MergedTimeline(path, file_suffix_filter, output_directory) combined_timeline.merge_timeline(start, end, unit)

MergedTimeline API 操作传递以下参数:

  • path(字符串)– 指定根文件夹 (/profiler-output),其中包含系统和框架分析跟踪文件。您可以使用 SageMaker 估算器类方法或 TrainingJob 对象来查找 profiler-output。例如,estimator.latest_job_profiler_artifacts_path()tj.profiler_s3_output_path

  • file_suffix_filter(列表)– 指定要合并时间轴的文件后缀筛选条件列表。可用的后缀筛选条件为 ["model_timeline.json", "pythontimeline.json", "trace.json.gz"].,如果未手动指定此参数,则默认情况下将合并所有跟踪文件。

  • output_directory(字符串)– 指定保存合并的时间轴 JSON 文件的路径。默认值是为 path 参数指定的目录。

merge_timeline() 类方法传递以下参数用于执行合并进程:

  • start(整数)– 指定合并时间轴的开始时间(以微秒为单位,采用 Unix 时间格式)或开始步骤。

  • end(整数)– 指定合并时间轴的结束时间(以微秒为单位,采用 Unix 时间格式)或结束步骤。

  • unit(字符串)– 在 "time""step" 之间选择。默认为 "time"

使用以下示例代码,执行 merge_timeline() 方法并下载合并的 JSON 文件。

  • 使用 "time" 单位选项合并时间轴。以下示例代码合并了在 Unix 开始时间(绝对零 Unix 时间)与当前 Unix 时间之间的所有可用跟踪文件,这意味着您可以合并整个训练期间的时间轴。

    import time from smdebug.profiler.analysis.utils.merge_timelines import MergedTimeline from smdebug.profiler.profiler_constants import CONVERT_TO_MICROSECS combined_timeline = MergedTimeline(tj.profiler_s3_output_path, output_directory="./") combined_timeline.merge_timeline(0, int(time.time() * CONVERT_TO_MICROSECS))
  • 使用 "step" 单位选项合并时间轴。以下示例代码合并了步骤 3 和步骤 9 之间的所有可用时间轴。

    from smdebug.profiler.analysis.utils.merge_timelines import MergedTimeline combined_timeline = MergedTimeline(tj.profiler_s3_output_path, output_directory="./") combined_timeline.merge_timeline(3, 9, unit="step")

在 Chrome 浏览器上,通过 chrome://tracing 打开 Chrome 跟踪应用程序,然后打开 JSON 文件。您可以浏览输出来绘制合并的时间轴。