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

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

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

SMDebug 客户端库提供分析分析和可视化工具,用于合并由 收集的系统指标、框架指标和 Python 分析数据的时间表调试程序。

提示

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

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

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

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

  • Tensorflow 分析器将事件保存在 *trace.json.gz 文件中。

提示

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

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

如下面的动画屏幕截图所示,在单个图表上放置和对齐从不同分析源捕获的跟踪事件可以提供在训练作业的不同阶段中发生的整个事件的概述。


                合并的时间轴的示例
提示

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

可以使用 MergedTimeline 模块中的以下 smdebug.profiler.analysis.utils.merge_timelines 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 (str) – 指定包含系统和框架分析跟踪文件的根文件夹 (/profiler-output)。您可以使用 profiler-output SageMaker 估算器类方法或 TrainingJob 对象查找 。例如, estimator.latest_job_profiler_artifacts_path()tj.profiler_s3_output_path

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

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

merge_timeline() 类方法传递以下参数来执行合并过程:

  • 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上的 上打开 Chrome 跟踪应用程序,然后打开 JSON 文件。您可以探索输出以绘制合并的时间轴。