在 TensorBoard 中可视化 Amazon SageMaker Debugger 输出张量 - 亚马逊 SageMaker AI

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

在 TensorBoard 中可视化 Amazon SageMaker Debugger 输出张量

重要

本页面已弃用,取而代之的是带有 TensorBoard 的 Amazon SageMaker AI,它提供了全面的 TensorBoard 体验,与 SageMaker Training 和 SageMaker AI 域的访问控制功能集成。要了解更多信息,请参阅Amazon SageMaker AI 中的 TensorBoard

使用 SageMaker Debugger 创建与 TensorBoard 兼容的输出张量文件。加载文件以在 TensorBoard 中可视化并分析您的 SageMaker 训练作业。Debugger 会自动生成与 TensorBoard 兼容的输出张量文件。对于为保存输出张量而自定义的任何钩子配置,Debugger 可以灵活地创建标量摘要、分布和直方图,并可导入到 TensorBoard 中。

Debugger 输出张量保存机制的架构图。

您可以通过将 DebuggerHookConfigTensorBoardOutputConfig 对象传递到 estimator 来启用此功能。

以下过程解释了如何将标量、权重和偏差保存为可以使用 TensorBoard 可视化的完整张量、直方图和分布。Debugger 将它们保存到训练容器的本地路径(默认路径为 /opt/ml/output/tensors),并同步到通过 Debugger 输出配置对象传递的 Amazon S3 位置。

使用 Debugger 保存与 TensorBoard 兼容的输出张量文件
  1. 使用 Debugger TensorBoardOutputConfig 类设置 tensorboard_output_config 配置对象,以保存 TensorBoard 的输出。对于 s3_output_path 参数,指定当前 SageMaker AI 会话的默认 S3 存储桶或首选 S3 存储桶。此示例不会添加 container_local_output_path 参数;相反,它被设置为默认的本地路径 /opt/ml/output/tensors

    import sagemaker from sagemaker.debugger import TensorBoardOutputConfig bucket = sagemaker.Session().default_bucket() tensorboard_output_config = TensorBoardOutputConfig( s3_output_path='s3://{}'.format(bucket) )

    有关更多信息,请参阅 Amazon SageMaker Python SDK 中的 Debugger TensorBoardOutputConfig API。

  2. 配置 Debugger 钩子并自定义挂钩参数值。例如,以下代码将 Debugger 钩子配置为在训练阶段每 100 步保存一次所有标量输出,在验证阶段每 10 步保存一次所有标量输出,每 500 步保存一次 weights 参数(保存张量集合的默认 save_interval 值为 500),每 10 个全局步骤保存一次 bias 参数,直到全局步骤数达到 500。

    from sagemaker.debugger import CollectionConfig, DebuggerHookConfig hook_config = DebuggerHookConfig( hook_parameters={ "train.save_interval": "100", "eval.save_interval": "10" }, collection_configs=[ CollectionConfig("weights"), CollectionConfig( name="biases", parameters={ "save_interval": "10", "end_step": "500", "save_histogram": "True" } ), ] )

    有关 Debugger 配置 API 的更多信息,请参阅 Amazon SageMaker Python SDK 中的 Debugger CollectionConfigDebuggerHookConfig API。

  3. 使用传递配置对象的 Debugger 参数构造一个 SageMaker AI 估算器。以下示例模板显示了如何创建通用 SageMaker AI 估算器。您可以使用其他 SageMaker AI 框架的估算器父类和估算器类替换 estimatorEstimator。此功能的可用 SageMaker AI 框架估算器包括 TensorFlowPyTorch 以及 MXNet

    from sagemaker.estimator import Estimator estimator = Estimator( ... # Debugger parameters debugger_hook_config=hook_config, tensorboard_output_config=tensorboard_output_config ) estimator.fit()

    estimator.fit() 方法启动训练作业,Debugger 将输出张量文件实时写入 Debugger S3 输出路径和 TensorBoard S3 输出路径。要检索输出路径,请使用以下估算器方法:

    • 对于 Debugger S3 输出路径,请使用 estimator.latest_job_debugger_artifacts_path()

    • 对于 TensorBoard S3 输出路径,请使用 estimator.latest_job_tensorboard_artifacts_path()

  4. 训练完成后,请检查保存的输出张量的名称:

    from smdebug.trials import create_trial trial = create_trial(estimator.latest_job_debugger_artifacts_path()) trial.tensor_names()
  5. 在 Amazon S3 中查看 TensorBoard 输出数据:

    tensorboard_output_path=estimator.latest_job_tensorboard_artifacts_path() print(tensorboard_output_path) !aws s3 ls {tensorboard_output_path}/
  6. 将 TensorBoard 输出数据下载到笔记本实例。例如,以下 AWS CLI 命令将 TensorBoard 文件下载到笔记本实例当前工作目录下的 /logs/fit

    !aws s3 cp --recursive {tensorboard_output_path} ./logs/fit
  7. 将文件目录压缩为 TAR 文件以下载到本地计算机。

    !tar -cf logs.tar logs
  8. 将 Tensorboard TAR 文件下载到设备上并解压缩文件,启动 Jupyter 笔记本服务器,打开新的笔记本,然后运行 TensorBoard 应用程序。

    !tar -xf logs.tar %load_ext tensorboard %tensorboard --logdir logs/fit

以下动画屏幕截图介绍了步骤 5 至 8。它演示如何下载 Debugger TensorBoard TAR 文件,以及如何将该文件加载到本地设备上的 Jupyter 笔记本中。

如何在本地计算机上下载和加载 Debugger TensorBoard 文件的动画界面截图。