本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
合并多个配置文件跟踪文件的时间轴
SMDebug 客户端库提供了用于分析的分析工具和可视化工具,以便合并 Debugger 收集的系统指标、框架指标和 Python 分析数据的时间轴。
提示
在继续操作之前,您需要设置一个将在本页示例中使用的 TrainingJob 对象。有关设置 TrainingJob 对象的更多信息,请参阅访问分析数据。
MergedTimeline
类提供了工具,用于在单个时间轴中集成和关联不同的分析信息。Debugger 从训练作业的不同阶段捕获分析数据和注释之后,跟踪事件的 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
键来向右移动。
使用 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
),其中包含系统和框架分析跟踪文件。你可以profiler-output
使用 SageMaker估算器类方法或对象来找到。 TrainingJob 例如,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 文件。您可以浏览输出来绘制合并的时间轴。