SageMaker 调试器分析报告 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

SageMaker 调试器分析报告

对于任何 SageMaker 培训作业,调试器ProfilerReport规则将调用所有监视和分析规则并将规则分析汇总成一份综合报告。遵循本指南,使用Amazon SageMaker 开发工具包或 S3 控制台,并了解您可以从性能分析结果中解释哪些内容。

下载调试器分析报告

在训练作业正在运行或作业完成后使用Amazon SageMaker 开发工具包和Amazon Command Line Interface(CLI).

提示

您还可以通过 SageMaker Studio 调试器洞察仪表板单击一下即可下载报告,无需额外的脚本。要了解如何从 Studio 下载报告,请参阅打开 Amazon SageMaker 调试器见解控制面板.

Download using SageMaker Python SDK and Amazon CLI
  1. 检查当前作业的默认 S3 输出基础 URI。

    estimator.output_path
  2. 检查当前作业名称。

    estimator.latest_training_job.job_name
  3. 调试器分析报告存储在<default-s3-output-base-uri>/<training-job-name>/rule-output. 按如下所示配置规则输出路径:

    rule_output_path = estimator.output_path + estimator.latest_training_job.job_name + "/rule-output"
  4. 要检查报告是否已生成,请递归列出目录和文件在rule_output_path,使用aws s3 ls使用--recursive选项。

    ! aws s3 ls {rule_output_path} --recursive

    这应该返回一个自动生成的文件夹下的文件的完整列表,该文件夹名为ProfilerReport-1234567890. 文件夹名称是字符串的组合:ProfilerReport和启动 ProfilerReport 规则时基于 Unix 时间戳的唯一 10 位标签。

    
                                        规则输出示例

    这些区域有:profiler-report.html是调试器自动生成的分析报告。其余文件是存储在 JSON 中的内置规则分析组件和用于将它们聚合到报表中的 Jupyter 笔记本。

  5. 使用递归地下载文件aws s3 cp. 以下命令将所有规则输出文件保存到ProfilerReport-1234567890文件夹中的文件夹。

    ! aws s3 cp {rule_output_path} ./ --recursive
    提示

    如果使用 Jupyter 笔记本服务器,请运行!pwd来检查当前的工作目录。

  6. /ProfilerReport-1234567890/profiler-output目录, 打开profiler-report.html. 如果使用 JupyterLab,请选择信任 HTML查看自动生成的调试器分析报告。

    
                                        规则输出示例
  7. 打开profiler-report.ipynb文件来探索报告的生成方式。您还可以使用 Jupyter 笔记本文件自定义和扩展性能分析报告。

Download using Amazon S3 Console
  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 搜索基本 S3 存储桶。例如,如果您没有指定任何基本作业名称,则基本 S3 存储桶名称应采用以下格式:sagemaker-<region>-111122223333. 查找基本 S3 存储桶通过按名称查找存储桶字段中返回的子位置类型。

    
                                        规则输出 S3 存储桶 URI 的示例
  3. 在基础 S3 存储桶中,通过将任务名称前缀指定到按前缀查找对象输入字段。选择训练任务名称。

    
                                        规则输出 S3 存储桶 URI 的示例
  4. 在培训作业的 S3 存储桶中,调试器收集的训练数据必须有三个子文件夹:调试-输出/概况介绍器-产出/, 和规则产出/. 选择规则产出/.

    
                                        规则输出 S3 存储桶 URI 的示例
  5. 规则产出/文件夹中,选择概要介绍报告,然后选择概况介绍器-产出/folder。这些区域有:概况介绍器-产出/文件夹包含profiler-report.html(以 html 格式显示的自动生成的分析报告)、分析器报告 .ipynb(包含用于生成报告的脚本的 Jupyter 笔记本)和概况报告/文件夹(包含用作报表组件的规则分析 JSON 文件)。

  6. 选择profiler-report.html文件中,选择操作, 和下载.

    
                                        规则输出 S3 存储桶 URI 的示例
  7. 打开下载的profiler-report.html文件在 Web 浏览器中查看。

注意

如果您在未配置调试器特定参数的情况下启动培训作业,调试器将仅根据系统监视规则生成报告,因为调试器参数未配置为保存框架度量。要启用框架衡量指标分析并接收扩展的调试器分析报告,请配置profiler_config参数构建或更新 SageMaker 估计值时。

要了解如何配置profiler_config参数,请参阅配置调试器框架分析.

要更新当前培训作业并启用框架衡量指标分析,请参阅更新调试器框架分析配置.

调试器性能分析报告演练

本节将逐节指导您完成调试程序分析报告部分。分析报告是根据用于监视和分析的内置规则生成的。报告仅显示发现问题的规则的结果图。

训练 Job 摘要

在报告的开头,调试器提供了培训工作的摘要。在本节中,您可以概述不同训练阶段的时间持续时间和时间戳。


                        调试器分析报告示例

概括表包含以下信息:

  • start_time— 培训作业开始的确切时间。

  • end_time— 培训作业完成的确切时间。

  • 作业持续时间以秒为单位— 总训练时间从start_time添加到end_time.

  • 训练循环启动— 第一个时代的第一步开始的确切时间。

  • 训练循环结束— 最后一个时代的最后一步完成的确切时间。

  • 训练循环持续时间在秒— 训练循环开始时间与训练循环结束时间之间的总时间。

  • 初始化在秒— 初始化培训作业所花费的时间。初始化阶段涵盖start_time添加到训练循环启动时间。初始化时间用于编译训练脚本、启动训练脚本、创建和初始化模型、启动 EC2 实例以及下载训练数据。

  • 最终化 _ 秒— 完成培训工作所花费的时间,例如完成模型培训、更新模型工件以及关闭 EC2 实例。最后定稿阶段涵盖从训练循环结束时间到end_time.

  • 初始化 (%)— 花费的时间百分比初始化超过总作业持续时间以秒为单位.

  • 训练循环 (%)— 花费的时间百分比训练循环超过总作业持续时间以秒为单位.

  • 定稿 (%)— 花费的时间百分比定稿超过总作业持续时间以秒为单位.

系统使用情况统计

在本节中,您可以看到系统利用率统计信息的概述。


                        调试器分析报告示例

调试程序分析报告包含以下信息:

  • 节点— 列出节点的名称。如果在多节点(多个 EC2 实例)上使用分布式培训,则节点名称的格式为algo-n.

  • 指标— 调试器收集的系统指标:CPU、GPU、CPU 内存、GPU 内存、I/O 和网络指标。

  • 单位— 系统指标的单位。

  • max— 每个系统度量的最大值。

  • p99— 每个系统利用率的第 99 个百分位数。

  • p95— 每个系统利用率的第 95 个百分位数。

  • p50— 每个系统利用率的第 50 个百分位数(中位数)。

  • min— 每个系统度量的最小值。

框架指标摘要

在本节中,以下饼图显示了 CPU 和 GPU 上的框架操作的细分。


                        调试器分析报告示例

每个饼图都会分析收集到的框架指标的各个方面,如下所示:

  • 培训方式/评价评估阶段与其他相比比率— 显示不同训练阶段所花费的时间持续时间之间的比率。

  • 正向和后向传递之间的比率— 显示训练循环中向前和向后传递所花费的时间持续时间之间的比率。

  • CPU/GPU 操作员之间的比例— 显示在 CPU 或 GPU 上运行的运算符(如卷积运算符)上所花费的时间之间的比率。

  • 框架中记录的常规指标— 显示在主要框架指标(如数据加载、向前和向后传递)上花费的时间之间的比率。

概述:CPU 操作员

本节提供了 CPU 操作员的详细信息。该表显示了在最常用的 CPU 操作员上花费的时间和绝对累计时间的百分比。


                            调试器分析报告示例

概述:GPU 操作符

本节提供了 GPU 运算符的详细信息。该表显示了在最常用的 GPU 运算符上花费的时间和绝对累计时间的百分比。


                            调试器分析报告示例

Rule loop

在本节中,调试器汇总了所有规则评估结果、分析、规则描述和建议。


                        调试器分析报告示例

分析训练循环 — 步骤持续时间

在本节中,您可以在每个节点的每个 GPU 内核上找到步长持续时间的详细统计信息。调试器计算步长持续时间的平均值、最大值、p99、p95、p50 和最小值,并计算步长异常值。下面的直方图显示了在不同工作节点和 GPU 上捕获的步骤持续时间。您可以通过选择右侧的图例来启用或禁用每个工作线程的直方图。您可以检查是否存在导致步长持续时间异常值的特定 GPU。


                        调试器分析报告示例

GPU 使用率分析

本节显示了基于低 GPU 利用率规则的 GPU 核心利用率的详细统计信息。它还总结了 GPU 利用率统计信息,平均值、p95 和 p5,以确定培训工作是否未充分利用 GPU。

Batch 大小

本节显示了总 CPU 利用率、单个 GPU 利用率和 GPU 内存占用空间的详细统计信息。BatchSize 规则确定您是否需要更改批处理大小以更好地利用 GPU。您可以检查批次大小是否过小,导致利用不足或过大,导致过度利用和内存不足问题。在图中,框显示从中位数 (p50) 开始的 p25 和 p75 百分位数范围(分别用深紫色和亮黄色填充),误差条显示上限的第 5 个百分位数和第 95 个百分位数。


                        调试器分析报告示例

CPU 瓶颈

在本节中,您可以深入了解 CPU 瓶颈规则从培训作业中检测到的 CPU 瓶颈。该规则检查 CPU 利用率是否高于cpu_threshold(默认情况下 90%),并且如果 GPU 利用率低于gpu_threshold(默认情况下为 10%)。


                        调试器分析报告示例

饼图显示以下信息:

  • CPU 瓶颈导致的 GPU 使用率低— 显示 GPU 利用率高于或低于阈值的数据点与与 CPU 瓶颈条件匹配的数据点之间的比率。

  • 培训方式/评价评估阶段与其他相比比率— 显示不同训练阶段所花费的时间持续时间之间的比率。

  • 正向和后向传递之间的比率— 显示训练循环中向前和向后传递所花费的时间持续时间之间的比率。

  • CPU/GPU 运算符之间的比例— 显示 Python 运算符在 GPU 和 CPU 上花费的时间持续时间之间的比率,例如数据加载器进程以及前向和向后传运算符。

  • 框架中记录的常规指标— 显示主要框架指标以及在指标上花费的时间持续时间之间的比率。

I/O 瓶颈

在本节中,您可以找到 I/O 瓶颈的摘要。该规则评估 I/O 等待时间和 GPU 利用率,并监视 I/O 请求所花费的时间是否超过总训练时间的阈值百分比。它可能表明 GPU 正在等待数据从存储到达的 I/O 瓶颈。

在多 GPU 训练中进行负载平衡

I在本节中,您可以确定跨 GPU 的工作负载平衡问题。


                        调试器分析报告示例

GPU 存储器分析

在本节中,您可以分析 GPU 内存增加规则收集的 GPU 内存利用率。在图中,框显示从中位数 (p50) 开始的 p25 和 p75 百分位数范围(分别用深紫色和亮黄色填充),误差条显示上限的第 5 个百分位数和第 95 个百分位数。


                        调试器分析报告示例