在 TensorBoard 中可视化Amazon SageMaker 调试程序输出张量 - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

在 TensorBoard 中可视化Amazon SageMaker 调试程序输出张量

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


            调试程序 输出张量保存机制的架构图。

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

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

使用 保存与 TensorBoard 兼容的输出张量文件 调试程序

  1. 设置tensorboard_output_config配置对象以使用 调试程序 TensorBoardOutputConfig 类保存 TensorBoard 输出。对于 s3_output_path 参数,指定当前SageMaker会话的默认 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) )

    有关其他信息,请参阅 中的 调试程序 TensorBoardOutputConfig Amazon SageMaker Python SDKAPI。

  2. 配置调试程序挂钩并自定义挂钩参数值。例如,以下代码将调试程序挂钩配置为在训练阶段每 100 个步骤保存所有标量输出,在验证阶段每 10 个步骤保存所有标量输出,每 500 个步骤保存张量集合weightssave_interval默认值为 500,在全局步骤达到 500 个之前,每 10 个全局步骤保存bias参数。

    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" } ), ] )

    有关调试程序配置 APIs 的更多信息,请参阅 中的 调试程序 CollectionConfigDebuggerHookConfig APIsAmazon SageMaker Python SDK

  3. 使用传递配置对象的SageMaker参数构造调试程序评估程序。以下示例模板演示如何创建通用SageMaker评估程序。您可以将 estimatorEstimator 替换为其他SageMaker框架的评估程序的父类和评估程序类。此功能的可用SageMaker框架评估程序为 TensorFlowPyTorchMXNet

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

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

    • 对于 调试程序 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. 检查 中的 TensorBoard 输出数据Amazon S3:

    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。它演示了如何下载 调试程序 TensorBoard TAR 文件并将该文件加载到本地设备上的 Jupyter 笔记本中。


            显示如何在本地计算机上下载和加载 Debugger TensorBoard 文件的动画屏幕截图。