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

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

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

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

提示

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

这些区域有:MergedTimeline类提供了在单个时间轴中集成和关联不同的分析信息的工具。调试器从训练作业的不同阶段捕获分析数据和注释之后,默认情况下保存跟踪事件的 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向右移动的关键。

可以使用以下方法将多个事件跟踪 JSON 文件合并到一个跟踪事件 JSON 文件中:MergedTimeline来自的 API 操作和类方法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 估算器类方法或 TrainEngine Job 对象。例如,estimator.latest_job_profiler_artifacts_path()tj.profiler_s3_output_path

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

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

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

  • 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 文件。您可以浏览输出来绘制合并的时间轴。