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

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

配置调试器框架分析

要启用调试器框架分析,请配置framework_profile_params参数,当构造估计器时。调试器框架分析收集框架指标,例如初始化阶段的数据、数据加载器进程、深度学习框架和训练脚本的 Python 运算符、步骤内部和步骤之间的详细分析以及 CPProfile 或 Py仪选项。使用FrameworkProfile类中,您可以配置自定义框架分析选项。

注意

在开始使用调试器框架分析之前,请验证用于构建模型的框架是否受调试器支持进行框架分析。有关更多信息,请参阅支持的框架和算法

调试器将框架指标保存在默认 S3 存储桶中。默认 S3 存储桶 URI 的格式为s3://sagemaker-<region>-<12digit_account_id>/<training-job-name>/profiler-output/.

使用默认系统监视和框架分析启动培训 Job

以下示例代码是最简单的profiler_config参数设置启动默认系统监视和默认框架分析。这些区域有:FrameworkProfile类在培训作业启动时启动默认框架分析。调试器框架分析包括以下选项:详细的分析、数据加载器分析和 Python 分析。

from sagemaker.debugger import ProfilerConfig, FrameworkProfile profiler_config=ProfilerConfig( framework_profile_params=FrameworkProfile() )

有了这个profiler_config参数配置时,调试器将调用监视和分析的默认设置。调试器每 500 毫秒监视一次系统度量;使用详细分析选项分析第五步;使用数据加载器性能分析选项进行第七步;使用 Python 分析选项执行第九步、第十步和第十一步。

要查找可用的性能分析配置选项、默认参数设置以及配置这些选项的示例,请参阅使用默认系统监视和具有不同性能分析选项的自定义框架分析启动培训作业SageMaker 调试器 API — 框架配置文件中的Amazon SageMaker 开发工具包.

如果要更改系统监视间隔并启用默认框架分析,则可以指定system_monitor_interval_millis参数显式使用framework_profile_params参数。例如,要监视每 1000 毫秒并启用默认框架分析,请使用以下示例代码。

from sagemaker.debugger import ProfilerConfig, FrameworkProfile profiler_config=ProfilerConfig( system_monitor_interval_millis=1000, framework_profile_params=FrameworkProfile() )

有关使用者的更多信息FrameworkProfile类,请参阅SageMaker 调试器 API — 框架配置文件中的Amazon SageMaker 开发工具包.

使用默认系统监视和针对目标步骤或目标时间范围的自定义框架分析启动培训 Job 业

如果要指定目标步骤或目标时间间隔来分析训练作业,则需要为FrameworkProfile类 以下代码示例说明了如何指定要进行性能分析的目标范围以及系统监控。

  • 对于目标步骤范围

    使用以下示例配置,调试器每 500 毫秒监视整个训练作业(默认监视),并分析从步骤 5 到步骤 15(对于 10 个步骤)的目标步骤范围。

    from sagemaker.debugger import ProfilerConfig, FrameworkProfile profiler_config=ProfilerConfig( framework_profile_params=FrameworkProfile(start_step=5, num_steps=10) )

    使用以下示例配置,调试器每 1000 毫秒监视整个训练作业,并分析从步骤 5 到步骤 15(对于 10 个步骤)的目标步骤范围。

    from sagemaker.debugger import ProfilerConfig, FrameworkProfile profiler_config=ProfilerConfig( system_monitor_interval_millis=1000, framework_profile_params=FrameworkProfile(start_step=5, num_steps=10) )
  • 对于目标时间范围

    使用以下示例配置,调试器每 500 毫秒监视整个训练作业(默认监视),并分析从当前 Unix 时间 600 秒的目标时间范围。

    import time from sagemaker.debugger import ProfilerConfig, FrameworkProfile profiler_config=ProfilerConfig( framework_profile_params=FrameworkProfile(start_unix_time=int(time.time()), duration=600) )

    使用以下示例配置,调试器每 1000 毫秒监视整个训练作业,并分析从当前 Unix 时间 600 秒的目标时间范围。

    import time from sagemaker.debugger import ProfilerConfig, FrameworkProfile profiler_config=ProfilerConfig( system_monitor_interval_millis=1000, framework_profile_params=FrameworkProfile(start_unix_time=int(time.time()), duration=600) )

    在目标步长或时间范围内,对所有性能分析选项执行框架分析。

    要查找有关可用性能分析选项的更多信息,请参阅SageMaker 调试器 API — 框架配置文件中的Amazon SageMaker Python 开发工具包.

    下一节将为您演示如何为可用的性能分析选项编写脚本。

使用默认系统监视和具有不同性能分析选项的自定义框架分析启动培训作业

您可以使用以下性能分析配置类来管理框架分析选项:

  • 详细配置文件配置— 指定目标步长或时间范围,以使用本机框架分析器(TensorFlow 分析器和 PyTorch 分析器)分析框架操作。例如,如果使用 TensorFlow,则调试器挂接使 TensorFlow 分析器能够收集特定于 TensorFlow 的框架度量。通过详细的分析,您可以在培训作业的前步骤(第一步之前)、步骤内和步骤之间分析所有框架运算符。

    注意

    详细的分析可能会显著增加 GPU 内存消耗。我们建议您不要为多个步骤启用详细的分析。

  • 数据服务器配置文件配置— 指定用于分析深度学习框架数据加载器进程的目标步长或时间范围。调试器收集框架的每个数据加载器事件。

    注意

    在从数据加载器收集信息时,数据加载器分析可能会降低训练性能。我们不建议启用数据加载器分析功能超过几个步骤。

    调试器已预配置为仅为Amazon深度学习容器。调试器无法分析来自任何其他自定义或外部训练容器的数据加载器进程。

  • Python 配置文件配置— 指定用于分析 Python 函数的目标步长或时间范围。您还可以在两个 Python 分析器之间进行选择:配置文件和 Py仪器。

    • 配置文件— 标准 Python 分析器。cProfile 会收集训练期间调用的每个 Python 运算符的信息。使用 cProfile,调试器可以保存每个函数调用的累积时间和注释,从而提供有关 Python 函数的完整详细信息。例如,在深度学习中,最常用的函数可能是卷积过滤器和向后传递运算符,而 CPProfile 对每一个函数进行分析。对于 “配置文件” 选项,您可以进一步选择一个计时器选项:总时间、CPU 时间和关闭 CPU 时间。虽然您可以分析 CPU 时间内在处理器(CPU 和 GPU)上执行的每个函数调用,但也可以使用关闭 CPU 时间选项识别 I/O 或网络瓶颈。默认值为总时间,调试器会分析 CPU 和关闭 CPU 时间。使用 cProfile,您可以在分析配置文件数据时向下钻取到每个函数。

    • 皮洛特— Py仪是基于采样的低开销 Python 分析器。使用 Py仪选项,调试器每毫秒采样一次性分析事件。由于 Py仪器测量的时钟时间而不是CPU 时间,因此 Py仪选项可以是一个更好的选择,用于减少分析噪声(过滤出累积快速的不相关函数调用)和捕获实际计算密集型运算符(累积缓慢)训练您的模型。借助 Py仪,您可以看到函数调用树,并更好地理解缓慢的结构和根本原因。

    注意

    启用 Python 性能分析可能会减慢整个训练时间。cProfile 会在每次调用时分析最常用的 Python 运算符,因此分析的处理时间会随调用数而增加。对于 Py仪来说,由于其采样机制,累积分析时间随时间而增加。

以下示例配置显示了在使用具有指定值的不同分析选项时的完整结构。

import time from sagemaker.debugger import (ProfilerConfig, FrameworkProfile, DetailedProfilingConfig, DataloaderProfilingConfig, PythonProfilingConfig, PythonProfiler, cProfileTimer) profiler_config=ProfilerConfig( system_monitor_interval_millis=500, framework_profile_params=FrameworkProfile( detailed_profiling_config=DetailedProfilingConfig( start_step=5, num_steps=1 ), dataloader_profiling_config=DataloaderProfilingConfig( start_step=7, num_steps=1 ), python_profiling_config=PythonProfilingConfig( start_step=9, num_steps=1, python_profiler=PythonProfiler.CPROFILE, cprofile_timer=cProfileTimer.TOTAL_TIME ) ) )

有关可用性能分析选项的更多信息,请参阅详细配置文件配置数据服务器配置文件配置, 和Python 配置文件配置中的Amazon SageMaker Python 开发工具包.