合并不同性能分析跟踪文件的时间表 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

合并不同性能分析跟踪文件的时间表

SMDebug 客户端库提供性能分析分析和可视化工具,用于合并由调试器收集的系统度量、框架度量和 Python 分析数据的时间线。

提示

在继续操作之前,您需要设置一个 TrainingJob 对象,该对象将在本页中的整个示例中使用。有关设置训练作业对象的更多信息,请参阅访问监视和分析数据.

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

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

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

  • 张量流分析器将事件保存在*trace.json.gz文件。

提示

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

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

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


                合并时间线的示例
提示

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

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

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)

这些区域有:MergedTimelineAPI 操作传递以下参数:

  • path(str) — 指定根文件夹 (/profiler-output),其中包含系统和框架分析跟踪文件。您可以找到profiler-output使用 SageMaker 估计器类方法或训练作业对象。例如,estimator.latest_job_profiler_artifacts_path()tj.profiler_s3_output_path

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

  • output_directory(str) — 指定用于保存合并时间轴 JSON 文件的路径。默认值为指定的目录path参数。

这些区域有:merge_timeline()class 方法传递以下参数来执行合并过程:

  • start(int) — 指定开始时间(单位为微秒和 Unix 时间格式)或开始步骤以合并时间线。

  • end(int) — 指定结束时间(单位为微秒和 Unix 时间格式)或结束步骤以合并时间线。

  • unit(str) — 选择"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,然后打开 JSON 文件。您可以浏览输出以绘制合并的时间线。