访问 Python 分析统计数据 - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

访问 Python 分析统计数据

Python 分析在训练脚本和SageMaker深度学习框架中提供与 Python 函数和运算符相关的框架指标。

用于 Python 分析的训练模式和阶段

为了在训练期间分析特定时间间隔以便为这些时间间隔中的每个间隔分区统计数据, 调试程序 提供了设置模式和阶段的工具。

对于训练模式,请使用以下PythonProfileModes类:

from smdebug.profiler.python_profile_utils import PythonProfileModes

此类提供以下选项:

  • PythonProfileModes.TRAIN – 如果要在训练阶段分析目标步骤,请使用 。此模式选项仅适用于 TensorFlow。

  • PythonProfileModes.EVAL – 如果要在评估阶段分析目标步骤,请使用 。此模式选项仅适用于 TensorFlow。

  • PythonProfileModes.PREDICT – 如果要在预测阶段分析目标步骤,请使用 。此模式选项仅适用于 TensorFlow。

  • PythonProfileModes.GLOBAL – 如果要在包括前三个阶段的全局阶段中分析目标步骤,请使用 。此模式选项仅适用于 PyTorch。

  • PythonProfileModes.PRE_STEP_ZERO – 如果要在第一个纪元的第一个训练步骤开始之前在初始化阶段分析目标步骤,请使用 。此阶段包括初始作业提交、将训练脚本上传到 EC2 实例、准备 EC2 实例以及下载输入数据。此模式选项可用于 TensorFlow 和 PyTorch。

  • PythonProfileModes.POST_HOOK_CLOSE – 如果您希望在训练作业完成并关闭调试程序挂钩后在最终确定阶段中分析目标步骤,请使用 。此阶段包括在训练作业最终确定和完成时分析数据。此模式选项可用于 TensorFlow 和 PyTorch。

对于训练阶段,请使用以下StepPhase类:

from smdebug.profiler.analysis.utils.python_profile_analysis_utils import StepPhase

此类提供以下选项:

  • StepPhase.START – 使用 指定初始化阶段的起点。

  • StepPhase.STEP_START – 使用 指定训练阶段的起始步骤。

  • StepPhase.FORWARD_PASS_END – 使用 指定转发传递结束的步骤。此选项仅适用于 PyTorch。

  • StepPhase.STEP_END – 使用 指定训练阶段的结束步骤。此选项仅适用于 TensorFlow。

  • StepPhase.END – 使用 指定结束 (post-hook-close) 阶段的终点。如果未关闭回调挂钩,则不会进行最终确定阶段分析。

Python 分析分析工具

调试程序 支持使用两种分析工具进行 Python 分析:

  • cProfile – 标准 python 分析器。cProfile 收集启用分析时调用的每个函数的 CPU 时间的框架指标。

  • Pyinstrument – 这是每毫秒一次的低开销 Python 分析器采样分析事件。

要了解有关 Python 分析选项和收集内容的更多信息,请参阅通过默认系统监控和不同分析选项的自定义框架分析启动训练作业

提供了 PythonProfileAnalysiscProfileAnalysisPyinstrumentAnalysis 类的以下方法以提取和分析 Python 分析数据。每个函数从默认 S3 URI 加载最新数据。

from smdebug.profiler.analysis.python_profile_analysis import PythonProfileAnalysis, cProfileAnalysis, PyinstrumentAnalysis

要设置 Python 分析对象以进行分析,请使用 cProfileAnalysis 或 PyinstrumentAnalysis 类,如以下示例代码所示。它显示了如何设置 cProfileAnalysis 对象,如果您希望使用 PyinstrumentAnalysis,请替换类名称。

python_analysis = cProfileAnalysis( local_profile_dir=tf_python_stats_dir, s3_path=tj.profiler_s3_output_path )

cProfileAnalysisPyinstrumentAnalysis 类可以使用以下方法来提取 Python 分析统计数据数据:

  • python_analysis.fetch_python_profile_stats_by_time(start_time_since_epoch_in_secs, end_time_since_epoch_in_secs) – 采用开始时间和结束时间,并返回其开始时间或结束时间与提供的间隔重叠的步进统计数据的函数统计数据。

  • python_analysis.fetch_python_profile_stats_by_step(start_step, end_step, mode, start_phase, end_phase) – 执行开始步骤和结束步骤,并返回其分析step满足 的所有步骤统计数据的函数统计数据start_step <= step < end_step

    • start_stepend_step (str) – 指定开始步骤和结束步骤,以提取 Python 分析统计数据。

    • mode (str) 使用–枚举器类PythonProfileModes指定训练作业模式。默认值为 PythonProfileModes.TRAIN。 Python 分析训练模式和阶段部分提供了可用选项。

    • start_phase (str) 使用–枚举器类在目标步骤中StepPhase指定开始阶段。此参数可在不同训练阶段之间启用分析。默认值为 StepPhase.STEP_START。 Python 分析训练模式和阶段部分提供了可用选项。

    • end_phase (str) 使用–枚举器类在目标步骤中StepPhase指定结束阶段。此参数设置训练的结束阶段。可用选项与 start_phase 参数的相同。默认值为 StepPhase.STEP_END。 Python 分析训练模式和阶段部分提供了可用选项。

  • python_analysis.fetch_profile_stats_between_modes(start_mode, end_mode) – 从 Python 分析中获取开始和结束模式之间的统计数据。

  • python_analysis.fetch_pre_step_zero_profile_stats() – 从 Python 分析提取统计数据,直到步骤 0。

  • python_analysis.fetch_post_hook_close_profile_stats() – 关闭挂钩后,从 Python 分析中提取统计数据。

  • python_analysis.list_profile_stats() – 返回 Python 分析统计数据DataFrame的 。每行包含分析的每个实例的元数据和相应的 stats 文件(每个步骤一个)。

  • python_analysis.list_available_node_ids() – 返回 Python IDs 分析统计数据的可用节点的列表。

cProfileAnalysis特定的方法:

  • fetch_profile_stats_by_training_phase() – 提取并聚合每个可能的开始和结束模式组合的 Python 分析统计数据。例如,如果在启用详细分析时完成训练和验证阶段,则组合为 (PRE_STEP_ZERO, TRAIN)(TRAIN, TRAIN)(TRAIN, EVAL)(EVAL, EVAL)(EVAL, POST_HOOK_CLOSE)。 将聚合这些组合中的所有统计数据文件。

  • fetch_profile_stats_by_job_phase() – 按作业阶段提取和聚合 Python 分析统计数据。作业阶段包括 initialization (在步骤 0 之前展开training_loop)、(训练和验证)和 finalization (挂钩关闭后展开)。