本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 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 中。
您可以通过将 DebuggerHookConfig 和 TensorBoardOutputConfig 对象传递到 estimator 来启用此功能。
以下过程解释了如何将标量、权重和偏差保存为可以使用 TensorBoard 可视化的完整张量、直方图和分布。Debugger 将它们保存到训练容器的本地路径(默认路径为 /opt/ml/output/tensors),并同步到通过 Debugger 输出配置对象传递的 Amazon S3 位置。
使用 Debugger 保存与 TensorBoard 兼容的输出张量文件
-
使用 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 TensorBoardOutputConfigAPI。 -
配置 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 CollectionConfig和DebuggerHookConfigAPI。 -
使用传递配置对象的 Debugger 参数构造一个 SageMaker AI 估算器。以下示例模板显示了如何创建通用 SageMaker AI 估算器。您可以使用其他 SageMaker AI 框架的估算器父类和估算器类替换
estimator和Estimator。此功能的可用 SageMaker AI 框架估算器包括TensorFlow、PyTorch以及MXNet。from sagemaker.estimatorimportEstimatorestimator =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()。
-
-
训练完成后,请检查保存的输出张量的名称:
from smdebug.trials import create_trial trial = create_trial(estimator.latest_job_debugger_artifacts_path()) trial.tensor_names() -
在 Amazon S3 中查看 TensorBoard 输出数据:
tensorboard_output_path=estimator.latest_job_tensorboard_artifacts_path() print(tensorboard_output_path) !aws s3 ls {tensorboard_output_path}/ -
将 TensorBoard 输出数据下载到笔记本实例。例如,以下 AWS CLI 命令将 TensorBoard 文件下载到笔记本实例当前工作目录下的
/logs/fit。!aws s3 cp --recursive {tensorboard_output_path}./logs/fit -
将文件目录压缩为 TAR 文件以下载到本地计算机。
!tar -cf logs.tar logs -
将 Tensorboard TAR 文件下载到设备上并解压缩文件,启动 Jupyter 笔记本服务器,打开新的笔记本,然后运行 TensorBoard 应用程序。
!tar -xf logs.tar %load_ext tensorboard %tensorboard --logdir logs/fit
以下动画屏幕截图介绍了步骤 5 至 8。它演示如何下载 Debugger TensorBoard TAR 文件,以及如何将该文件加载到本地设备上的 Jupyter 笔记本中。